mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-19 07:13:40 +08:00
171b8e1957
Some existing tests build .s and .d files for run_dump_test, using an absolute #source: line in the .d file. This patch changes that scheme a little to instead use "#source: ./..." in .d files rather than "#source: $objdir/...", which is more useful in cases where the .d file is not generated. This allows RX gas test files to be built in the build directory, rather than in a source directory (which might be read-only). binutils/ * testsuite/lib/binutils-common.exp (run_dump_test): Don't prepend $srcdir/$subdir to source file name if it starts with "./". gas/ * testsuite/gas/rx/rx.exp: Create generated test source in current directory. * testsuite/gas/rx/Xtod.d, * testsuite/gas/rx/abs.d, * testsuite/gas/rx/adc.d, * testsuite/gas/rx/add.d, * testsuite/gas/rx/and.d, * testsuite/gas/rx/bclr.d, * testsuite/gas/rx/bcnd.d, * testsuite/gas/rx/bfmov.d, * testsuite/gas/rx/bmcnd.d, * testsuite/gas/rx/bnot.d, * testsuite/gas/rx/bra.d, * testsuite/gas/rx/brk.d, * testsuite/gas/rx/bset.d, * testsuite/gas/rx/bsr.d, * testsuite/gas/rx/btst.d, * testsuite/gas/rx/clrpsw.d, * testsuite/gas/rx/cmp.d, * testsuite/gas/rx/dabs.d, * testsuite/gas/rx/dadd.d, * testsuite/gas/rx/dbt.d, * testsuite/gas/rx/dcmp.d, * testsuite/gas/rx/ddiv.d, * testsuite/gas/rx/div.d, * testsuite/gas/rx/divu.d, * testsuite/gas/rx/dmov.d, * testsuite/gas/rx/dmul.d, * testsuite/gas/rx/dneg.d, * testsuite/gas/rx/dpopm.d, * testsuite/gas/rx/dpushm.d, * testsuite/gas/rx/dround.d, * testsuite/gas/rx/dsqrt.d, * testsuite/gas/rx/dsub.d, * testsuite/gas/rx/dtoX.d, * testsuite/gas/rx/emaca.d, * testsuite/gas/rx/emsba.d, * testsuite/gas/rx/emul.d, * testsuite/gas/rx/emula.d, * testsuite/gas/rx/emulu.d, * testsuite/gas/rx/fadd.d, * testsuite/gas/rx/fcmp.d, * testsuite/gas/rx/fdiv.d, * testsuite/gas/rx/fmul.d, * testsuite/gas/rx/fsqrt.d, * testsuite/gas/rx/fsub.d, * testsuite/gas/rx/ftoi.d, * testsuite/gas/rx/ftou.d, * testsuite/gas/rx/gprel.d, * testsuite/gas/rx/int.d, * testsuite/gas/rx/itof.d, * testsuite/gas/rx/jmp.d, * testsuite/gas/rx/jsr.d, * testsuite/gas/rx/machi.d, * testsuite/gas/rx/maclh.d, * testsuite/gas/rx/maclo.d, * testsuite/gas/rx/max.d, * testsuite/gas/rx/min.d, * testsuite/gas/rx/mov.d, * testsuite/gas/rx/movco.d, * testsuite/gas/rx/movli.d, * testsuite/gas/rx/movu.d, * testsuite/gas/rx/msbhi.d, * testsuite/gas/rx/msblh.d, * testsuite/gas/rx/msblo.d, * testsuite/gas/rx/mul.d, * testsuite/gas/rx/mulhi.d, * testsuite/gas/rx/mullh.d, * testsuite/gas/rx/mullo.d, * testsuite/gas/rx/mvfacgu.d, * testsuite/gas/rx/mvfachi.d, * testsuite/gas/rx/mvfaclo.d, * testsuite/gas/rx/mvfacmi.d, * testsuite/gas/rx/mvfc.d, * testsuite/gas/rx/mvfcp.d, * testsuite/gas/rx/mvfdc.d, * testsuite/gas/rx/mvfdr.d, * testsuite/gas/rx/mvtacgu.d, * testsuite/gas/rx/mvtachi.d, * testsuite/gas/rx/mvtaclo.d, * testsuite/gas/rx/mvtc.d, * testsuite/gas/rx/mvtcp.d, * testsuite/gas/rx/mvtdc.d, * testsuite/gas/rx/neg.d, * testsuite/gas/rx/nop.d, * testsuite/gas/rx/not.d, * testsuite/gas/rx/opecp.d, * testsuite/gas/rx/or.d, * testsuite/gas/rx/pop.d, * testsuite/gas/rx/popc.d, * testsuite/gas/rx/popm.d, * testsuite/gas/rx/push.d, * testsuite/gas/rx/pushc.d, * testsuite/gas/rx/pushm.d, * testsuite/gas/rx/r-bcc.d, * testsuite/gas/rx/r-bra.d, * testsuite/gas/rx/racl.d, * testsuite/gas/rx/racw.d, * testsuite/gas/rx/rdacl.d, * testsuite/gas/rx/rdacw.d, * testsuite/gas/rx/revl.d, * testsuite/gas/rx/revw.d, * testsuite/gas/rx/rmpa.d, * testsuite/gas/rx/rolc.d, * testsuite/gas/rx/rorc.d, * testsuite/gas/rx/rotl.d, * testsuite/gas/rx/rotr.d, * testsuite/gas/rx/round.d, * testsuite/gas/rx/rstr.d, * testsuite/gas/rx/rte.d, * testsuite/gas/rx/rtfi.d, * testsuite/gas/rx/rts.d, * testsuite/gas/rx/rtsd.d, * testsuite/gas/rx/sat.d, * testsuite/gas/rx/satr.d, * testsuite/gas/rx/save.d, * testsuite/gas/rx/sbb.d, * testsuite/gas/rx/sccnd.d, * testsuite/gas/rx/scmpu.d, * testsuite/gas/rx/setpsw.d, * testsuite/gas/rx/shar.d, * testsuite/gas/rx/shll.d, * testsuite/gas/rx/shlr.d, * testsuite/gas/rx/smovb.d, * testsuite/gas/rx/smovf.d, * testsuite/gas/rx/smovu.d, * testsuite/gas/rx/sstr.d, * testsuite/gas/rx/stnz.d, * testsuite/gas/rx/stz.d, * testsuite/gas/rx/sub.d, * testsuite/gas/rx/suntil.d, * testsuite/gas/rx/swhile.d, * testsuite/gas/rx/tst.d, * testsuite/gas/rx/utof.d, * testsuite/gas/rx/wait.d, * testsuite/gas/rx/xchg.d, * testsuite/gas/rx/xor.d: Add #source line. ld/ * testsuite/ld-elf/sec64k.exp: Use . rather than $objdir in generated source file names. * testsuite/ld-m68k/m68k-got.exp: Likewise.
251 lines
6.2 KiB
Plaintext
251 lines
6.2 KiB
Plaintext
# Expect script for run_dump_test based ld-m68k GOT tests.
|
|
# Copyright (C) 2008-2019 Free Software Foundation, Inc.
|
|
#
|
|
# This file is part of the GNU Binutils.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
|
# MA 02110-1301, USA.
|
|
#
|
|
|
|
if { ![is_elf_format] || ![istarget m68k-*-*] } {
|
|
return
|
|
}
|
|
|
|
# 1 - 1
|
|
# 2 - 8189
|
|
# 3 - 8190
|
|
# 4 - 16382
|
|
# 5 - 16385
|
|
|
|
proc gen_got_test { testname } {
|
|
global srcdir
|
|
global subdir
|
|
|
|
if [catch { set ofd [open "tmpdir/$testname.s" w] } msg] {
|
|
perror "$msg"
|
|
unresolved $testname
|
|
return
|
|
}
|
|
|
|
switch -- $testname {
|
|
"got-12" {
|
|
set start 1
|
|
set count 8189
|
|
set xgot 0
|
|
}
|
|
"got-13" {
|
|
set start 1
|
|
set count 8190
|
|
set xgot 0
|
|
}
|
|
"got-14" {
|
|
set start 1
|
|
set count 16382
|
|
set xgot 0
|
|
}
|
|
"got-15" {
|
|
set start 1
|
|
set count 16385
|
|
set xgot 0
|
|
}
|
|
"got-34" {
|
|
set start 8190
|
|
set count 16382
|
|
set xgot 0
|
|
}
|
|
"got-35" {
|
|
set start 8190
|
|
set count 16385
|
|
set xgot 0
|
|
}
|
|
"xgot-15" {
|
|
set start 1
|
|
set count 16385
|
|
set xgot 1
|
|
}
|
|
}
|
|
|
|
set func [format "sum_%05d_%05d" $start $count]
|
|
puts $ofd "\t.text"
|
|
puts $ofd "\t.align 2"
|
|
puts $ofd "\t.globl $func"
|
|
puts $ofd "\t.type $func,@function"
|
|
puts $ofd "$func:"
|
|
puts $ofd "\tlink.w %fp,#0"
|
|
puts $ofd "\tmove.l %a5,-(%sp)"
|
|
puts $ofd "\tmove.l #_GLOBAL_OFFSET_TABLE_@GOTPC, %a5"
|
|
puts $ofd "\tlea (-6, %pc, %a5), %a5"
|
|
|
|
if { $xgot == 1 } {
|
|
set symbol [format "a%05d" $start]
|
|
incr start
|
|
puts $ofd "\tlea $symbol@GOT,%a0"
|
|
puts $ofd "\tadd.l %a5,%a0"
|
|
puts $ofd "\tmove.l (%a0),%a0"
|
|
puts $ofd "\tmove.l (%a0),%d1"
|
|
for { set i $start } { $i < $count } { incr i } {
|
|
set symbol [format "a%05d" $i]
|
|
puts $ofd "\tlea $symbol@GOT,%a0"
|
|
puts $ofd "\tadd.l %a5,%a0"
|
|
puts $ofd "\tmove.l (%a0),%a0"
|
|
puts $ofd "\tmove.l (%a0),%d0"
|
|
puts $ofd "\tadd.l %d0,%d1"
|
|
}
|
|
set symbol [format "a%05d" $count]
|
|
puts $ofd "\tlea $symbol@GOT,%a0"
|
|
puts $ofd "\tadd.l %a5,%a0"
|
|
puts $ofd "\tmove.l (%a0),%a0"
|
|
puts $ofd "\tmove.l (%a0),%d0"
|
|
puts $ofd "\tadd.l %d1,%d0"
|
|
} else {
|
|
set symbol [format "a%05d" $start]
|
|
incr start
|
|
puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
|
|
puts $ofd "\tmove.l %d0,%a0"
|
|
puts $ofd "\tmove.l (%a0),%d1"
|
|
for { set i $start } { $i < $count } { incr i } {
|
|
set symbol [format "a%05d" $i]
|
|
puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
|
|
puts $ofd "\tmove.l %d0,%a0"
|
|
puts $ofd "\tmove.l (%a0),%d0"
|
|
puts $ofd "\tadd.l %d0,%d1"
|
|
}
|
|
set symbol [format "a%05d" $count]
|
|
puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
|
|
puts $ofd "\tmove.l %d0,%a0"
|
|
puts $ofd "\tmove.l (%a0),%d0"
|
|
puts $ofd "\tadd.l %d1,%d0"
|
|
}
|
|
|
|
puts $ofd "\tmove.l (%sp)+,%a5"
|
|
puts $ofd "\tunlk %fp"
|
|
puts $ofd "\trts"
|
|
puts $ofd "\t.size $func, .-$func"
|
|
|
|
close $ofd
|
|
}
|
|
|
|
proc got_test { testname } {
|
|
global srcdir
|
|
global subdir
|
|
global objdir
|
|
|
|
if [catch { set ifd [open "$srcdir/$subdir/$testname.d" r] } msg] {
|
|
perror "$msg"
|
|
unresolved $testname
|
|
return
|
|
}
|
|
if [catch { set ofd [open "tmpdir/$testname.d" w] } msg] {
|
|
perror "$msg"
|
|
unresolved $testname
|
|
return
|
|
}
|
|
|
|
switch -- $testname {
|
|
"got-single-12-ok" {
|
|
puts $ofd "#source: ./tmpdir/got-12.s"
|
|
set count 8189
|
|
}
|
|
"got-single-13-er" {
|
|
puts $ofd "#source: ./tmpdir/got-13.s"
|
|
set count 0
|
|
}
|
|
"got-negative-14-ok" {
|
|
puts $ofd "#source: ./tmpdir/got-14.s"
|
|
set count 16382
|
|
}
|
|
"got-negative-15-er" {
|
|
puts $ofd "#source: ./tmpdir/got-15.s"
|
|
set count 0
|
|
}
|
|
"got-negative-12-13-14-34-ok" {
|
|
puts $ofd "#source: ./tmpdir/got-12.s"
|
|
puts $ofd "#source: ./tmpdir/got-13.s"
|
|
puts $ofd "#source: ./tmpdir/got-14.s"
|
|
puts $ofd "#source: ./tmpdir/got-34.s"
|
|
set count 16382
|
|
}
|
|
"got-negative-12-13-14-35-er" {
|
|
puts $ofd "#source: ./tmpdir/got-12.s"
|
|
puts $ofd "#source: ./tmpdir/got-13.s"
|
|
puts $ofd "#source: ./tmpdir/got-14.s"
|
|
puts $ofd "#source: ./tmpdir/got-35.s"
|
|
set count 0
|
|
}
|
|
"got-multigot-14-ok" {
|
|
puts $ofd "#source: ./tmpdir/got-14.s"
|
|
set count 16382
|
|
}
|
|
"got-multigot-15-er" {
|
|
puts $ofd "#source: ./tmpdir/got-15.s"
|
|
set count 0
|
|
}
|
|
"got-multigot-12-13-14-34-35-ok" {
|
|
puts $ofd "#source: ./tmpdir/got-12.s"
|
|
puts $ofd "#source: ./tmpdir/got-13.s"
|
|
puts $ofd "#source: ./tmpdir/got-14.s"
|
|
puts $ofd "#source: ./tmpdir/got-34.s"
|
|
puts $ofd "#source: ./tmpdir/got-35.s"
|
|
set count 24578
|
|
}
|
|
"got-xgot-15-ok" {
|
|
puts $ofd "#source: ./tmpdir/xgot-15.s"
|
|
set count 16385
|
|
}
|
|
"got-xgot-12-13-14-15-34-35-ok" {
|
|
puts $ofd "#source: ./tmpdir/got-12.s"
|
|
puts $ofd "#source: ./tmpdir/got-13.s"
|
|
puts $ofd "#source: ./tmpdir/got-14.s"
|
|
puts $ofd "#source: ./tmpdir/xgot-15.s"
|
|
puts $ofd "#source: ./tmpdir/got-34.s"
|
|
puts $ofd "#source: ./tmpdir/got-35.s"
|
|
set count 24581
|
|
}
|
|
}
|
|
|
|
while { [gets $ifd line] != -1 } {
|
|
puts $ofd $line
|
|
}
|
|
|
|
for { set i 0 } { $i < $count } { incr i } {
|
|
puts $ofd "^\[0-9a-f\]+ \[0-9a-f\]+ R_68K_GLOB_DAT 00000000 a\[0-9\]+ \\\+ 0"
|
|
}
|
|
|
|
close $ifd
|
|
close $ofd
|
|
run_dump_test "tmpdir/$testname"
|
|
}
|
|
|
|
gen_got_test got-12
|
|
gen_got_test got-13
|
|
gen_got_test got-14
|
|
gen_got_test got-15
|
|
gen_got_test got-34
|
|
gen_got_test got-35
|
|
gen_got_test xgot-15
|
|
|
|
run_dump_test "got-1"
|
|
got_test "got-single-12-ok"
|
|
got_test "got-single-13-er"
|
|
got_test "got-negative-14-ok"
|
|
got_test "got-negative-15-er"
|
|
got_test "got-negative-12-13-14-34-ok"
|
|
got_test "got-negative-12-13-14-35-er"
|
|
got_test "got-multigot-14-ok"
|
|
got_test "got-multigot-15-er"
|
|
got_test "got-multigot-12-13-14-34-35-ok"
|
|
got_test "got-xgot-15-ok"
|
|
got_test "got-xgot-12-13-14-15-34-35-ok"
|