mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-11 16:59:59 +00:00
breakpad: disable calls to getcontext() with musl
Musl does not currently provide getcontext(). Signed-off-by: Andre McCurdy <armccurdy@gmail.com> Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
committed by
Armin Kuster
parent
cadc1dd991
commit
46bfecb776
+52
@@ -0,0 +1,52 @@
|
|||||||
|
From 57ecf7205feedd23f901e1bb9d193787e559e433 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andre McCurdy <armccurdy@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@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
|
||||||
|
|
||||||
@@ -41,6 +41,7 @@ SRC_URI = "git://github.com/google/breakpad;name=breakpad \
|
|||||||
file://0005-md2core-Replace-basename.patch \
|
file://0005-md2core-Replace-basename.patch \
|
||||||
file://0002-Use-_fpstate-instead-of-_libc_fpstate-on-linux.patch \
|
file://0002-Use-_fpstate-instead-of-_libc_fpstate-on-linux.patch \
|
||||||
file://mcontext.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://0001-lss-Match-syscalls-to-match-musl.patch;patchdir=src/third_party/lss \
|
||||||
file://mips_asm_sgidefs.patch;patchdir=src/third_party/lss \
|
file://mips_asm_sgidefs.patch;patchdir=src/third_party/lss \
|
||||||
"
|
"
|
||||||
|
|||||||
Reference in New Issue
Block a user