aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog7
-rw-r--r--ld/testsuite/ld-gc/gc.exp3
-rw-r--r--ld/testsuite/ld-srec/srec.exp36
-rw-r--r--ld/testsuite/lib/ld-lib.exp41
4 files changed, 54 insertions, 33 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index fa8ec9e..3fbd06f 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -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.
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 {} {