2011-12-15 David Daney <david.daney@cavium.com>

Nick Clifton <nickc@redhat.com>

	* ld-elfvers/vers.exp (picflag): Set to -fpic for mips*-*-* when
	using GCC-4.3 or later.
	(pic): Set to "yes" for mips*-*-linux*.
	* ld-elfvsb/elfvsb.exp: Don't test non-PIC shared libraried on
	mips*-*-linux*.
	(picflag): Set to -fpic for mips*-*-* when using GCC-4.3 or later.
	* ld-elfweak/elfweak.exp (picflag): Set to -fpic for mips*-*-*
	when using GCC-4.3 or later.
	* ld-shared/shared.exp (picflag): Same.
	* lib/ld-lib.exp (at_least_gcc_version): New proc.
This commit is contained in:
David Daney 2011-12-16 06:18:55 +00:00
parent 083a553414
commit fb35d3d8fa
6 changed files with 56 additions and 7 deletions

View File

@ -1,3 +1,17 @@
2011-12-15 David Daney <david.daney@cavium.com>
Nick Clifton <nickc@redhat.com>
* ld-elfvers/vers.exp (picflag): Set to -fpic for mips*-*-* when
using GCC-4.3 or later.
(pic): Set to "yes" for mips*-*-linux*.
* ld-elfvsb/elfvsb.exp: Don't test non-PIC shared libraried on
mips*-*-linux*.
(picflag): Set to -fpic for mips*-*-* when using GCC-4.3 or later.
* ld-elfweak/elfweak.exp (picflag): Set to -fpic for mips*-*-*
when using GCC-4.3 or later.
* ld-shared/shared.exp (picflag): Same.
* lib/ld-lib.exp (at_least_gcc_version): New proc.
2011-12-10 David Daney <david.daney@cavium.com>
* ld-mips-elf/pic-and-nonpic-6-n64.dd: Use correct encoding for

View File

@ -72,7 +72,9 @@ set SOBJDUMP_FLAGS --syms
set shared "--shared --no-undefined-version"
set script --version-script
if [istarget mips*-*-*] {
# Old version of GCC for MIPS default to enabling -fpic
# and get confused if it is used on the command line.
if { [istarget mips*-*-*] && ! [at_least_gcc_version 4 3] } then {
set picflag ""
} else {
# Unfortunately, the gcc argument is -fpic and the cc argument is
@ -768,8 +770,9 @@ proc build_exec { test source execname flags solibname verexp versymexp symexp }
pass $test
}
if [istarget x86_64-*-linux*] {
# x86_64 doesn't like non-pic shared libraries
if { [istarget x86_64-*-linux*] \
|| ( [istarget mips*-*-linux*] && [at_least_gcc_version 4 3] ) } {
# x86_64 and newer MIPS toolchains do not like non-pic shared libraries
set pic "yes"
} else {
set pic "no"

View File

@ -249,7 +249,8 @@ proc visibility_run {visibility} {
set VSBCFLAG ""
}}}}}}}}}
if { [istarget powerpc*-*-linux*] } {
if { [istarget powerpc*-*-linux*] \
|| ( [istarget mips*-*-linux*] && [at_least_gcc_version 4 3] )} {
# Testing non-PIC libraries is a waste of effort on any target.
# If you don't pass -fpic or -fPIC to gcc, gcc will assume quite
# reasonably that you are not compiling for a shared library.
@ -453,7 +454,9 @@ proc visibility_run {visibility} {
}}
}
if [istarget mips*-*-*] {
# Old version of GCC for MIPS default to enabling -fpic
# and get confused if it is used on the command line.
if { [istarget mips*-*-*] && ! [at_least_gcc_version 4 3] } then {
set picflag ""
} else {
# Unfortunately, the gcc argument is -fpic and the cc argument is

View File

@ -370,7 +370,9 @@ proc build_exec { test execname objs flags dat dynsymexp symexp} {
pass $test
}
if [istarget mips*-*-*] {
# Old version of GCC for MIPS default to enabling -fpic
# and get confused if it is used on the command line.
if { [istarget mips*-*-*] && ! [at_least_gcc_version 4 3] } then {
set picflag ""
} else {
# Unfortunately, the gcc argument is -fpic and the cc argument is

View File

@ -181,7 +181,9 @@ proc shared_test { progname testname main sh1 sh2 dat args } {
pass "$testname"
}
if [istarget mips*-*-*] {
# Old version of GCC for MIPS default to enabling -fpic
# and get confused if it is used on the command line.
if { [istarget mips*-*-*] && ! [at_least_gcc_version 4 3] } then {
set picflag ""
} else {
# Unfortunately, the gcc argument is -fpic and the cc argument is

View File

@ -27,6 +27,31 @@ proc load_common_lib { name } {
load_common_lib binutils-common.exp
# Returns 1 if the gcc for the target is at least version MAJOR.MINOR
# Returns 0 otherwise.
#
proc at_least_gcc_version { major minor } {
if {![info exists CC]} {
set CC [find_gcc]
}
if { $CC == "" } {
return 0
}
set state [remote_exec host $CC --version]
set tmp "[lindex $state 1]\n"
# Look for (eg) 4.6.1 in the version output.
regexp " .* (\[1-9\])\\.(\[0-9\])\\.\[0-9\]* .*" "$tmp" fred maj min
verbose "gcc version: $tmp"
verbose "major gcc version is $maj, want at least $major"
if { $maj == $major } then {
verbose "minor gcc version is $min, want at least $minor"
return [expr $min >= $minor ]
} else {
return [expr $maj > $major ]
}
}
# Extract and print the version number of ld.
#
proc default_ld_version { ld } {