mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-22 01:00:12 +08:00
libsanitizer: Check assembler support for symbol assignment [PR112563]
The recent libsanitizer import broke the build on Solaris/SPARC with the native as: /usr/ccs/bin/as: ".libs/sanitizer_errno.s", line 4247: error: symbol "__sanitizer_internal_memset" is used but not defined /usr/ccs/bin/as: ".libs/sanitizer_errno.s", line 4247: error: symbol "__sanitizer_internal_memcpy" is used but not defined /usr/ccs/bin/as: ".libs/sanitizer_errno.s", line 4247: error: symbol "__sanitizer_internal_memmove" is used but not defined Since none of the alternatives considered in the PR worked out, this patch checks if the assembler does support symbol assignment, disabling the code otherwise. This returns the code to the way it was up to LLVM 16. Bootstrapped without regressions on sparc-sun-solaris2.11 (as and gas) and i386-pc-solaris2.11 (as and gas). 2023-11-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> libsanitizer: PR sanitizer/112563 * configure.ac (libsanitizer_cv_as_sym_assign): Check for assembler symbol assignment support. * configure: Regenerate. * asan/Makefile.am (DEFS): Add @AS_SYM_ASSIGN_DEFS@. * Makefile.in, asan/Makefile.in, hwasan/Makefile.in, interception/Makefile.in, libbacktrace/Makefile.in, lsan/Makefile.in, sanitizer_common/Makefile.in, tsan/Makefile.in, ubsan/Makefile.in: Regenerate.
This commit is contained in:
parent
099b15e2bd
commit
088d3cbc5f
@ -214,6 +214,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
@ -3,7 +3,7 @@ AM_CPPFLAGS = -I $(top_srcdir)/include -I $(top_srcdir)
|
||||
# May be used by toolexeclibdir.
|
||||
gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER)
|
||||
|
||||
DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DASAN_HAS_EXCEPTIONS=1 -DASAN_NEEDS_SEGV=1 -DCAN_SANITIZE_UB=0 -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0
|
||||
DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DASAN_HAS_EXCEPTIONS=1 -DASAN_NEEDS_SEGV=1 -DCAN_SANITIZE_UB=0 -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0 @AS_SYM_ASSIGN_DEFS@
|
||||
if USING_MAC_INTERPOSE
|
||||
DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT
|
||||
endif
|
||||
|
@ -264,6 +264,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
@ -288,7 +289,7 @@ DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS \
|
||||
-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS \
|
||||
-DASAN_HAS_EXCEPTIONS=1 -DASAN_NEEDS_SEGV=1 \
|
||||
-DCAN_SANITIZE_UB=0 -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0 \
|
||||
$(am__append_1)
|
||||
@AS_SYM_ASSIGN_DEFS@ $(am__append_1)
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
|
37
libsanitizer/configure
vendored
37
libsanitizer/configure
vendored
@ -651,6 +651,7 @@ ALLOC_FILE
|
||||
VIEW_FILE
|
||||
BACKTRACE_SUPPORTED
|
||||
FORMAT_FILE
|
||||
AS_SYM_ASSIGN_DEFS
|
||||
SANITIZER_SUPPORTED_FALSE
|
||||
SANITIZER_SUPPORTED_TRUE
|
||||
USING_MAC_INTERPOSE_FALSE
|
||||
@ -12474,7 +12475,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 12477 "configure"
|
||||
#line 12478 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -12580,7 +12581,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 12583 "configure"
|
||||
#line 12584 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -16333,6 +16334,38 @@ $as_echo "#define HAVE_ATOMIC_FUNCTIONS 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
# Check if assembler supports symbol assignment.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler symbol assignment" >&5
|
||||
$as_echo_n "checking assembler symbol assignment... " >&6; }
|
||||
if ${libsanitizer_cv_as_sym_assign+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
asm("a = b");
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
libsanitizer_cv_as_sym_assign=yes
|
||||
else
|
||||
libsanitizer_cv_as_sym_assign=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libsanitizer_cv_as_sym_assign" >&5
|
||||
$as_echo "$libsanitizer_cv_as_sym_assign" >&6; }
|
||||
if test "$libsanitizer_cv_as_sym_assign" = "yes"; then
|
||||
as_sym_assign_defs=-DHAVE_AS_SYM_ASSIGN=1
|
||||
fi
|
||||
AS_SYM_ASSIGN_DEFS=$as_sym_assign_defs
|
||||
|
||||
|
||||
# The library needs to be able to read the executable itself. Compile
|
||||
# a file to determine the executable format. The awk script
|
||||
# filetype.awk prints out the file type.
|
||||
|
@ -214,6 +214,19 @@ if test "$libsanitizer_cv_sys_atomic" = "yes"; then
|
||||
[Define to 1 if you have the __atomic functions])
|
||||
fi
|
||||
|
||||
# Check if assembler supports symbol assignment.
|
||||
AC_CACHE_CHECK([assembler symbol assignment],
|
||||
[libsanitizer_cv_as_sym_assign],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([],
|
||||
[asm("a = b");])],
|
||||
[libsanitizer_cv_as_sym_assign=yes],
|
||||
[libsanitizer_cv_as_sym_assign=no])])
|
||||
if test "$libsanitizer_cv_as_sym_assign" = "yes"; then
|
||||
as_sym_assign_defs=-DHAVE_AS_SYM_ASSIGN=1
|
||||
fi
|
||||
AC_SUBST(AS_SYM_ASSIGN_DEFS, [$as_sym_assign_defs])
|
||||
|
||||
# The library needs to be able to read the executable itself. Compile
|
||||
# a file to determine the executable format. The awk script
|
||||
# filetype.awk prints out the file type.
|
||||
|
@ -260,6 +260,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
@ -186,6 +186,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
@ -236,6 +236,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
@ -231,6 +231,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
@ -224,6 +224,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
@ -260,6 +260,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
@ -225,6 +225,7 @@ ALLOC_FILE = @ALLOC_FILE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AS_SYM_ASSIGN_DEFS = @AS_SYM_ASSIGN_DEFS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
|
Loading…
Reference in New Issue
Block a user