Clear hwcap_2 with Sun ld

Backport from mainline:
	2012-06-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc.target/i386/clearcapv2.map: New file.
	* gcc.target/i386/i386.exp: Try it first before clearcap.map.

From-SVN: r196168
This commit is contained in:
Rainer Orth 2013-02-20 10:02:48 +00:00 committed by Rainer Orth
parent b59573712e
commit ab6f72476c
3 changed files with 29 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2013-02-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Backport from mainline:
2012-06-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* gcc.target/i386/clearcapv2.map: New file.
* gcc.target/i386/i386.exp: Try it first before clearcap.map.
2013-02-19 Jakub Jelinek <jakub@redhat.com>
Backported from mainline

View File

@ -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 = ;
};

View File

@ -245,12 +245,23 @@ proc check_effective_target_bmi2 { } {
# If the linker used understands -M <mapfile>, 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