]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - ld/testsuite/ld-m68k/m68k-got.exp
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / ld / testsuite / ld-m68k / m68k-got.exp
CommitLineData
851b0ff7 1# Expect script for run_dump_test based ld-m68k GOT tests.
250d07de 2# Copyright (C) 2008-2021 Free Software Foundation, Inc.
851b0ff7
L
3#
4# This file is part of the GNU Binutils.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 3 of the License, or
9# (at your option) any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19# MA 02110-1301, USA.
20#
21
22if { ![is_elf_format] || ![istarget m68k-*-*] } {
23 return
24}
25
26# 1 - 1
27# 2 - 8189
28# 3 - 8190
cf869cce 29# 4 - 16382
851b0ff7
L
30# 5 - 16385
31
32proc gen_got_test { testname } {
33 global srcdir
34 global subdir
35
36 if [catch { set ofd [open "tmpdir/$testname.s" w] } msg] {
37 perror "$msg"
38 unresolved $testname
39 return
40 }
41
42 switch -- $testname {
43 "got-12" {
44 set start 1
45 set count 8189
46 set xgot 0
47 }
48 "got-13" {
49 set start 1
50 set count 8190
51 set xgot 0
52 }
53 "got-14" {
54 set start 1
cf869cce 55 set count 16382
851b0ff7
L
56 set xgot 0
57 }
58 "got-15" {
59 set start 1
60 set count 16385
61 set xgot 0
62 }
63 "got-34" {
64 set start 8190
cf869cce 65 set count 16382
851b0ff7
L
66 set xgot 0
67 }
68 "got-35" {
69 set start 8190
70 set count 16385
71 set xgot 0
72 }
73 "xgot-15" {
74 set start 1
75 set count 16385
76 set xgot 1
77 }
78 }
79
80 set func [format "sum_%05d_%05d" $start $count]
81 puts $ofd "\t.text"
82 puts $ofd "\t.align 2"
83 puts $ofd "\t.globl $func"
84 puts $ofd "\t.type $func,@function"
85 puts $ofd "$func:"
86 puts $ofd "\tlink.w %fp,#0"
87 puts $ofd "\tmove.l %a5,-(%sp)"
88 puts $ofd "\tmove.l #_GLOBAL_OFFSET_TABLE_@GOTPC, %a5"
89 puts $ofd "\tlea (-6, %pc, %a5), %a5"
90
91 if { $xgot == 1 } {
92 set symbol [format "a%05d" $start]
93 incr start
94 puts $ofd "\tlea $symbol@GOT,%a0"
95 puts $ofd "\tadd.l %a5,%a0"
96 puts $ofd "\tmove.l (%a0),%a0"
97 puts $ofd "\tmove.l (%a0),%d1"
98 for { set i $start } { $i < $count } { incr i } {
99 set symbol [format "a%05d" $i]
100 puts $ofd "\tlea $symbol@GOT,%a0"
101 puts $ofd "\tadd.l %a5,%a0"
102 puts $ofd "\tmove.l (%a0),%a0"
103 puts $ofd "\tmove.l (%a0),%d0"
104 puts $ofd "\tadd.l %d0,%d1"
105 }
106 set symbol [format "a%05d" $count]
107 puts $ofd "\tlea $symbol@GOT,%a0"
108 puts $ofd "\tadd.l %a5,%a0"
109 puts $ofd "\tmove.l (%a0),%a0"
110 puts $ofd "\tmove.l (%a0),%d0"
111 puts $ofd "\tadd.l %d1,%d0"
112 } else {
113 set symbol [format "a%05d" $start]
114 incr start
115 puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
116 puts $ofd "\tmove.l %d0,%a0"
117 puts $ofd "\tmove.l (%a0),%d1"
118 for { set i $start } { $i < $count } { incr i } {
119 set symbol [format "a%05d" $i]
120 puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
121 puts $ofd "\tmove.l %d0,%a0"
122 puts $ofd "\tmove.l (%a0),%d0"
123 puts $ofd "\tadd.l %d0,%d1"
124 }
125 set symbol [format "a%05d" $count]
126 puts $ofd "\tmove.l $symbol@GOT(%a5),%d0"
127 puts $ofd "\tmove.l %d0,%a0"
128 puts $ofd "\tmove.l (%a0),%d0"
129 puts $ofd "\tadd.l %d1,%d0"
130 }
131
132 puts $ofd "\tmove.l (%sp)+,%a5"
133 puts $ofd "\tunlk %fp"
134 puts $ofd "\trts"
135 puts $ofd "\t.size $func, .-$func"
136
137 close $ofd
138}
139
140proc got_test { testname } {
141 global srcdir
142 global subdir
143 global objdir
144
145 if [catch { set ifd [open "$srcdir/$subdir/$testname.d" r] } msg] {
146 perror "$msg"
147 unresolved $testname
148 return
149 }
150 if [catch { set ofd [open "tmpdir/$testname.d" w] } msg] {
151 perror "$msg"
152 unresolved $testname
153 return
154 }
155
156 switch -- $testname {
157 "got-single-12-ok" {
171b8e19 158 puts $ofd "#source: ./tmpdir/got-12.s"
851b0ff7
L
159 set count 8189
160 }
161 "got-single-13-er" {
171b8e19 162 puts $ofd "#source: ./tmpdir/got-13.s"
851b0ff7
L
163 set count 0
164 }
165 "got-negative-14-ok" {
171b8e19 166 puts $ofd "#source: ./tmpdir/got-14.s"
cf869cce 167 set count 16382
851b0ff7
L
168 }
169 "got-negative-15-er" {
171b8e19 170 puts $ofd "#source: ./tmpdir/got-15.s"
851b0ff7
L
171 set count 0
172 }
173 "got-negative-12-13-14-34-ok" {
171b8e19
AM
174 puts $ofd "#source: ./tmpdir/got-12.s"
175 puts $ofd "#source: ./tmpdir/got-13.s"
176 puts $ofd "#source: ./tmpdir/got-14.s"
177 puts $ofd "#source: ./tmpdir/got-34.s"
cf869cce 178 set count 16382
851b0ff7
L
179 }
180 "got-negative-12-13-14-35-er" {
171b8e19
AM
181 puts $ofd "#source: ./tmpdir/got-12.s"
182 puts $ofd "#source: ./tmpdir/got-13.s"
183 puts $ofd "#source: ./tmpdir/got-14.s"
184 puts $ofd "#source: ./tmpdir/got-35.s"
851b0ff7
L
185 set count 0
186 }
187 "got-multigot-14-ok" {
171b8e19 188 puts $ofd "#source: ./tmpdir/got-14.s"
cf869cce 189 set count 16382
851b0ff7
L
190 }
191 "got-multigot-15-er" {
171b8e19 192 puts $ofd "#source: ./tmpdir/got-15.s"
851b0ff7
L
193 set count 0
194 }
195 "got-multigot-12-13-14-34-35-ok" {
171b8e19
AM
196 puts $ofd "#source: ./tmpdir/got-12.s"
197 puts $ofd "#source: ./tmpdir/got-13.s"
198 puts $ofd "#source: ./tmpdir/got-14.s"
199 puts $ofd "#source: ./tmpdir/got-34.s"
200 puts $ofd "#source: ./tmpdir/got-35.s"
cf869cce 201 set count 24578
851b0ff7
L
202 }
203 "got-xgot-15-ok" {
171b8e19 204 puts $ofd "#source: ./tmpdir/xgot-15.s"
851b0ff7
L
205 set count 16385
206 }
207 "got-xgot-12-13-14-15-34-35-ok" {
171b8e19
AM
208 puts $ofd "#source: ./tmpdir/got-12.s"
209 puts $ofd "#source: ./tmpdir/got-13.s"
210 puts $ofd "#source: ./tmpdir/got-14.s"
211 puts $ofd "#source: ./tmpdir/xgot-15.s"
212 puts $ofd "#source: ./tmpdir/got-34.s"
213 puts $ofd "#source: ./tmpdir/got-35.s"
851b0ff7
L
214 set count 24581
215 }
216 }
217
218 while { [gets $ifd line] != -1 } {
219 puts $ofd $line
220 }
221
222 for { set i 0 } { $i < $count } { incr i } {
223 puts $ofd "^\[0-9a-f\]+ \[0-9a-f\]+ R_68K_GLOB_DAT 00000000 a\[0-9\]+ \\\+ 0"
224 }
225
226 close $ifd
227 close $ofd
228 run_dump_test "tmpdir/$testname"
229}
230
231gen_got_test got-12
232gen_got_test got-13
233gen_got_test got-14
234gen_got_test got-15
235gen_got_test got-34
236gen_got_test got-35
237gen_got_test xgot-15
238
239run_dump_test "got-1"
240got_test "got-single-12-ok"
241got_test "got-single-13-er"
242got_test "got-negative-14-ok"
243got_test "got-negative-15-er"
244got_test "got-negative-12-13-14-34-ok"
245got_test "got-negative-12-13-14-35-er"
246got_test "got-multigot-14-ok"
247got_test "got-multigot-15-er"
248got_test "got-multigot-12-13-14-34-35-ok"
249got_test "got-xgot-15-ok"
250got_test "got-xgot-12-13-14-15-34-35-ok"