OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [ld/] [testsuite/] [ld-sh/] [sh64/] [relfail.exp] - Blame information for rev 816

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
# Expect script for ld-sh tests
2
#   Copyright (C) 2001, 2002, 2003, 2004, 2007 Free Software Foundation
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
 
22
# Test SH reloc failures - that is, cases that ld must not allow.
23
 
24
if ![istarget sh64-*-*] {
25
    return
26
}
27
 
28
if [istarget sh64-*-linux*] {
29
    set emul32 "shlelf32_linux"
30
    set oformat32 "elf32-sh64-linux"
31
    set startsym "_start"
32
    set doabi64 0
33
} elseif { [istarget sh64*-*-netbsd*] || [istarget sh5*-*-netbsd*] } then {
34
    set emul32 "shelf32_nbsd"
35
    set oformat32 "elf32-sh64-nbsd"
36
    set startsym "__start"
37
    set doabi64 1
38
    set emul64 "shelf64_nbsd"
39
    set oformat64 "elf64-sh64-nbsd"
40
} else {
41
    set emul32 "shelf32"
42
    set oformat32 "elf32-sh64"
43
    set startsym "start"
44
    set doabi64 1
45
    set emul64 "shelf64"
46
    set oformat64 "elf64-sh64"
47
}
48
 
49
# opcode, asflags, ldflags, expected or "" for fail
50
# opcode blank means rebuild relfail.o and set default as/ld options
51
 
52
set sh64abi32relfailtests {
53
 
54
    { "" "-isa=shcompact -abi=32" "-m $emul32 -Ttext 0x1000 --oformat $oformat32" "" }
55
    { "mov.l lab,r0;.align 3;lab:nop" "" "" "mov.l 1008" }
56
    { "mov.l to0,r0" "" "" "mov.l 1010" }
57
    { "mov.l to1,r0" "" "" "" }
58
    { "mov.l to2,r0" "" "" "" }
59
    { "mov.l to3,r0" "" "" "" }
60
    { "mov.l to4,r0" "" "" "mov.l 1014" }
61
 
62
    { "" "-isa=shmedia -abi=32 -no-expand" "-m $emul32 -Ttext 0x1000 --oformat $oformat32" "" }
63
    { "pta lab,tr0;.align 3;lab:nop" "" "" "pta.*1008" }
64
 
65
    { "ld.q r0,datalabel to0 - 0x1000,r0" "" "" "ld.q.*,16," }
66
    { "ld.q r0,datalabel to1 - 0x1000,r0" "" "" "" }
67
    { "ld.q r0,datalabel to2 - 0x1000,r0" "" "" "" }
68
    { "ld.q r0,datalabel to3 - 0x1000,r0" "" "" "" }
69
    { "ld.q r0,datalabel to4 - 0x1000,r0" "" "" "" }
70
 
71
    { "ld.l r0,datalabel to0 - 0x1000,r0" "" "" "ld.l.*,16," }
72
    { "ld.l r0,datalabel to1 - 0x1000,r0" "" "" "" }
73
    { "ld.l r0,datalabel to2 - 0x1000,r0" "" "" "" }
74
    { "ld.l r0,datalabel to3 - 0x1000,r0" "" "" "" }
75
    { "ld.l r0,datalabel to4 - 0x1000,r0" "" "" "ld.l.*,20," }
76
 
77
    { "ld.w r0,datalabel to0 - 0x1000,r0" "" "" "ld.w.*,16," }
78
    { "ld.w r0,datalabel to1 - 0x1000,r0" "" "" "" }
79
    { "ld.w r0,datalabel to2 - 0x1000,r0" "" "" "ld.w.*,18," }
80
    { "ld.w r0,datalabel to3 - 0x1000,r0" "" "" "" }
81
    { "ld.w r0,datalabel to4 - 0x1000,r0" "" "" "ld.w.*,20," }
82
 
83
}
84
 
