office-gobmx/external/breakpad/0001-Fix-double-declaration-of-tgkill-when-using-Android-.patch.1
Stephan Bergmann 55556a4ceb external/breakpad: glibc 2.30 declares tgkill
...so building against glibc-headers-2.30-4.fc31.x86_64 fails with

> src/client/linux/handler/exception_handler.cc:109:12: error: static declaration of 'tgkill' follows non-static declaration
> static int tgkill(pid_t tgid, pid_t tid, int sig) {
>            ^
> /usr/include/bits/signal_ext.h:29:12: note: previous declaration is here
> extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal);
>            ^
> 1 error generated.

Upstream commit <https://chromium.googlesource.com/breakpad/breakpad/+/
7e3c165000d44fa153a3270870ed500bc8bbb461%5E%21/> "Fix double declaration of
tgkill when using Android NDK Headers" looks like the perfect fit.

Change-Id: I1b4805886fb7c770cf9733f34a31296e6b859d92
Reviewed-on: https://gerrit.libreoffice.org/79661
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-09-27 07:09:37 +02:00

49 lines
2 KiB
Groff

From 7e3c165000d44fa153a3270870ed500bc8bbb461 Mon Sep 17 00:00:00 2001
From: Nicholas Baldwin <baldwinn@google.com>
Date: Fri, 27 Oct 2017 11:44:36 -0700
Subject: [PATCH] Fix double declaration of tgkill when using Android NDK
Headers.
As of Android API level 16 tgkill is declared in the NDK version of
signal.h, which conflicts with the static definition found in
src/client/linux/handler/exception_handler.cc. This change removes
the static tgkill definition and replaces its use with sys_tgkill
from the linux syscall support library.
Bug:
Change-Id: Ic70addd8a064cfa36345d86b7e36409e2089e909
Reviewed-on: https://chromium-review.googlesource.com/738912
Reviewed-by: Mike Frysinger <vapier@chromium.org>
---
src/client/linux/handler/exception_handler.cc | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc
index 95005209..cd94e3b5 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 @@ 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 (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.
--
2.23.0