diff --git a/libsanitizer/Makefile.in b/libsanitizer/Makefile.in index 65e7f2e9553..f11219cae84 100644 --- a/libsanitizer/Makefile.in +++ b/libsanitizer/Makefile.in @@ -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@ diff --git a/libsanitizer/asan/Makefile.am b/libsanitizer/asan/Makefile.am index 223d3e07816..6af250e99d9 100644 --- a/libsanitizer/asan/Makefile.am +++ b/libsanitizer/asan/Makefile.am @@ -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 diff --git a/libsanitizer/asan/Makefile.in b/libsanitizer/asan/Makefile.in index e88e5e0b0a7..ac72e13830f 100644 --- a/libsanitizer/asan/Makefile.in +++ b/libsanitizer/asan/Makefile.in @@ -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@ diff --git a/libsanitizer/configure b/libsanitizer/configure index 2edd5c37ce7..6bfd28916d2 100755 --- a/libsanitizer/configure +++ b/libsanitizer/configure @@ -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. diff --git a/libsanitizer/configure.ac b/libsanitizer/configure.ac index 5906c8d4887..8037c941774 100644 --- a/libsanitizer/configure.ac +++ b/libsanitizer/configure.ac @@ -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. diff --git a/libsanitizer/hwasan/Makefile.in b/libsanitizer/hwasan/Makefile.in index 87971fd3374..4420bd6a7a9 100644 --- a/libsanitizer/hwasan/Makefile.in +++ b/libsanitizer/hwasan/Makefile.in @@ -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@ diff --git a/libsanitizer/interception/Makefile.in b/libsanitizer/interception/Makefile.in index 85dd386de47..2d807c98d3b 100644 --- a/libsanitizer/interception/Makefile.in +++ b/libsanitizer/interception/Makefile.in @@ -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@ diff --git a/libsanitizer/libbacktrace/Makefile.in b/libsanitizer/libbacktrace/Makefile.in index c0243fa4aab..33faa78bb43 100644 --- a/libsanitizer/libbacktrace/Makefile.in +++ b/libsanitizer/libbacktrace/Makefile.in @@ -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@ diff --git a/libsanitizer/lsan/Makefile.in b/libsanitizer/lsan/Makefile.in index 078edf01fda..0870f9e7136 100644 --- a/libsanitizer/lsan/Makefile.in +++ b/libsanitizer/lsan/Makefile.in @@ -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@ diff --git a/libsanitizer/sanitizer_common/Makefile.in b/libsanitizer/sanitizer_common/Makefile.in index 881df60331b..45141930f9f 100644 --- a/libsanitizer/sanitizer_common/Makefile.in +++ b/libsanitizer/sanitizer_common/Makefile.in @@ -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@ diff --git a/libsanitizer/tsan/Makefile.in b/libsanitizer/tsan/Makefile.in index fc14a42c082..5cc6f95a40a 100644 --- a/libsanitizer/tsan/Makefile.in +++ b/libsanitizer/tsan/Makefile.in @@ -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@ diff --git a/libsanitizer/ubsan/Makefile.in b/libsanitizer/ubsan/Makefile.in index 7e51480e970..717d1571556 100644 --- a/libsanitizer/ubsan/Makefile.in +++ b/libsanitizer/ubsan/Makefile.in @@ -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@