* lib/ld-lib.exp (ld_simple_link_defsyms): New proc, adding

powerpc-*-rtems to code setting symbols, extracted from..
	* ld-srec/srec.exp (run_srec_test): ..here.  Correct flags for sh64.
	* ld-gc/gc.exp (test_gc): Use ld_simple_link_defsyms.
This commit is contained in:
Alan Modra 2009-10-01 23:29:29 +00:00
parent c838b5167a
commit 1b66220522
4 changed files with 54 additions and 33 deletions

View File

@ -1,3 +1,10 @@
2009-10-02 Alan Modra <amodra@bigpond.net.au>
* lib/ld-lib.exp (ld_simple_link_defsyms): New proc, adding
powerpc-*-rtems to code setting symbols, extracted from..
* ld-srec/srec.exp (run_srec_test): ..here. Correct flags for sh64.
* ld-gc/gc.exp (test_gc): Use ld_simple_link_defsyms.
2009-10-01 Ulrich Weigand <uweigand@de.ibm.com>
* ld-spu/icache1.d: Update to new section layout.

View File

@ -44,7 +44,8 @@ proc test_gc { testname filename linker ldflags} {
}
set outfile "tmpdir/$filename"
set options "-L$srcdir/$subdir $ldflags $objfile"
set options "-L$srcdir/$subdir"
append options " " $ldflags " " [ld_simple_link_defsyms] " " $objfile
# SH64 targets needs an extra ld option for this test.
if [istarget sh64*-*-*] {

View File

@ -229,9 +229,9 @@ proc run_srec_test { test objs } {
global host_triplet
# Tell the ELF linker to not do anything clever with .eh_frame,
# not to put anything in small data, and define a symbol referenced
# by gcc -fstack-protector code.
set flags "--traditional-format -G 0 --defsym __stack_chk_fail=0"
# not to put anything in small data, and define various symbols.
set flags "--traditional-format -G 0 "
append flags [ld_simple_link_defsyms]
# If the linker script uses SIZEOF_HEADERS, use a -Ttext argument
# to force both the normal link and the S-record link to be put in
@ -244,7 +244,7 @@ proc run_srec_test { test objs } {
if [istarget sh64*-*-elf] {
# This is what gcc passes to ld by default.
set flags "-mshelf32"
set flags "$flags -mshelf32"
# SH64 targets cannot convert format in the linker
# using the -oformat command line switch.
setup_xfail "sh64*-*-*"
@ -254,10 +254,6 @@ proc run_srec_test { test objs } {
[istarget strongarm*-*-*] || \
[istarget xscale*-*-*] || \
[istarget thumb-*-*] } {
# ARM targets call __gccmain
set flags "$flags --defsym __gccmain=0"
# ARM targets cannot convert format in the linker
# using the --oformat command line switch
setup_xfail "*arm*-*-*"
@ -265,23 +261,6 @@ proc run_srec_test { test objs } {
setup_xfail "thumb-*-*"
}
# PowerPC EABI code calls __eabi.
if [istarget powerpc*-*-eabi*] {
set flags "$flags --defsym __eabi=0"
}
# mn10200 code calls __truncsipsi2_d0_d2.
if {[istarget mn10200*-*-*]} then {
set flags "$flags --defsym __truncsipsi2_d0_d2=0"
}
# m6811/m6812 code has references to soft registers.
if {[istarget m6811-*-*] || [istarget m6812-*-*]} {
set flags "$flags --defsym _.frame=0 --defsym _.d1=0 --defsym _.d2=0"
set flags "$flags --defsym _.d3=0 --defsym _.d4=0"
set flags "$flags --defsym _.tmp=0 --defsym _.xy=0 --defsym _.z=0"
}
# V850 targets need libgcc.a
if [istarget v850*-*-elf] {
set objs "$objs -L ../gcc -lgcc"
@ -292,13 +271,6 @@ proc run_srec_test { test objs } {
set flags "$flags -no-relax"
}
# Some OpenBSD targets have ProPolice and reference __guard and
# __stack_smash_handler.
if [istarget *-*-openbsd*] {
set flags "$flags --defsym __guard=0"
set flags "$flags --defsym __stack_smash_handler=0"
}
if { ![ld_simple_link $ld tmpdir/sr1 "$flags $objs"] \
|| ![ld_simple_link $ld tmpdir/sr2.sr "$flags --oformat srec $objs"] } {
fail $test

View File

@ -352,6 +352,47 @@ proc default_ld_nm { nm nmflags object } {
}
}
# Define various symbols needed when not linking against all
# target libs.
proc ld_simple_link_defsyms {} {
set flags "--defsym __stack_chk_fail=0"
# ARM targets call __gccmain
if {[istarget arm*-*-*] || \
[istarget strongarm*-*-*] || \
[istarget xscale*-*-*] || \
[istarget thumb-*-*] } {
append flags " --defsym __gccmain=0"
}
# PowerPC EABI code calls __eabi.
if {[istarget powerpc*-*-eabi*] || [istarget powerpc*-*-rtems*]} {
append flags " --defsym __eabi=0"
}
# mn10200 code calls __truncsipsi2_d0_d2.
if {[istarget mn10200*-*-*]} then {
append flags " --defsym __truncsipsi2_d0_d2=0"
}
# m6811/m6812 code has references to soft registers.
if {[istarget m6811-*-*] || [istarget m6812-*-*]} {
append flags " --defsym _.frame=0 --defsym _.d1=0 --defsym _.d2=0"
append flags " --defsym _.d3=0 --defsym _.d4=0"
append flags " --defsym _.tmp=0 --defsym _.xy=0 --defsym _.z=0"
}
# Some OpenBSD targets have ProPolice and reference __guard and
# __stack_smash_handler.
if [istarget *-*-openbsd*] {
append flags " --defsym __guard=0"
append flags " --defsym __stack_smash_handler=0"
}
return $flags
}
# True if the object format is known to be ELF.
#
proc is_elf_format {} {