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. 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
