From 46da68c01bbfd486a1bbd9d80a29d90c138a1466 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sun, 26 Sep 2021 10:35:01 +0200 Subject: [PATCH] package/google-breakpad: fix build with glibc >= 2.33 Fix the following build failure with glibc >= 2.33: src/client/linux/handler/exception_handler.cc: In function 'void google_breakpad::{anonymous}::InstallAlternateStackLocked()': src/client/linux/handler/exception_handler.cc:147:49: error: no matching function for call to 'max(int, long int)' 147 | static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ); | ~~~~~~~~^~~~~~~~~~~~~~~~~ Fixes: - http://autobuild.buildroot.org/results/61a89fa954db16a7b5b9fcee55c545e489f8d489 Signed-off-by: Fabrice Fontaine (cherry picked from commit 53495c204b84675f5f4b2bd255bfeb1cbcb100e9) Signed-off-by: Peter Korsgaard --- .../0004-Fix-for-non-constant-SIGSTKSZ.patch | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 package/google-breakpad/0004-Fix-for-non-constant-SIGSTKSZ.patch diff --git a/package/google-breakpad/0004-Fix-for-non-constant-SIGSTKSZ.patch b/package/google-breakpad/0004-Fix-for-non-constant-SIGSTKSZ.patch new file mode 100644 index 0000000000..4291216c61 --- /dev/null +++ b/package/google-breakpad/0004-Fix-for-non-constant-SIGSTKSZ.patch @@ -0,0 +1,34 @@ +From 4a332d01186b09a9d46390b845024d914d9149cb Mon Sep 17 00:00:00 2001 +From: Michel Alexandre Salim +Date: Sun, 21 Mar 2021 13:17:00 -0700 +Subject: [PATCH] Fix for non-constant SIGSTKSZ + +On glibc > 2.33, `SIGSTKSZ` might not be constant (in which case +it expands to a call to `sysconf` which returns a `long int`); see +http://sourceware-org.1504.n7.nabble.com/PATCH-sysconf-Add-SC-MINSIGSTKSZ-SC-SIGSTKSZ-BZ-20305-td650948.html + +Cast the two arguments to `max` to `unsigned`, which is the type of the variable +we're storing the result in anyway, so that it works both with the old-style constant +`SIGSTKSZ` and the new configurable one. + +Signed-off-by: Michel Alexandre Salim +Change-Id: I3d87048561a87c6b9fcdbb14b3d53dd45b0a00f0 + +[Retrieved from: +https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2776379] +Signed-off-by: Fabrice Fontaine +--- + +diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc +index ca353c4..3788829 100644 +--- a/src/client/linux/handler/exception_handler.cc ++++ b/src/client/linux/handler/exception_handler.cc +@@ -138,7 +138,7 @@ + // SIGSTKSZ may be too small to prevent the signal handlers from overrunning + // the alternative stack. Ensure that the size of the alternative stack is + // large enough. +- static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ); ++ static const unsigned kSigStackSize = std::max((unsigned) 16384, (unsigned) SIGSTKSZ); + + // Only set an alternative stack if there isn't already one, or if the current + // one is too small.