URL
https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk
Subversion Repositories open8_urisc
[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [ld/] [testsuite/] [ld-m68k/] [m68k-got.exp] - Rev 77
Compare with Previous | Blame | View Log
# Expect script for run_dump_test based ld-m68k GOT tests.# Copyright 2008, 2009 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 - 16385proc gen_got_test { testname } {global srcdirglobal subdirif [catch { set ofd [open "tmpdir/$testname.s" w] } msg] {perror "$msg"unresolved $testnamereturn}switch -- $testname {"got-12" {set start 1set count 8189set xgot 0}"got-13" {set start 1set count 8190set xgot 0}"got-14" {set start 1set count 16382set xgot 0}"got-15" {set start 1set count 16385set xgot 0}"got-34" {set start 8190set count 16382set xgot 0}"got-35" {set start 8190set count 16385set xgot 0}"xgot-15" {set start 1set count 16385set 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 startputs $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 startputs $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 srcdirglobal subdirglobal objdirif [catch { set ifd [open "$srcdir/$subdir/$testname.d" r] } msg] {perror "$msg"unresolved $testnamereturn}if [catch { set ofd [open "tmpdir/$testname.d" w] } msg] {perror "$msg"unresolved $testnamereturn}switch -- $testname {"got-single-12-ok" {puts $ofd "#source: $objdir/tmpdir/got-12.s"set count 8189}"got-single-13-er" {puts $ofd "#source: $objdir/tmpdir/got-13.s"set count 0}"got-negative-14-ok" {puts $ofd "#source: $objdir/tmpdir/got-14.s"set count 16382}"got-negative-15-er" {puts $ofd "#source: $objdir/tmpdir/got-15.s"set count 0}"got-negative-12-13-14-34-ok" {puts $ofd "#source: $objdir/tmpdir/got-12.s"puts $ofd "#source: $objdir/tmpdir/got-13.s"puts $ofd "#source: $objdir/tmpdir/got-14.s"puts $ofd "#source: $objdir/tmpdir/got-34.s"set count 16382}"got-negative-12-13-14-35-er" {puts $ofd "#source: $objdir/tmpdir/got-12.s"puts $ofd "#source: $objdir/tmpdir/got-13.s"puts $ofd "#source: $objdir/tmpdir/got-14.s"puts $ofd "#source: $objdir/tmpdir/got-35.s"set count 0}"got-multigot-14-ok" {puts $ofd "#source: $objdir/tmpdir/got-14.s"set count 16382}"got-multigot-15-er" {puts $ofd "#source: $objdir/tmpdir/got-15.s"set count 0}"got-multigot-12-13-14-34-35-ok" {puts $ofd "#source: $objdir/tmpdir/got-12.s"puts $ofd "#source: $objdir/tmpdir/got-13.s"puts $ofd "#source: $objdir/tmpdir/got-14.s"puts $ofd "#source: $objdir/tmpdir/got-34.s"puts $ofd "#source: $objdir/tmpdir/got-35.s"set count 24578}"got-xgot-15-ok" {puts $ofd "#source: $objdir/tmpdir/xgot-15.s"set count 16385}"got-xgot-12-13-14-15-34-35-ok" {puts $ofd "#source: $objdir/tmpdir/got-12.s"puts $ofd "#source: $objdir/tmpdir/got-13.s"puts $ofd "#source: $objdir/tmpdir/got-14.s"puts $ofd "#source: $objdir/tmpdir/xgot-15.s"puts $ofd "#source: $objdir/tmpdir/got-34.s"puts $ofd "#source: $objdir/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 $ifdclose $ofdrun_dump_test "tmpdir/$testname"}gen_got_test got-12gen_got_test got-13gen_got_test got-14gen_got_test got-15gen_got_test got-34gen_got_test got-35gen_got_test xgot-15run_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"
