]> Savannah Git Hosting - gnulib.git/commitdiff
stack-trace: Don't use libasan by default.
authorBruno Haible <bruno@clisp.org>
Sat, 20 Jul 2024 23:19:01 +0000 (01:19 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 20 Jul 2024 23:19:01 +0000 (01:19 +0200)
* m4/stack-trace.m4 (gl_STACK_TRACE_EARLY): Remove libasan as second
choice.

ChangeLog
m4/stack-trace.m4

index 2fecfed6d578b268e4b31c3069024e1196f297ec..954ccf98de8aad9dc27cabaacda0dc0428ec4420 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2024-07-20  Bruno Haible  <bruno@clisp.org>
+
+       stack-trace: Don't use libasan by default.
+       * m4/stack-trace.m4 (gl_STACK_TRACE_EARLY): Remove libasan as second
+       choice.
+
 2024-07-20  Bruno Haible  <bruno@clisp.org>
 
        doc: Sort the ISO C and POSIX Function Substitutes by header file.
index faf86eefe97dd7abb9c9e598859c86ba1cfe6a01..43f6ef2abf1ef7b1eadb306265c1ef0532c9b78d 100644 (file)
@@ -1,5 +1,5 @@
 # stack-trace.m4
-# serial 2
+# serial 3
 dnl Copyright (C) 2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -22,7 +22,6 @@ AC_DEFUN([gl_STACK_TRACE_EARLY],
   AC_MSG_RESULT([$enable_debug])
 
   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
-  AC_REQUIRE([AC_CANONICAL_HOST])
   if test $enable_debug = yes; then
     dnl The first choice is libbacktrace by Ian Lance Taylor.
     dnl Maintained at https://github.com/ianlancetaylor/libbacktrace,
@@ -49,71 +48,25 @@ AC_DEFUN([gl_STACK_TRACE_EARLY],
       CAN_PRINT_STACK_TRACE=1
       LIBS="$LIBS -lbacktrace"
     else
-      dnl The second choice is GCC's libasan, installed as part of GCC.
-      dnl It produces source file names and line numbers, if the binary
-      dnl is compiled with debug information.
-      AC_CACHE_CHECK([for libasan], [gl_cv_lib_asan], [
-        gl_saved_LIBS="$LIBS"
-        LIBS="$gl_saved_LIBS -lasan"
-        dnl We need AC_RUN_IFELSE here, not merely AC_LINK_IFELSE, because on
-        dnl NetBSD libasan exists but every program that links to it immediately
-        dnl prints "This sanitizer is not compatible with enabled ASLR" to
-        dnl standard error and exits with code 0, without even invoking main().
-        AC_RUN_IFELSE(
-          [AC_LANG_PROGRAM(
-             [[#include <stdio.h>
-               extern
-               #ifdef __cplusplus
-               "C"
-               #endif
-               void __sanitizer_print_stack_trace (void);
-             ]],
-             [[remove ("conftest.c");
-               __sanitizer_print_stack_trace ();
-             ]])],
-          [if test -f conftest.c; then
-             dnl main() was not reached. NetBSD!
-             gl_cv_lib_asan=no
-           else
-             gl_cv_lib_asan=yes
-           fi
-          ],
-          [gl_cv_lib_asan=no],
-          [case "$host_os" in
-             netbsd*) gl_cv_lib_asan="guessing no" ;;
-             *)       gl_cv_lib_asan="guessing yes" ;;
-           esac
-          ])
-        LIBS="$gl_saved_LIBS"
-      ])
-      case "$gl_cv_lib_asan" in
-        *yes)
-          AC_DEFINE([HAVE_LIBASAN], [1],
-            [Define if you have the libasan library.])
+      dnl The second choice is libexecinfo.
+      dnl It does not produce source file names and line numbers, only addresses
+      dnl (which are mostly useless due to ASLR) and _sometimes_ function names.
+      AC_REQUIRE([AC_CANONICAL_HOST])
+      case "$host_os" in
+        *-gnu* | gnu* | darwin* | freebsd* | dragonfly* | netbsd* | openbsd* | solaris*)
+          dnl execinfo might be implemented on this platform.
           CAN_PRINT_STACK_TRACE=1
-          LIBS="$LIBS -lasan"
-          ;;
-        *)
-          dnl The third choice is libexecinfo.
-          dnl It does not produce source file names and line numbers, only addresses
-          dnl (which are mostly useless due to ASLR) and _sometimes_ function names.
+          dnl On *BSD system, link all programs with -lexecinfo. Cf. m4/execinfo.m4.
+          case "$host_os" in
+            freebsd* | dragonfly* | netbsd* | openbsd*)
+              LIBS="$LIBS -lexecinfo"
+              ;;
+          esac
+          dnl Link all programs in such a way that the stack trace includes the
+          dnl function names. '-rdynamic' is equivalent to '-Wl,-export-dynamic'.
           case "$host_os" in
-            *-gnu* | gnu* | darwin* | freebsd* | dragonfly* | netbsd* | openbsd* | solaris*)
-              dnl execinfo might be implemented on this platform.
-              CAN_PRINT_STACK_TRACE=1
-              dnl On *BSD system, link all programs with -lexecinfo. Cf. m4/execinfo.m4.
-              case "$host_os" in
-                freebsd* | dragonfly* | netbsd* | openbsd*)
-                  LIBS="$LIBS -lexecinfo"
-                  ;;
-              esac
-              dnl Link all programs in such a way that the stack trace includes the
-              dnl function names. '-rdynamic' is equivalent to '-Wl,-export-dynamic'.
-              case "$host_os" in
-                *-gnu* | gnu* | openbsd*)
-                  LDFLAGS="$LDFLAGS -rdynamic"
-                  ;;
-              esac
+            *-gnu* | gnu* | openbsd*)
+              LDFLAGS="$LDFLAGS -rdynamic"
               ;;
           esac
           ;;