breakpad/breakpad-20171017git-gcc-10.2.0.patch

66 lines
3.2 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff --git a/package/google-breakpad/0003-src-client-linux-handler-exception_handler.cc-rename.patch b/package/google-breakpad/0003-src-client-linux-handler-exception_handler.cc-rename.patch
new file mode 100644
index 0000000000..579e7f3457
--- /dev/null
+++ b/package/google-breakpad/0003-src-client-linux-handler-exception_handler.cc-rename.patch
@@ -0,0 +1,59 @@
+From 2fa414c8655c421e7eb0bb1719928babb0ecf7c6 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Date: Thu, 26 Dec 2019 22:21:33 +0100
+Subject: [PATCH] src/client/linux/handler/exception_handler.cc: rename tgkill
+ to BreakpadTgkill()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Since glibc 2.30, a tgkill() function was added in the C library, and
+its definition obviously conflicts with the internal definition of
+google-breakpad, causing build failures:
+
+src/client/linux/handler/exception_handler.cc:109:12: error: int tgkill(pid_t, pid_t, int) was declared extern and later static [-fpermissive]
+ 109 | static int tgkill(pid_t tgid, pid_t tid, int sig) {
+ | ^~~~~~
+In file included from /usr/include/signal.h:374,
+ from ./src/client/linux/handler/exception_handler.h:33,
+ from src/client/linux/handler/exception_handler.cc:66:
+/usr/include/bits/signal_ext.h:29:12: note: previous declaration of int tgkill(__pid_t, __pid_t, int)
+ 29 | extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal);
+ | ^~~~~~
+
+Upstream google-breakpad simply dropped the use of the internal
+tgkill() in commit
+https://chromium.googlesource.com/breakpad/breakpad/+/7e3c165000d44fa153a3270870ed500bc8bbb461. However,
+this is not realistic for Buildroot, since we do support old systems
+where the system C library will not necessarily provide tgkill().
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+---
+ src/client/linux/handler/exception_handler.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc
+index b63f973b..b4c279b8 100644
+--- a/src/client/linux/handler/exception_handler.cc
++++ b/src/client/linux/handler/exception_handler.cc
+@@ -106,7 +106,7 @@
+ #endif
+
+ // A wrapper for the tgkill syscall: send a signal to a specific thread.
+-static int tgkill(pid_t tgid, pid_t tid, int sig) {
++static int BreakpadTgkill(pid_t tgid, pid_t tid, int sig) {
+ return syscall(__NR_tgkill, tgid, tid, sig);
+ return 0;
+ }
+@@ -387,7 +387,7 @@ void ExceptionHandler::SignalHandler(int sig, siginfo_t* info, void* uc) {
+ // In order to retrigger it, we have to queue a new signal by calling
+ // kill() ourselves. The special case (si_pid == 0 && sig == SIGABRT) is
+ // due to the kernel sending a SIGABRT from a user request via SysRQ.
+- if (tgkill(getpid(), syscall(__NR_gettid), sig) < 0) {
++ if (BreakpadTgkill(getpid(), syscall(__NR_gettid), sig) < 0) {
+ // If we failed to kill ourselves (e.g. because a sandbox disallows us
+ // to do so), we instead resort to terminating our process. This will
+ // result in an incorrect exit code.
+--
+2.24.1
+