public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH, rs6000, 4.9] Fix many powerpc*-linux ASAN test suite failures
@ 2014-07-17 15:05 Peter Bergner
  2014-07-18 15:39 ` David Edelsohn
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Bergner @ 2014-07-17 15:05 UTC (permalink / raw)
  To: GCC Patches; +Cc: David Edelsohn, Jakub Jelinek

With a recent mainline libsanitizer merge from upstream, we're now seeing a
lot of mainline ASAN test suite failures with the following error:

 ==26426==ASan runtime does not come first in initial library list; you should
 either link runtime to your application or manually preload it with LD_PRELOAD.
 FAIL: c-c++-common/asan/asan-interface-1.c   -O0  execution test

This is caused by mainline libasan detecting that libasan is not linked
first and erroring out.  With the 4.8 and 4.9, we may just silently run
into problems.  The root cause is that powerpc*-linux does not define
LIBASAN_EARLY_SPEC which is defined in gnu-user.h.  It looks like all
*-linux architectures include gnu-user.h except for powerpc*-linux.
As discussed, for the 4.8 and 4.9 backports of the original patch, we
will just copy those defines to the rs6000 header files and not try and
include gnu-user.h itself.

This is slightly different than the 4.8 patch, since the STATIC_LIB[AT]SAN_LIBS
macro was deleted in 4.9.

This passed bootstrap and regtesting on powerpc64-linux with no regressions.
Ok for 4.9?

Peter

	* config/rs6000/sysv4.h:

Index: gcc/config/rs6000/sysv4.h
===================================================================
--- gcc/config/rs6000/sysv4.h	(revision 212695)
+++ gcc/config/rs6000/sysv4.h	(working copy)
@@ -949,3 +949,19 @@ ncrtn.o%s"
 #define TARGET_USES_SYSV4_OPT 1
 
 #undef DBX_REGISTER_NUMBER
+
+/* Link -lasan early on the command line.  For -static-libasan, don't link
+   it for -shared link, the executable should be compiled with -static-libasan
+   in that case, and for executable link link with --{,no-}whole-archive around
+   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 "%{!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:" \
+  LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
+  LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
+#endif


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH, rs6000, 4.9] Fix many powerpc*-linux ASAN test suite failures
  2014-07-17 15:05 [PATCH, rs6000, 4.9] Fix many powerpc*-linux ASAN test suite failures Peter Bergner
@ 2014-07-18 15:39 ` David Edelsohn
  2014-07-18 15:57   ` Jakub Jelinek
  0 siblings, 1 reply; 4+ messages in thread
From: David Edelsohn @ 2014-07-18 15:39 UTC (permalink / raw)
  To: Peter Bergner; +Cc: GCC Patches, Jakub Jelinek

This is okay with me if it is okay with the Release Managers.

Thanks, David

On Thu, Jul 17, 2014 at 10:56 AM, Peter Bergner <bergner@vnet.ibm.com> wrote:
> With a recent mainline libsanitizer merge from upstream, we're now seeing a
> lot of mainline ASAN test suite failures with the following error:
>
>  ==26426==ASan runtime does not come first in initial library list; you should
>  either link runtime to your application or manually preload it with LD_PRELOAD.
>  FAIL: c-c++-common/asan/asan-interface-1.c   -O0  execution test
>
> This is caused by mainline libasan detecting that libasan is not linked
> first and erroring out.  With the 4.8 and 4.9, we may just silently run
> into problems.  The root cause is that powerpc*-linux does not define
> LIBASAN_EARLY_SPEC which is defined in gnu-user.h.  It looks like all
> *-linux architectures include gnu-user.h except for powerpc*-linux.
> As discussed, for the 4.8 and 4.9 backports of the original patch, we
> will just copy those defines to the rs6000 header files and not try and
> include gnu-user.h itself.
>
> This is slightly different than the 4.8 patch, since the STATIC_LIB[AT]SAN_LIBS
> macro was deleted in 4.9.
>
> This passed bootstrap and regtesting on powerpc64-linux with no regressions.
> Ok for 4.9?
>
> Peter
>
>         * config/rs6000/sysv4.h:
>
> Index: gcc/config/rs6000/sysv4.h
> ===================================================================
> --- gcc/config/rs6000/sysv4.h   (revision 212695)
> +++ gcc/config/rs6000/sysv4.h   (working copy)
> @@ -949,3 +949,19 @@ ncrtn.o%s"
>  #define TARGET_USES_SYSV4_OPT 1
>
>  #undef DBX_REGISTER_NUMBER
> +
> +/* Link -lasan early on the command line.  For -static-libasan, don't link
> +   it for -shared link, the executable should be compiled with -static-libasan
> +   in that case, and for executable link link with --{,no-}whole-archive around
> +   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 "%{!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:" \
> +  LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
> +  LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
> +#endif
>
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH, rs6000, 4.9] Fix many powerpc*-linux ASAN test suite failures
  2014-07-18 15:39 ` David Edelsohn
@ 2014-07-18 15:57   ` Jakub Jelinek
  2014-07-21 22:25     ` Peter Bergner
  0 siblings, 1 reply; 4+ messages in thread
From: Jakub Jelinek @ 2014-07-18 15:57 UTC (permalink / raw)
  To: David Edelsohn; +Cc: Peter Bergner, GCC Patches

On Fri, Jul 18, 2014 at 11:38:22AM -0400, David Edelsohn wrote:
> This is okay with me if it is okay with the Release Managers.

Ok.

	Jakub

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH, rs6000, 4.9] Fix many powerpc*-linux ASAN test suite failures
  2014-07-18 15:57   ` Jakub Jelinek
@ 2014-07-21 22:25     ` Peter Bergner
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Bergner @ 2014-07-21 22:25 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: David Edelsohn, GCC Patches

On Fri, 2014-07-18 at 17:54 +0200, Jakub Jelinek wrote:
> On Fri, Jul 18, 2014 at 11:38:22AM -0400, David Edelsohn wrote:
> > This is okay with me if it is okay with the Release Managers.
> 
> Ok.

Ok, I committed this as revision 212898.  Thanks!

Peter


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-07-21 20:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-17 15:05 [PATCH, rs6000, 4.9] Fix many powerpc*-linux ASAN test suite failures Peter Bergner
2014-07-18 15:39 ` David Edelsohn
2014-07-18 15:57   ` Jakub Jelinek
2014-07-21 22:25     ` Peter Bergner

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).