added patches to fix build with recent tools [release 20171017git-2mamba;Tue Mar 16 2021]

This commit is contained in:
Silvan Calarco 2024-01-05 20:55:28 +01:00
parent 8f57129242
commit a815c68b8e
3 changed files with 102 additions and 3 deletions

View File

@ -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 <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
+

View File

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

View File

@ -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 <silvan.calarco@mambasoft.it>
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 <silvan.calarco@mambasoft.it> 20171017git-2mamba
- added patches to fix build with recent tools
* Mon Oct 30 2017 Silvan Calarco <silvan.calarco@mambasoft.it> 20171017git-1mamba
- update to 20171017