1# Expect script for various ARM ELF tests.
2#   Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
3#
4# This file is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation; either version 2 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program; if not, write to the Free Software
16# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
17#
18
19if {[istarget "arm-*-vxworks"]} {
20    set armvxworkstests {
21	{"VxWorks shared library test 1" "-shared -Tvxworks1.ld"
22	 "" {vxworks1-lib.s}
23	 {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}
24	  {readelf --symbols vxworks1-lib.nd}}
25	 "libvxworks1.so"}
26	{"VxWorks executable test 1 (dynamic)" \
27	 "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic"
28	 "" {vxworks1.s}
29	 {{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}}
30	 "vxworks1"}
31	{"VxWorks executable test 2 (dynamic)" \
32	 "-Tvxworks1.ld -q --force-dynamic"
33	 "" {vxworks2.s}
34	 {{readelf --segments vxworks2.sd}}
35	 "vxworks2"}
36	{"VxWorks executable test 2 (static)"
37	 "-Tvxworks1.ld"
38	 "" {vxworks2.s}
39	 {{readelf --segments vxworks2-static.sd}}
40	 "vxworks2"}
41    }
42    run_ld_link_tests $armvxworkstests
43    run_dump_test "vxworks1-static"
44}
45
46# Exclude non-ARM-ELF targets.
47
48if { ![is_elf_format] || ![istarget "arm*-*-*"] } {
49    return
50}
51
52# List contains test-items with 3 items followed by 2 lists:
53# 0:name 1:ld options 2:assembler options
54# 3:filenames of assembler files 4: action and options. 5: name of output file
55
56# Actions:
57# objdump: Apply objdump options on result.  Compare with regex (last arg).
58# nm: Apply nm options on result.  Compare with regex (last arg).
59# readelf: Apply readelf options on result.  Compare with regex (last arg).
60
61set armelftests {
62    {"Simple non-PIC shared library" "-shared" "" {arm-lib.s}
63     {{objdump -fdw arm-lib.d} {objdump -Rw arm-lib.r}}
64     "arm-lib.so"}
65    {"Simple PIC shared library" "-shared" "" {arm-lib-plt32.s}
66     {{objdump -fdw arm-lib-plt32.d} {objdump -Rw arm-lib-plt32.r}}
67     "arm-lib-plt32.so"}
68    {"Simple dynamic application" "tmpdir/arm-lib.so" "" {arm-app.s}
69     {{objdump -fdw arm-app.d} {objdump -Rw arm-app.r}}
70     "arm-app"}
71    {"Simple static application" "" "" {arm-static-app.s}
72     {{objdump -fdw arm-static-app.d} {objdump -rw arm-static-app.r}}
73     "arm-static-app"}
74    {"Non-pcrel function reference" "tmpdir/arm-lib.so" "" {arm-app-abs32.s}
75     {{objdump -fdw arm-app-abs32.d} {objdump -Rw arm-app-abs32.r}}
76     "arm-app-abs32"}
77    {"Mixed ARM/Thumb shared library" "-shared -T arm-lib.ld" ""
78     {mixed-lib.s}
79     {{objdump -fdw mixed-lib.d} {objdump -Rw mixed-lib.r}
80      {readelf -Ds mixed-lib.sym}}
81     "mixed-lib.so"}
82    {"Mixed ARM/Thumb dynamic application" "tmpdir/mixed-lib.so -T arm-dyn.ld" ""
83     {mixed-app.s}
84     {{objdump -fdw mixed-app.d} {objdump -Rw mixed-app.r}
85      {readelf -Ds mixed-app.sym}}
86     "mixed-app"}
87    {"Mixed ARM/Thumb arch5 dynamic application" "tmpdir/mixed-lib.so -T arm-dyn.ld --use-blx" ""
88     {mixed-app.s}
89     {{objdump -fdw mixed-app-v5.d} {objdump -Rw mixed-app.r}
90      {readelf -Ds mixed-app.sym}}
91     "mixed-app-v5"}
92    {"target1-abs" "-static --target1-abs -T arm.ld" "" {arm-target1.s}
93     {{objdump -s arm-target1-abs.d}}
94     "arm-target1-abs"}
95    {"target1-rel" "-static --target1-rel -T arm.ld" "" {arm-target1.s}
96     {{objdump -s arm-target1-rel.d}}
97     "arm-target1-rel"}
98    {"target2-rel" "-static --target2=rel -T arm.ld" "" {arm-target2.s}
99     {{objdump -s arm-target2-rel.d}}
100     "arm-target2-rel"}
101    {"target2-abs" "-static --target2=abs -T arm.ld" "" {arm-target2.s}
102     {{objdump -s arm-target2-abs.d}}
103     "arm-target2-abs"}
104    {"target2-got-rel" "-static --target2=got-rel -T arm.ld" "" {arm-target2.s}
105     {{objdump -s arm-target2-got-rel.d}}
106     "arm-target2-got-rel"}
107    {"arm-rel31" "-static -T arm.ld" "" {arm-rel31.s}
108     {{objdump -s arm-rel31.d}}
109     "arm-rel31"}
110    {"arm-call" "-static -T arm.ld" "-meabi=4" {arm-call1.s arm-call2.s}
111     {{objdump -d arm-call.d}}
112     "arm-call"}
113    {"TLS shared library" "-shared -T arm-lib.ld" "" {tls-lib.s}
114     {{objdump -fdw tls-lib.d} {objdump -Rw tls-lib.r}}
115     "tls-lib.so"}
116    {"TLS dynamic application" "-T arm-dyn.ld tmpdir/tls-lib.so" "" {tls-app.s}
117     {{objdump -fdw tls-app.d} {objdump -Rw tls-app.r}}
118     "tls-app"}
119    {"Thumb entry point" "-T arm.ld" "" {thumb-entry.s}
120     {{readelf -h thumb-entry.d}}
121     "thumb-entry"}
122    {"thumb-rel32" "-static -T arm.ld" "" {thumb-rel32.s}
123     {{objdump -s thumb-rel32.d}}
124     "thumb-rel32"}
125}
126
127run_ld_link_tests $armelftests
128