Hi Jakub, >>> But will they accept a patch to check a macro never set anywhere in and >>> irrelevant to LLVM? That's why I kept all in one patch, to be GCC-local. >> >> I meant the patch would be gcc local. >> But, for later we need only the changes to the imported files be in one >> commit, not others, because merge.sh will not revert the GCC owned changes, >> just the imported ones, and so that is what should be reapplied. >> And, the preference of not using config.h is because we do it like that >> for other stuff already (exactly to minimize amount of local changes). > > ah, now I get it. Will rework the patch accordingly.
here are both patches. Bootstrapped on sparc-sun-solaris2.11 (as and gas) and i386-pc-solaris2.11 (as and gas). Ok for trunk? Thanks. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2023-11-23 Rainer Orth <r...@cebitec.uni-bielefeld.de> libsanitizer: PR libsanitizer/112563 * configure.ac (libsanitizer_cv_as_sym_assign): Check for assembler symbol assignment support. * configure, config.h.in: 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. libsanitizer: PR libsanitizer/112563 * sanitizer_common/sanitizer_redefine_builtins.h: Check HAVE_AS_SYM_ASSIGN.
# HG changeset patch # Parent 1f757467f1bed35373c55b65cde4f9b0506172f5 libsanitizer: Check assembler support for symbol assignment [PR112563] diff --git a/libsanitizer/asan/Makefile.am b/libsanitizer/asan/Makefile.am --- a/libsanitizer/asan/Makefile.am +++ b/libsanitizer/asan/Makefile.am @@ -3,7 +3,7 @@ AM_CPPFLAGS = -I $(top_srcdir)/include - # 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/configure.ac b/libsanitizer/configure.ac --- a/libsanitizer/configure.ac +++ b/libsanitizer/configure.ac @@ -214,6 +214,19 @@ if test "$libsanitizer_cv_sys_atomic" = [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.
# HG changeset patch # Parent 60ba51b7bcf476549e3d8165b7c90ec0a3cf0979 libsanitizer: Require assembler support for sanitizer_redefine_builtins.h [PR112563] diff --git a/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h b/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h --- a/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h +++ b/libsanitizer/sanitizer_common/sanitizer_redefine_builtins.h @@ -15,7 +15,7 @@ # define SANITIZER_REDEFINE_BUILTINS_H // The asm hack only works with GCC and Clang. -# if !defined(_WIN32) +# if !defined(_WIN32) && defined(HAVE_AS_SYM_ASSIGN) asm("memcpy = __sanitizer_internal_memcpy"); asm("memmove = __sanitizer_internal_memmove"); @@ -50,7 +50,7 @@ using vector = Define_SANITIZER_COMMON_N } // namespace std # endif // __cpluplus -# endif // !_WIN32 +# endif // !_WIN32 && HAVE_AS_SYM_ASSIGN # endif // SANITIZER_REDEFINE_BUILTINS_H #endif // SANITIZER_COMMON_NO_REDEFINE_BUILTINS