From 98908a1923625893c2411568053dae37d51313e1 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 1 Oct 2009 23:33:17 +0000 Subject: * 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. --- ld/testsuite/ChangeLog | 7 +++++++ ld/testsuite/ld-gc/gc.exp | 3 ++- ld/testsuite/ld-srec/srec.exp | 36 ++++-------------------------------- ld/testsuite/lib/ld-lib.exp | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 33 deletions(-) diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 9f7bc22..04884d4 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2009-10-02 Alan Modra + + * 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 * ld-spu/icache1.d: Update to new section layout. diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp index 648f732..c85d4f2 100644 --- a/ld/testsuite/ld-gc/gc.exp +++ b/ld/testsuite/ld-gc/gc.exp @@ -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*-*-*] { diff --git a/ld/testsuite/ld-srec/srec.exp b/ld/testsuite/ld-srec/srec.exp index e5b5af3..0a3dc44 100644 --- a/ld/testsuite/ld-srec/srec.exp +++ b/ld/testsuite/ld-srec/srec.exp @@ -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 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp index c9d4f8c..a738747 100644 --- a/ld/testsuite/lib/ld-lib.exp +++ b/ld/testsuite/lib/ld-lib.exp @@ -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 {} { -- cgit v1.1