[oe] [meta-oe][PATCH] breakpad: disable calls to getcontext() with musl
Khem Raj
raj.khem at gmail.com
Thu Jan 25 07:49:06 UTC 2018
On Wed, Jan 24, 2018 at 3:26 PM, Andre McCurdy <armccurdy at gmail.com> wrote:
> Musl does not currently provide getcontext().
>
perhaps its better to declare breakpad incompatible with musl instead
since if it builds it will raise the hopes of users to work well at runtime
which it wont.
> Signed-off-by: Andre McCurdy <armccurdy at gmail.com>
> ---
> ...001-disable-calls-to-getcontext-with-musl.patch | 52 ++++++++++++++++++++++
> meta-oe/recipes-devtools/breakpad/breakpad_git.bb | 1 +
> 2 files changed, 53 insertions(+)
> create mode 100644 meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
>
> diff --git a/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch b/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
> new file mode 100644
> index 0000000..c762754
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/breakpad/breakpad/0001-disable-calls-to-getcontext-with-musl.patch
> @@ -0,0 +1,52 @@
> +From 57ecf7205feedd23f901e1bb9d193787e559e433 Mon Sep 17 00:00:00 2001
> +From: Andre McCurdy <armccurdy at gmail.com>
> +Date: Tue, 23 Jan 2018 15:13:26 -0800
> +Subject: [PATCH] disable calls to getcontext() with musl
> +
> +Signed-off-by: Andre McCurdy <armccurdy at gmail.com>
> +---
> + src/client/linux/handler/exception_handler.cc | 17 +++++++++++++++++
> + 1 file changed, 17 insertions(+)
> +
> +diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc
> +index cca023f..f3e460c 100644
> +--- a/src/client/linux/handler/exception_handler.cc
> ++++ b/src/client/linux/handler/exception_handler.cc
> +@@ -495,7 +495,19 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) {
> + siginfo.si_code = SI_USER;
> + siginfo.si_pid = getpid();
> + ucontext_t context;
> ++#if defined(__GLIBC__)
> + getcontext(&context);
> ++#else
> ++ // Extreme hack: Allow musl builds to compile - but don't expect them to work.
> ++ // Although musl provides a definition for getcontext() in ucontext.h (which
> ++ // enough to build libbreakpad_client) musl does not provide a corresponding
> ++ // getcontext() function, so builds will fail when attempting to link anything
> ++ // with libbreakpad_client. Disabling calls to getcontext() is a temporary
> ++ // hack. The real fix is probably to enable Breakpad's own implementation of
> ++ // getcontext() when building for musl (it's currently only enabled when
> ++ // building for Android).
> ++ memset (&context, 0, sizeof(context));
> ++#endif
> + return HandleSignal(sig, &siginfo, &context);
> + }
> +
> +@@ -680,9 +692,14 @@ bool ExceptionHandler::WriteMinidump() {
> + sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
> +
> + CrashContext context;
> ++#if defined(__GLIBC__)
> + int getcontext_result = getcontext(&context.context);
> + if (getcontext_result)
> + return false;
> ++#else
> ++ // Extreme hack - see comments above.
> ++ memset (&context.context, 0, sizeof(&context.context));
> ++#endif
> +
> + #if defined(__i386__)
> + // In CPUFillFromUContext in minidumpwriter.cc the stack pointer is retrieved
> +--
> +1.9.1
> +
> diff --git a/meta-oe/recipes-devtools/breakpad/breakpad_git.bb b/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
> index 5f6d82c..d9773c9 100644
> --- a/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
> +++ b/meta-oe/recipes-devtools/breakpad/breakpad_git.bb
> @@ -41,6 +41,7 @@ SRC_URI = "git://github.com/google/breakpad;name=breakpad \
> file://0005-md2core-Replace-basename.patch \
> file://0002-Use-_fpstate-instead-of-_libc_fpstate-on-linux.patch \
> file://mcontext.patch \
> + file://0001-disable-calls-to-getcontext-with-musl.patch \
> file://0001-lss-Match-syscalls-to-match-musl.patch;patchdir=src/third_party/lss \
> file://mips_asm_sgidefs.patch;patchdir=src/third_party/lss \
> "
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
More information about the Openembedded-devel
mailing list