diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-02-22 17:07:36 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-02-22 17:07:36 +0100 |
commit | 7d61373544eb18698bd9015f73940048aeb4324e (patch) | |
tree | 31175eb919612b28fc525b5c5a2dea02e08371c3 /gcc | |
parent | ac8d93a742c5252bce9d6f867dccb950fda6df26 (diff) | |
download | gcc-7d61373544eb18698bd9015f73940048aeb4324e.zip gcc-7d61373544eb18698bd9015f73940048aeb4324e.tar.gz gcc-7d61373544eb18698bd9015f73940048aeb4324e.tar.bz2 |
re PR sanitizer/56393 (SIGSEGV when -fsanitize=address and dynamic lib with global objects)
PR sanitizer/56393
* config/gnu-user.h (LIBASAN_EARLY_SPEC): Link in libasan_preinit.o
if not linking a shared library.
* lib/asan-dg.exp (asan_link_flags): Add
-B${gccpath}/libsanitizer/asan/ to flags.
* asan/Makefile.am (nodist_toolexeclib_HEADERS): Set to
libasan_preinit.o.
(libasan_preinit.o): Depend on asan_preinit.o.
* asan/Makefile.in: Regenerated.
* asan/asan_preinit.cc: New file, synced from upstream.
* asan/asan_rtl.cc: Remove preinit stuff, synced from upstream.
From-SVN: r196222
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/gnu-user.h | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/lib/asan-dg.exp | 1 |
4 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e39c57f..e7cd749 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-02-22 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56393 + * config/gnu-user.h (LIBASAN_EARLY_SPEC): Link in libasan_preinit.o + if not linking a shared library. + 2013-02-22 Seth LaForge <sethml@google.com> * config.gcc (arm*-*-eabi*): Treat arm*eb as big-endian. diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h index ba627e0..6c26163 100644 --- a/gcc/config/gnu-user.h +++ b/gcc/config/gnu-user.h @@ -104,11 +104,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see it to force everything into the executable. And similarly for -ltsan. */ #if defined(HAVE_LD_STATIC_DYNAMIC) #undef LIBASAN_EARLY_SPEC -#define LIBASAN_EARLY_SPEC "%{static-libasan:%{!shared:" \ +#define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ + "%{static-libasan:%{!shared:" \ LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}" #undef LIBTSAN_EARLY_SPEC -#define LIBTSAN_EARLY_SPEC "%{static-libtsan:%{!shared:" \ +#define LIBTSAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ + "%{static-libtsan:%{!shared:" \ LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}" #endif diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7df8623..351cb17 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-02-22 Jakub Jelinek <jakub@redhat.com> + + PR sanitizer/56393 + * lib/asan-dg.exp (asan_link_flags): Add + -B${gccpath}/libsanitizer/asan/ to flags. + 2013-02-21 Jakub Jelinek <jakub@redhat.com> PR middle-end/56420 diff --git a/gcc/testsuite/lib/asan-dg.exp b/gcc/testsuite/lib/asan-dg.exp index 0bc9b24..e0bf2da 100644 --- a/gcc/testsuite/lib/asan-dg.exp +++ b/gcc/testsuite/lib/asan-dg.exp @@ -41,6 +41,7 @@ proc asan_link_flags { paths } { if { $gccpath != "" } { if { [file exists "${gccpath}/libsanitizer/asan/.libs/libasan.a"] || [file exists "${gccpath}/libsanitizer/asan/.libs/libasan.${shlib_ext}"] } { + append flags " -B${gccpath}/libsanitizer/asan/ " append flags " -L${gccpath}/libsanitizer/asan/.libs " append ld_library_path ":${gccpath}/libsanitizer/asan/.libs" } |