]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: tools: do not attempt to use backtrace() on linux without glibc
authorWilly Tarreau <w@1wt.eu>
Sun, 29 Sep 2024 07:46:10 +0000 (09:46 +0200)
committerWilly Tarreau <w@1wt.eu>
Sun, 29 Sep 2024 07:52:23 +0000 (09:52 +0200)
The function is provided by glibc. Nothing prevents us from using our
own outside of glibc there (tested on aarch64 with musl). We still do
not enable it by default as we don't yet know if all archs work well,
but it's sufficient to pass USE_BACKTRACE=1 when building with musl to
verify it's OK.

include/haproxy/compat.h

index 68474fe8e8d2e67ad359484bec5f502e11561380..93df3d9ff0099b295b98127e4cf4c270c36cf57c 100644 (file)
@@ -240,7 +240,11 @@ typedef struct { } empty_t;
  * than ours.
  */
 #ifdef USE_BACKTRACE
-#if defined(__aarch64__)
+#if defined(__linux__) && !defined(__GNU_LIBRARY__)
+/* On Linux, backtrace() is only available in glibc. Others will need the
+ * in-house implementation.
+ */
+#elif defined(__aarch64__)
 /* on aarch64 at least from gcc-4.7.4 to 7.4.1 we only get a single entry, which
  * is pointless. Ours works though it misses the faulty function itself,
  * probably due to an alternate stack for the signal handler which does not