aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-elf
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-elf')
-rw-r--r--ld/testsuite/ld-elf/elf.exp3
-rw-r--r--ld/testsuite/ld-elf/group2.d3
-rw-r--r--ld/testsuite/ld-elf/group4.d3
-rw-r--r--ld/testsuite/ld-elf/group5.d3
-rw-r--r--ld/testsuite/ld-elf/group6.d3
-rw-r--r--ld/testsuite/ld-elf/init-fini-arrays.d3
-rw-r--r--ld/testsuite/ld-elf/orphan2.d2
-rw-r--r--ld/testsuite/ld-elf/sec64k.exp83
8 files changed, 68 insertions, 35 deletions
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index a94e96d..1e1f738 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -54,7 +54,8 @@ if { [istarget *-*-linux*] } {
}
}
-if { [check_gc_sections_available] } {
+#v850 gas complains about .tbss.var section attributes.
+if { [check_gc_sections_available] && ![istarget "v850-*-*"] } {
run_ld_link_tests {
{"--gc-sections on tls variable"
"--gc-section" "" {tls_gc.s} {} "tls_gc"}
diff --git a/ld/testsuite/ld-elf/group2.d b/ld/testsuite/ld-elf/group2.d
index f914930..86ca952 100644
--- a/ld/testsuite/ld-elf/group2.d
+++ b/ld/testsuite/ld-elf/group2.d
@@ -1,9 +1,10 @@
#source: ../../../binutils/testsuite/binutils-all/group.s
#ld: -r
#readelf: -Sg --wide
-#xfail: cr16-*-* crx-*-*
+#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
+# xstormy also uses a non-standard script, putting .data before .text.
#...
\[[ 0-9]+\] foo_group[ \t]+GROUP[ \t]+.*
diff --git a/ld/testsuite/ld-elf/group4.d b/ld/testsuite/ld-elf/group4.d
index 0682796..af4ca4d 100644
--- a/ld/testsuite/ld-elf/group4.d
+++ b/ld/testsuite/ld-elf/group4.d
@@ -1,9 +1,10 @@
#source: ../../../binutils/testsuite/binutils-all/group-2.s
#ld: -r
#readelf: -Sg --wide
-#xfail: cr16-*-* crx-*-*
+#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
+# xstormy also uses a non-standard script, putting .data before .text.
#...
\[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.*
diff --git a/ld/testsuite/ld-elf/group5.d b/ld/testsuite/ld-elf/group5.d
index 773fda6..5102f81 100644
--- a/ld/testsuite/ld-elf/group5.d
+++ b/ld/testsuite/ld-elf/group5.d
@@ -1,9 +1,10 @@
#source: ../../../binutils/testsuite/binutils-all/group-3.s
#ld: -r
#readelf: -Sg --wide
-#xfail: cr16-*-* crx-*-*
+#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
+# xstormy also uses a non-standard script, putting .data before .text.
#...
\[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.*
diff --git a/ld/testsuite/ld-elf/group6.d b/ld/testsuite/ld-elf/group6.d
index 5660193..0e8441f 100644
--- a/ld/testsuite/ld-elf/group6.d
+++ b/ld/testsuite/ld-elf/group6.d
@@ -1,9 +1,10 @@
#source: ../../../binutils/testsuite/binutils-all/group-4.s
#ld: -r
#readelf: -Sg --wide
-#xfail: cr16-*-* crx-*-*
+#xfail: cr16-*-* crx-*-* xstormy*-*-*
# cr16 and crx use non-standard scripts with memory regions, which don't play
# well with unique group sections under ld -r.
+# xstormy also uses a non-standard script, putting .data before .text.
#...
\[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.*
diff --git a/ld/testsuite/ld-elf/init-fini-arrays.d b/ld/testsuite/ld-elf/init-fini-arrays.d
index 016209d..1b182b9 100644
--- a/ld/testsuite/ld-elf/init-fini-arrays.d
+++ b/ld/testsuite/ld-elf/init-fini-arrays.d
@@ -1,6 +1,9 @@
#source: init-fini-arrays.s
#ld: -r
#readelf: -S --wide
+#xfail: cr16-*-* crx-*-*
+# cr16 and crx use non-standard scripts with memory regions, which don't play
+# well with unique group sections under ld -r.
#...
\[[ 0-9]+\] \.init_array\.01000[ \t]+PROGBITS[ \t0-9a-f]+WA?.*
diff --git a/ld/testsuite/ld-elf/orphan2.d b/ld/testsuite/ld-elf/orphan2.d
index a82e721..ddf69c7 100644
--- a/ld/testsuite/ld-elf/orphan2.d
+++ b/ld/testsuite/ld-elf/orphan2.d
@@ -1,6 +1,8 @@
#source: orphan2.s
#ld: -r
#readelf: -S --wide
+#xfail: xstormy*-*-*
+# xstormy uses a non-standard script, resulting is unexpected section order
#...
\[[ 0-9]+\] \.text[ \t]+PROGBITS[ \t0-9a-f]+AX?.*
diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
index 285e83a..7c04c9b 100644
--- a/ld/testsuite/ld-elf/sec64k.exp
+++ b/ld/testsuite/ld-elf/sec64k.exp
@@ -28,6 +28,18 @@ if ![is_elf_format] {
return
}
+# Targets using the generic linker backend don't sort section symbols
+# before local symbols, so don't bother testing them.
+if { [istarget "arc-*-*"]
+ || [istarget "d30v-*-*"]
+ || [istarget "dlx-*-*"]
+ || [istarget "i960-*-*"]
+ || [istarget "or32-*-*"]
+ || [istarget "pj*-*-*"]
+ || [istarget "m32r-*-*"] } {
+ return
+}
+
# Test >64k sections, with and without -r. First, create the assembly
# files. Have a relocation to another section and one within the local
# section.
@@ -111,7 +123,7 @@ if [catch { set ofd [open "tmpdir/$test1.d" w] } x] {
# The m32r target generates both REL and RELA relocs (for historical
# reasons) so the expected number of sections will be much more than
# 68000, which throws this particular test right off.
-if {![istarget "m32r-*-*"]} then {
+if { ![istarget "m32r-*-*"] } then {
foreach sfile [lrange $sfiles 0 [expr [llength $sfiles] / 2]] {
puts $ofd "#source: $sfile"
}
@@ -128,7 +140,7 @@ if {![istarget "m32r-*-*"]} then {
puts $ofd "#..."
puts $ofd " 340..: 0+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+68... "
puts $ofd "#..."
- puts $ofd " 340..: 0+(2|4|8)\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[23\] bar_1$"
+ puts $ofd " 340..: 0+(2|4|8)\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[2-5\] bar_1$"
puts $ofd "#..."
puts $ofd ".* bar_34000$"
puts $ofd "#..."
@@ -148,35 +160,46 @@ if [catch { set ofd [open "tmpdir/$test2.d" w] } x] {
unresolved $test2
return
}
-foreach sfile $sfiles { puts $ofd "#source: $sfile" }
-if { [istarget spu*-*-*] } {
- puts $ofd "#ld: --local-store 0:0"
-} else {
- puts $ofd "#ld:"
+
+# too big for d10v and msp
+# lack of fancy orphan section handling causes overlap on fr30 and iq2000
+if { ![istarget "d10v-*-*"]
+ && ![istarget "msp*-*-*"]
+ && ![istarget "fr30-*-*"]
+ && ![istarget "iq2000-*-*"] } {
+ foreach sfile $sfiles { puts $ofd "#source: $sfile" }
+ if { [istarget "avr-*-*"] } then {
+ puts $ofd "#as: -mmcu=avr6"
+ puts $ofd "#ld: -mavr6"
+ } elseif { [istarget spu*-*-*] } {
+ puts $ofd "#ld: --local-store 0:0"
+ } else {
+ puts $ofd "#ld:"
+ }
+ puts $ofd "#readelf: -W -Ss"
+ puts $ofd "There are 660.. section headers.*:"
+ puts $ofd "#..."
+ puts $ofd " \\\[ 0\\\] .* 660..\[ \]+0\[ \]+0"
+ puts $ofd "#..."
+ puts $ofd " \\\[65279\\\] \\.foo\\.\[0-9\]+ .*"
+ puts $ofd " \\\[65280\\\] \\.foo\\.\[0-9\]+ .*"
+ puts $ofd "#..."
+ puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+660.. "
+ puts $ofd "#..."
+ puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[0-9\] bar_1$"
+ puts $ofd "#..."
+ puts $ofd ".* bar_66000$"
+ puts $ofd "#..."
+ # Global symbols are not in "alphanumeric" order, so we just check
+ # that the first and the last are present in any order (assuming no
+ # duplicates).
+ puts $ofd ".* (\[0-9\] foo_1|66... foo_66000)$"
+ puts $ofd "#..."
+ puts $ofd ".* (\[0-9\] foo_1|66... foo_66000)$"
+ puts $ofd "#pass"
+ close $ofd
+ run_dump_test "tmpdir/$test2"
}
-puts $ofd "#readelf: -W -Ss"
-puts $ofd "There are 660.. section headers.*:"
-puts $ofd "#..."
-puts $ofd " \\\[ 0\\\] .* 660..\[ \]+0\[ \]+0"
-puts $ofd "#..."
-puts $ofd " \\\[65279\\\] \\.foo\\.\[0-9\]+ .*"
-puts $ofd " \\\[65280\\\] \\.foo\\.\[0-9\]+ .*"
-puts $ofd "#..."
-puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+SECTION\[ \]+LOCAL\[ \]+DEFAULT\[ \]+660.. "
-puts $ofd "#..."
-puts $ofd " 660..: \[0-9a-f\]+\[ \]+0\[ \]+NOTYPE\[ \]+LOCAL\[ \]+DEFAULT\[ \]+\[0-9\] bar_1$"
-puts $ofd "#..."
-puts $ofd ".* bar_66000$"
-puts $ofd "#..."
-# Global symbols are not in "alphanumeric" order, so we just check
-# that the first and the last are present in any order (assuming no
-# duplicates).
-puts $ofd ".* (\[0-9\] foo_1|66... foo_66000)$"
-puts $ofd "#..."
-puts $ofd ".* (\[0-9\] foo_1|66... foo_66000)$"
-puts $ofd "#pass"
-close $ofd
-run_dump_test "tmpdir/$test2"
for { set i 1 } { $i < $max_sec / $secs_per_file } { incr i } {
catch "exec rm -f tmpdir/dump$i.o" status