85
set sh64abi64relfailtests {
86
 
87
    { "" "-isa=shmedia -abi=64 -no-expand" "-m $emul64 -Ttext 0x1000 --oformat $oformat64" "" }
88
    { "pta lab,tr0;.align 3;lab:nop" "" "" "pta.*1008" }
89
    { "pta datalabel to0,tr0" "" "" "pta.*1010" }
90
    { "pta datalabel to1,tr0" "" "" "pta.*1011" }
91
    { "pta datalabel to2,tr0" "" "" "" }
92
    { "pta datalabel to3,tr0" "" "" "" }
93
    { "pta datalabel to4,tr0" "" "" "pta.*1014" }
94
 
95
    { "ld.q r0,datalabel to0 - 0x1000,r0" "" "" "ld.q.*,16," }
96
    { "ld.q r0,datalabel to1 - 0x1000,r0" "" "" "" }
97
    { "ld.q r0,datalabel to2 - 0x1000,r0" "" "" "" }
98
    { "ld.q r0,datalabel to3 - 0x1000,r0" "" "" "" }
99
    { "ld.q r0,datalabel to4 - 0x1000,r0" "" "" "" }
100
 
101
    { "ld.l r0,datalabel to0 - 0x1000,r0" "" "" "ld.l.*,16," }
102
    { "ld.l r0,datalabel to1 - 0x1000,r0" "" "" "" }
103
    { "ld.l r0,datalabel to2 - 0x1000,r0" "" "" "" }
104
    { "ld.l r0,datalabel to3 - 0x1000,r0" "" "" "" }
105
    { "ld.l r0,datalabel to4 - 0x1000,r0" "" "" "ld.l.*,20," }
106
 
107
    { "ld.w r0,datalabel to0 - 0x1000,r0" "" "" "ld.w.*,16," }
108
    { "ld.w r0,datalabel to1 - 0x1000,r0" "" "" "" }
109
    { "ld.w r0,datalabel to2 - 0x1000,r0" "" "" "ld.w.*,18," }
110
    { "ld.w r0,datalabel to3 - 0x1000,r0" "" "" "" }
111
    { "ld.w r0,datalabel to4 - 0x1000,r0" "" "" "ld.w.*,20," }
112
 
113
}
114
 
115
proc run_sh64relfailtests {sh64relfailtests} {
116
    global ld
117
    global as
118
    global nm
119
    global objdump
120
    global readelf
121
    global srcdir
122
    global subdir
123
    global emul32
124
    global emul64
125
    global oformat32
126
    global oformat64
127
    global startsym
128
 
129
    set testindex 0
130
    set is_unresolved 0
131
 
132
    foreach testentry $sh64relfailtests {
133
        set opcode [lindex $testentry 0]
134
        set as_options [lindex $testentry 1]
135
        set ld_options [subst [lindex $testentry 2]]
136
        set expect_fail [lindex $testentry 3]
137
 
138
        set testname "SH64 relfail $opcode $as_options $ld_options"
139
 
140
        set objfiles {}
141
 
142
        incr testindex
143
 
144
        if {$opcode == ""} {
145
            set def_as_options $as_options
146
            set def_ld_options $ld_options
147
            set is_unresolved 0
148
            set baseobj "tmpdir/relfail-$testindex.o"
149
            if ![ld_assemble $as "$as_options $srcdir/$subdir/relfail.s" $baseobj] {
150
                set is_unresolved 1
151
            }
152
            continue
153
        }
154
 
155
        if {$as_options == ""} {
156
            set as_options $def_as_options
157
        }
158
        if {$ld_options == ""} {
159
            set ld_options $def_ld_options
160
        }
161
 
162
        if { $is_unresolved } {
163
            unresolved $testname
164
            continue
165
        }
166
 
167
        set asm [open "tmpdir/relfail-$testindex.s" "w"]
168
        puts $asm " .text"
169
        puts $asm " .global $startsym"
170
        puts $asm "$startsym:"
171
        puts $asm " $opcode"
172
        close $asm
173
 
174
        if ![ld_assemble $as "$as_options tmpdir/relfail-$testindex.s" "tmpdir/relfail-$testindex.o"] {
175
            unresolved $testname
176
            continue
177
        }
178
 
179
        set binfile "tmpdir/relfail-$testindex.x"
180
 
181
        file delete $binfile
182
        set objects "tmpdir/relfail-$testindex.o $baseobj"
183
        set result [ld_simple_link $ld $binfile "--no-warn-mismatch $ld_options $objects"]
184
 
185
        set exists [file exists $binfile]
186
        if {$exists && $expect_fail == ""} {
187
            verbose "$testname: file $binfile exists when it shouldn't" 1
188
            catch "exec $objdump -d $binfile" objdump_output
189
            verbose $objdump_output 1
190
            fail "$testname (file exists)"
191
            continue
192
        }
193
        if {!$exists && $expect_fail != ""} {
194
            verbose "$testname: file $binfile doesn't exist when it should" 1
195
            fail "$testname (file missing)"
196
            continue
197
        }
198
 
199
        if {$exists} {
200
            catch "exec $objdump -d $binfile" objdump_output
201
            regsub -all {[      ][      ]*} $objdump_output " " objdump_short
202
            if ![regexp $expect_fail $objdump_short junk] {
203
                verbose $objdump_output 1
204
                fail "$testname (incorrect reloc)"
205
                continue
206
            }
207
        }
208
 
209
        file delete "tmpdir/relfail-$testindex.s"
210
        file delete "tmpdir/relfail-$testindex.o"
211
        file delete $binfile
212
        pass $testname
213
    }
214
}
215
 
216
run_sh64relfailtests $sh64abi32relfailtests
217
if {$doabi64} {
218
    run_sh64relfailtests $sh64abi64relfailtests
219
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.