public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-8694] Link shared libasan with -z now on Solaris
@ 2024-02-01 12:13 Rainer Orth
  0 siblings, 0 replies; only message in thread
From: Rainer Orth @ 2024-02-01 12:13 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:099d53e5b5404532e8910d1430f3942c4f07976c

commit r14-8694-g099d53e5b5404532e8910d1430f3942c4f07976c
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Thu Feb 1 13:13:06 2024 +0100

    Link shared libasan with -z now on Solaris
    
    g++.dg/asan/default-options-1.C FAILs on Solaris/SPARC and x86:
    
    FAIL: g++.dg/asan/default-options-1.C   -O0  execution test
    FAIL: g++.dg/asan/default-options-1.C   -O1  execution test
    FAIL: g++.dg/asan/default-options-1.C   -O2  execution test
    FAIL: g++.dg/asan/default-options-1.C   -O2 -flto  execution test
    FAIL: g++.dg/asan/default-options-1.C   -O2 -flto -flto-partition=none  execution test
    FAIL: g++.dg/asan/default-options-1.C   -O3 -g  execution test
    FAIL: g++.dg/asan/default-options-1.C   -Os  execution test
    
    The failure is always the same:
    
    AddressSanitizer: CHECK failed: asan_rtl.cpp:397 "((!AsanInitIsRunning() && "ASan init calls itself!")) != (0)" (0x0, 0x0) (tid=1)
    
    This happens because libasan makes unportable assumptions about
    initialization order that don't hold on Solaris.  The problem has
    already been fixed in clang by
    
            [Driver] Link shared asan runtime lib with -z now on Solaris/x86
            https://reviews.llvm.org/D156325
    
    where it was way more prevalent.
    
    This patch applies the same fix to gcc.
    
    Tested on i386-pc-solaris2.11 (ld and gld) and sparc-sun-solaris2.11.
    
    2024-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
    
            gcc:
            * config/sol2.h (LIBASAN_EARLY_SPEC): Add -z now unless
            -static-libasan.  Add missing whitespace.

Diff:
---
 gcc/config/sol2.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h
index 5b1d3371b4d6..85c1f9daf6a9 100644
--- a/gcc/config/sol2.h
+++ b/gcc/config/sol2.h
@@ -255,7 +255,7 @@ along with GCC; see the file COPYING3.  If not see
   " %{!shared:libasan_preinit%O%s} \
     %{static-libasan:%{!shared: -Bstatic "\
     LD_WHOLE_ARCHIVE_OPTION " -lasan " LD_NO_WHOLE_ARCHIVE_OPTION \
-    "-Bdynamic}}%{!static-libasan:-lasan}"
+    " -Bdynamic}}%{!static-libasan:-z now -lasan}"
 
 /* Error out on -fsanitize=thread|leak.  */
 #define LIBTSAN_EARLY_SPEC "\

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-02-01 12:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-01 12:13 [gcc r14-8694] Link shared libasan with -z now on Solaris Rainer Orth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).