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.
This commit is contained in:
parent
17fc27167f
commit
e2201c2a57
@ -1,3 +1,7 @@
|
||||
2020-06-20 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* configure.tgt: Set bfd_gas for all SH targets.
|
||||
|
||||
2020-06-18 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* testsuite/gas/i386/arch-13.s: Add alternative VMGEXIT case.
|
||||
|
@ -386,7 +386,7 @@ case ${generic_target} in
|
||||
sh-*-uclinux* | sh[12]-*-uclinux*) fmt=elf em=uclinux ;;
|
||||
sh-*-coff*) fmt=coff ;;
|
||||
sh-*-nto*) fmt=elf ;;
|
||||
sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;;
|
||||
sh-*-pe*) fmt=coff em=pe endian=little ;;
|
||||
sh-*-kaos*) fmt=elf ;;
|
||||
shle*-*-kaos*) fmt=elf ;;
|
||||
|
||||
@ -437,7 +437,8 @@ case ${generic_target} in
|
||||
esac
|
||||
|
||||
case ${cpu_type} in
|
||||
aarch64 | alpha | arm | csky | i386 | ia64 | microblaze | mips | ns32k | or1k | or1knd | pdp11 | ppc | riscv | sparc | z80 | z8k)
|
||||
aarch64 | alpha | arm | csky | i386 | ia64 | microblaze | mips | ns32k | \
|
||||
or1k | or1knd | pdp11 | ppc | riscv | sh | sparc | z80 | z8k)
|
||||
bfd_gas=yes
|
||||
;;
|
||||
esac
|
||||
|
@ -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.
|
||||
|
@ -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"
|
||||
if { ![remote_file host exists tmpdir/sh1] } {
|
||||
unresolved $testsrec
|
||||
} else {
|
||||
set srec_relax_arg "-relax --oformat srec tmpdir/sh1.o"
|
||||
}
|
||||
if ![ld_link $ld tmpdir/sh1.s1 $srec_relax_arg ] {
|
||||
fail $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 {
|
||||
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
|
||||
set srec_relax_arg "-relax --oformat srec tmpdir/sh1.o"
|
||||
}
|
||||
if ![ld_link $ld tmpdir/sh1.s1 $srec_relax_arg ] {
|
||||
fail $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
|
||||
} 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
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user