On 1/25/18 2:11 AM, Andre McCurdy wrote: > On Wed, Jan 24, 2018 at 11:49 PM, Khem Raj <[email protected]> wrote: >> On Wed, Jan 24, 2018 at 3:26 PM, Andre McCurdy <[email protected]> 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. > > I'm using a distro which unconditionally enables breakpad and it would > take some surgery to disable it. Unfortunately the distro maintainers > are generally slow and unresponsive to patches so there's a good > chance I'd end up carrying the changes to disable breakpad in my own > tree.
perhaps that surgery is better IMO. Since when it comes time to support breakpad on musl someone will not just say "it works" which is far worse then a build break > > At least for me, it's better to have a breakpad which builds but > doesn't work rather than not building at all. > >>> Signed-off-by: Andre McCurdy <[email protected]> >>> --- >>> ...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 <[email protected]> >>> +Date: Tue, 23 Jan 2018 15:13:26 -0800 >>> +Subject: [PATCH] disable calls to getcontext() with musl >>> + >>> +Signed-off-by: Andre McCurdy <[email protected]> >>> +--- >>> + 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 >>> [email protected] >>> http://lists.openembedded.org/mailman/listinfo/openembedded-devel -- _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-devel
