From a815c68b8e9de177737abbfcedbbe3d02416db35 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Fri, 5 Jan 2024 20:55:28 +0100 Subject: [PATCH] added patches to fix build with recent tools [release 20171017git-2mamba;Tue Mar 16 2021] --- breakpad-20171017git-gcc-10.2.0.patch | 65 +++++++++++++++++++++++++++ breakpad-20171017git-glibc-2.30.patch | 27 +++++++++++ breakpad.spec | 13 ++++-- 3 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 breakpad-20171017git-gcc-10.2.0.patch create mode 100644 breakpad-20171017git-glibc-2.30.patch diff --git a/breakpad-20171017git-gcc-10.2.0.patch b/breakpad-20171017git-gcc-10.2.0.patch new file mode 100644 index 0000000..8939351 --- /dev/null +++ b/breakpad-20171017git-gcc-10.2.0.patch @@ -0,0 +1,65 @@ +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 ++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 ++--- ++ 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 ++ diff --git a/breakpad-20171017git-glibc-2.30.patch b/breakpad-20171017git-glibc-2.30.patch new file mode 100644 index 0000000..c351a85 --- /dev/null +++ b/breakpad-20171017git-glibc-2.30.patch @@ -0,0 +1,27 @@ +diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc +index 9500520..cd94e3b 100644 +--- a/src/client/linux/handler/exception_handler.cc ++++ b/src/client/linux/handler/exception_handler.cc + +@@ -105,12 +105,6 @@ + #define PR_SET_PTRACER 0x59616d61 + #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) { +- return syscall(__NR_tgkill, tgid, tid, sig); +- return 0; +-} +- + namespace google_breakpad { + + namespace { +@@ -400,7 +394,7 @@ + // 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 (sys_tgkill(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. diff --git a/breakpad.spec b/breakpad.spec index 0d69d90..cb2ef62 100644 --- a/breakpad.spec +++ b/breakpad.spec @@ -1,21 +1,21 @@ Name: breakpad Version: 20171017git -Release: 1mamba +Release: 2mamba Summary: A set of client and server components which implement a crash-reporting system Group: System/Tools Vendor: openmamba Distribution: openmamba Packager: Silvan Calarco URL: https://chromium.googlesource.com/breakpad/breakpad -## GITSOURCE https://chromium.googlesource.com/breakpad/breakpad.git master Source: https://chromium.googlesource.com/breakpad/breakpad.git/master/breakpad-%{version}.tar.bz2 +Patch0: breakpad-20171017git-gcc-10.2.0.patch +Patch1: breakpad-20171017git-glibc-2.30.patch License: BSD ## AUTOBUILDREQ-BEGIN BuildRequires: glibc-devel BuildRequires: libgcc BuildRequires: libstdc++6-devel ## AUTOBUILDREQ-END -BuildRoot: %{_tmppath}/%{name}-%{version}-root %description Breakpad is a set of client and server components which implement a crash-reporting system. @@ -42,6 +42,8 @@ This package contains libraries and header files for developing applications tha %setup -q git clone https://chromium.googlesource.com/linux-syscall-support breakpad-lss ln -s ../../breakpad-lss src/third_party/lss +%patch0 -p1 +%patch1 -p1 %build %configure @@ -58,7 +60,9 @@ ln -s ../../breakpad-lss src/third_party/lss %defattr(-,root,root) %{_bindir}/core2md %{_bindir}/dump_syms +%ifarch x86_64 %{ix86} %{_bindir}/dump_syms_mac +%endif %{_bindir}/microdump_stackwalk %{_bindir}/minidump-2-core %{_bindir}/minidump_dump @@ -79,6 +83,9 @@ ln -s ../../breakpad-lss src/third_party/lss %doc README.ANDROID README.md %changelog +* Tue Mar 16 2021 Silvan Calarco 20171017git-2mamba +- added patches to fix build with recent tools + * Mon Oct 30 2017 Silvan Calarco 20171017git-1mamba - update to 20171017