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