From 32e36d1a8343aa9efedcd08aaba7bb007f7603d5 Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Wed, 20 Jun 2012 09:17:53 +0000 Subject: [PATCH] Clear hwcap_2 with Sun ld * gcc.target/i386/clearcapv2.map: New file. * gcc.target/i386/i386.exp: Try it first before clearcap.map. From-SVN: r188820 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/clearcapv2.map | 7 +++++++ gcc/testsuite/gcc.target/i386/i386.exp | 17 ++++++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/clearcapv2.map diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a3a8166f941..db5fe8647b7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-20 Rainer Orth + + * gcc.target/i386/clearcapv2.map: New file. + * gcc.target/i386/i386.exp: Try it first before clearcap.map. + 2012-06-19 Kaz Kojima * gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets diff --git a/gcc/testsuite/gcc.target/i386/clearcapv2.map b/gcc/testsuite/gcc.target/i386/clearcapv2.map new file mode 100644 index 00000000000..95cb14cc5d2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/clearcapv2.map @@ -0,0 +1,7 @@ +# clear all hardware capabilities emitted by Sun as: the tests here +# guard against execution at runtime +# uses mapfile v2 syntax which is the only way to clear AT_SUN_CAP_HW2 flags +$mapfile_version 2 +CAPABILITY { + HW = ; +}; diff --git a/gcc/testsuite/gcc.target/i386/i386.exp b/gcc/testsuite/gcc.target/i386/i386.exp index 88ff715dc24..785a9739236 100644 --- a/gcc/testsuite/gcc.target/i386/i386.exp +++ b/gcc/testsuite/gcc.target/i386/i386.exp @@ -256,12 +256,23 @@ proc check_effective_target_rtm { } { # If the linker used understands -M , pass it to clear hardware # capabilities set by the Sun assembler. -set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcap.map" +# Try mapfile syntax v2 first which is the only way to clear hwcap_2 flags. +set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcapv2.map" -if [check_no_compiler_messages mapfile executable { +if ![check_no_compiler_messages mapfilev2 executable { + int main (void) { return 0; } +} $clearcap_ldflags ] { + # If this doesn't work, fall back to the less capable v1 syntax. + set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcap.map" + + if ![check_no_compiler_messages mapfile executable { int main (void) { return 0; } - } $clearcap_ldflags ] { + } $clearcap_ldflags ] { + unset clearcap_ldflags + } +} +if [info exists clearcap_ldflags] { if { [info procs gcc_target_compile] != [list] \ && [info procs saved_gcc_target_compile] == [list] } { rename gcc_target_compile saved_gcc_target_compile -- 2.30.2