aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-06-20 10:41:40 +0930
committerAlan Modra <amodra@gmail.com>2020-06-20 10:56:39 +0930
commite2201c2a578f2b22fc04cc95507c643ac908c952 (patch)
treeb5e2d2109b22030df32a9d40f96bbff7c28d57ba /ld
parent17fc27167f678285d2f64040837b8cc41b6a664a (diff)
downloadbinutils-e2201c2a578f2b22fc04cc95507c643ac908c952.zip
binutils-e2201c2a578f2b22fc04cc95507c643ac908c952.tar.gz
binutils-e2201c2a578f2b22fc04cc95507c643ac908c952.tar.bz2
SH gas configure and ld tests
All current SH gas targets use BFD. sh-coff was incorrectly reported as unsupported. gas/ * configure.tgt: Set bfd_gas for all SH targets. ld/ * testsuite/ld-sh/sh.exp: Don't run relax tests for non-ELF. Fail when ld_assemble fails. Use elseif to reduce indentation.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/testsuite/ld-sh/sh.exp132
2 files changed, 71 insertions, 66 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4061ecd..c47fbca 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-20 Alan Modra <amodra@gmail.com>
+
+ * testsuite/ld-sh/sh.exp: Don't run relax tests for non-ELF.
+ Fail when ld_assemble fails. Use elseif to reduce indentation.
+
2020-06-19 Alan Modra <amodra@gmail.com>
* testsuite/ld-elf/dynamic-1.rd: Accept st_other notations.
diff --git a/ld/testsuite/ld-sh/sh.exp b/ld/testsuite/ld-sh/sh.exp
index 8a15cee..0096b5b 100644
--- a/ld/testsuite/ld-sh/sh.exp
+++ b/ld/testsuite/ld-sh/sh.exp
@@ -30,98 +30,98 @@ if ![istarget sh*-*-*] {
set testsimple "SH simple relaxing"
-if ![ld_assemble $as "-relax $srcdir/$subdir/sh1.s" tmpdir/sh1.o] {
+if { ![is_elf_format] } {
unresolved $testsimple
-} else { if ![ld_link $ld tmpdir/sh1 "-relax tmpdir/sh1.o"] {
+} elseif { ![ld_assemble $as "-relax $srcdir/$subdir/sh1.s" tmpdir/sh1.o] } {
+ fail $testsimple
+} elseif { ![ld_link $ld tmpdir/sh1 "-relax tmpdir/sh1.o"] } {
+ fail $testsimple
+} elseif { ![ld_nm $nm "" tmpdir/sh1] } {
+ fail $testsimple
+} elseif { ![info exists nm_output(bar)]
+ || ![info exists nm_output(foo)]} {
+ send_log "bad output from nm\n"
+ verbose "bad output from nm"
+ fail $testsimple
+} elseif {$nm_output(bar) != $nm_output(foo) + 0xc} {
+ send_log "foo == $nm_output(foo)\n"
+ verbose "foo == $nm_output(foo)"
+ send_log "bar == $nm_output(bar)\n"
+ verbose "bar == $nm_output(bar)"
fail $testsimple
} else {
- if ![ld_nm $nm "" tmpdir/sh1] {
- unresolved $testsimple
- } else {
- if {![info exists nm_output(bar)] \
- || ![info exists nm_output(foo)]} {
- send_log "bad output from nm\n"
- verbose "bad output from nm"
- fail $testsimple
- } else {
- if {$nm_output(bar) != $nm_output(foo) + 0xc} {
- send_log "foo == $nm_output(foo)\n"
- verbose "foo == $nm_output(foo)"
- send_log "bar == $nm_output(bar)\n"
- verbose "bar == $nm_output(bar)"
- fail $testsimple
- } else {
- pass $testsimple
- }
- }
- }
-} }
+ pass $testsimple
+}
set testsrec "SH relaxing to S-records"
-if { [istarget sh*-linux-*] || [istarget sh-*-vxworks] } {
- # On these "non-embedded" targets, the default ELF and srec start
- # addresses will be SIZEOF_HEADERS bytes apart. Ensure consistency
- # by feeding the ELF start address to the srec link line.
- catch "exec $objdump -x tmpdir/sh1 | grep start\\ address | sed s/start\\ address//" entry_addr
- set srec_relax_arg "-Ttext $entry_addr -relax --oformat srec tmpdir/sh1.o"
-} else {
- set srec_relax_arg "-relax --oformat srec tmpdir/sh1.o"
-}
-if ![ld_link $ld tmpdir/sh1.s1 $srec_relax_arg ] {
- fail $testsrec
+if { ![remote_file host exists tmpdir/sh1] } {
+ unresolved $testsrec
} else {
- # The file name is embedded in the S-records, so create both
- # files with the same name.
- catch "exec rm -f tmpdir/sh1.s2" exec_output
- send_log "mv tmpdir/sh1.s1 tmpdir/sh1.s2\n"
- verbose "mv tmpdir/sh1.s1 tmpdir/sh1.s2"
- catch "exec mv tmpdir/sh1.s1 tmpdir/sh1.s2" exec_output
- if ![string match "" $exec_output] {
- send_log "$exec_output\n"
- verbose "$exec_output"
- unresolved $testsrec
+ if { [istarget sh*-linux-*] || [istarget sh-*-vxworks] } {
+ # On these "non-embedded" targets, the default ELF and srec start
+ # addresses will be SIZEOF_HEADERS bytes apart. Ensure consistency
+ # by feeding the ELF start address to the srec link line.
+ catch "exec $objdump -x tmpdir/sh1 | grep start\\ address | sed s/start\\ address//" entry_addr
+ set srec_relax_arg "-Ttext $entry_addr -relax --oformat srec tmpdir/sh1.o"
+ } else {
+ set srec_relax_arg "-relax --oformat srec tmpdir/sh1.o"
+ }
+ if ![ld_link $ld tmpdir/sh1.s1 $srec_relax_arg ] {
+ fail $testsrec
} else {
- send_log "$objcopy -O srec tmpdir/sh1 tmpdir/sh1.s1\n"
- verbose "$objcopy -O srec tmpdir/sh1 tmpdir/sh1.s1"
- catch "exec $objcopy -O srec tmpdir/sh1 tmpdir/sh1.s1" exec_output
+ # The file name is embedded in the S-records, so create both
+ # files with the same name.
+ catch "exec rm -f tmpdir/sh1.s2" exec_output
+ send_log "mv tmpdir/sh1.s1 tmpdir/sh1.s2\n"
+ verbose "mv tmpdir/sh1.s1 tmpdir/sh1.s2"
+ catch "exec mv tmpdir/sh1.s1 tmpdir/sh1.s2" exec_output
if ![string match "" $exec_output] {
send_log "$exec_output\n"
verbose "$exec_output"
unresolved $testsrec
} else {
- send_log "cmp tmpdir/sh1.s1 tmpdir/sh1.s2\n"
- verbose "cmp tmpdir/sh1.s1 tmpdir/sh1.s2"
- catch "exec cmp tmpdir/sh1.s1 tmpdir/sh1.s2" exec_output
- set exec_output [prune_warnings $exec_output]
+ send_log "$objcopy -O srec tmpdir/sh1 tmpdir/sh1.s1\n"
+ verbose "$objcopy -O srec tmpdir/sh1 tmpdir/sh1.s1"
+ catch "exec $objcopy -O srec tmpdir/sh1 tmpdir/sh1.s1" exec_output
if ![string match "" $exec_output] {
send_log "$exec_output\n"
verbose "$exec_output"
- fail $testsrec
+ unresolved $testsrec
} else {
- pass $testsrec
+ send_log "cmp tmpdir/sh1.s1 tmpdir/sh1.s2\n"
+ verbose "cmp tmpdir/sh1.s1 tmpdir/sh1.s2"
+ catch "exec cmp tmpdir/sh1.s1 tmpdir/sh1.s2" exec_output
+ set exec_output [prune_warnings $exec_output]
+ if ![string match "" $exec_output] {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ fail $testsrec
+ } else {
+ pass $testsrec
+ }
}
}
}
}
set testadjsw8 "SH switch8 adjustment after relax"
-if ![ld_assemble $as "-relax $srcdir/$subdir/adjsw8.s" tmpdir/adjsw8.o] {
+if { ![is_elf_format] } {
unresolved $testadjsw8
+} elseif { ![ld_assemble $as "-relax $srcdir/$subdir/adjsw8.s" tmpdir/adjsw8.o] } {
+ fail $testadjsw8
+} elseif { ![ld_link $ld tmpdir/adjsw8 "-relax tmpdir/adjsw8.o"] } {
+ fail $testadjsw8
} else {
- if ![ld_link $ld tmpdir/adjsw8 "-relax tmpdir/adjsw8.o"] {
- fail $testadjsw8
+ send_log "exec $objdump -s tmpdir/adjsw8\n"
+ verbose "exec $objdump -s tmpdir/adjsw8"
+ catch "exec $objdump -s tmpdir/adjsw8" exec_output
+ if [string match "*04080c00*" $exec_output] {
+ pass $testadjsw8
} else {
- send_log "exec $objdump -s tmpdir/adjsw8\n"
- verbose "exec $objdump -s tmpdir/adjsw8"
- catch "exec $objdump -s tmpdir/adjsw8" exec_output
- if [string match "*04080c00*" $exec_output] {
- pass $testadjsw8
- } else {
- send_log "bad switch table\n"
- verbose "bad switch table"
- fail $testadjsw8
- }
+ send_log "bad switch table\n"
+ verbose "bad switch table"
+ fail $testadjsw8
}
}