1 # Expect script
for AIX
5.2+ tests
2 # Copyright
(C
) 2009-2024 Free Software Foundation
, Inc.
4 # This file is part of the GNU Binutils.
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.
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.
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
,
22 if { ![istarget
"powerpc*-*-aix\[5-9\]*"] && ![istarget "rs6000-*-aix\[5-9\]*"]
23 ||
[istarget
"*-*-aix5.\[01\]*"] } {
27 # Run a run_link_tests
-style test
for AIX. SIZE selects the target size
28 #
(32 or
64). The other arguments are elements of a run_link_tests test.
30 # Make the following changes before running the test
:
32 #
- Mention SIZE in the test
name.
33 #
- Add
"-aSIZE --defsym size=SIZE" to the assembler options.
34 #
- Add the source directory to
any "-bI:" and "-bE:" linker options.
35 #
- Add
"-bSIZE" to the linker options.
36 #
- Add
"-XSIZE" to the archiver options.
37 #
- Replace
"SIZE" with SIZE in TOOLS.
38 #
- When testing
64-bit targets
:
39 #
- Turn tmpdir
/aix
-* into tmpdir
/aix64
-*.
40 #
- Turn tmpdir
/libaix
-* into tmpdir
/libaix64
-*.
41 #
- Turn
-laix
* into
-laix64
*, to compensate
for the above.
42 proc run_aix_test
{ size
name ldopts asopts sources tools output
} {
46 regsub
-all
{tmpdir
/aix
-} $ldopts
{tmpdir
/aix64
-} ldopts
47 regsub
{^aix
} $output
{aix64
} output
49 regsub
-all
-- {-laix
-} $ldopts
{-laix64
-} ldopts
50 regsub
{^libaix
} $output
{libaix64
} output
52 if { [regexp
{.a$
} $output
] } {
53 append ldopts
" -X$size"
55 regsub
-all
{(-b
[IE
]):} $ldopts
"\\1:$srcdir/$subdir/" ldopts
56 append ldopts
" -b$size"
58 regsub
-all
{SIZE
} $tools $size tools
59 run_ld_link_tests
[list
[list
"$name ($size-bit)" \
61 "$asopts -a$size --defsym size=$size" \
67 foreach file
{ "aix-lineno-1.txt" } {
68 remote_upload host
"$srcdir/$subdir/$file" "tmpdir/$file"
72 {"Absolute branch test 1"
73 "-shared -bI:aix-abs-branch-1.im -bE:aix-abs-branch-1.ex"
74 "" {aix-abs-branch-1.s}
75 {{objdump
{-dR
} aix
-abs-branch
-1.dd
} {nm
{} aix
-abs-branch
-1-SIZE.nd
}}
76 "aix-abs-branch-1.so"}
78 {"Relocations against absolute symbols 1"
79 "-shared -bI:aix-abs-reloc-1.im -bE:aix-abs-reloc-1.ex"
80 {} {aix
-abs-reloc
-1.s
}
81 {{objdump
-sRj.data aix
-abs-reloc
-1-SIZE.od
}
82 {nm
{} aix
-abs-reloc
-1-SIZE.nd
}}
85 {"Core sections test 1" "-shared -bE:aix-core-sec-1.ex"
87 {{objdump
-h aix
-core
-sec
-1.hd
}}
90 {"Core sections test 2" "-shared -bE:aix-core-sec-2.ex"
92 {{objdump
-h aix
-core
-sec
-2.hd
}}
95 {"Core sections test 3" "-shared -bE:aix-core-sec-3.ex"
97 {{objdump
-h aix
-core
-sec
-3.hd
}}
100 {"Duplicate symbol check 1 (rel)" "-r"
101 "" {aix-no-dup-syms-1a.s aix-no-dup-syms-1b.s}
102 {{nm
{} aix
-no
-dup
-syms
-1-rel.nd
} {objdump
-r aix
-no
-dup
-syms
-1-rel.rd
}}
103 "aix-no-dup-syms-1.o"}
105 {"Duplicate symbol check 1 (shared)"
106 "-shared --allow-multiple-definition -bI:aix-no-dup-syms-1.im -bE:aix-no-dup-syms-1.ex"
107 "" {aix-no-dup-syms-1a.s aix-no-dup-syms-1b.s}
108 {{nm
{} aix
-no
-dup
-syms
-1-dso
-SIZE.nd
}
109 {objdump
-r aix
-no
-dup
-syms
-1-dso
-SIZE.rd
}
110 {nm
-D aix
-no
-dup
-syms
-1-dso
-SIZE.dnd
}
111 {objdump
-R aix
-no
-dup
-syms
-1-dso
-SIZE.drd
}}
112 "aix-no-dup-syms-1.so"}
114 {"Export test 1 (archive)" ""
116 {} "libaix-export-1.a"}
118 {"Export test 1 (object)" "-r"
122 {"Export test 1 (-bexpall)"
123 "-shared -bexpall tmpdir/aix-export-1.o -Ltmpdir -laix-export-1"
125 {{objdump
-dj.data aix
-export-1-all
-SIZE.dd
}}
126 "aix-export-1-all.so"}
128 {"Export test 1 (-bexpfull)"
129 "-shared -bexpfull tmpdir/aix-export-1.o -Ltmpdir -laix-export-1"
131 {{objdump
-dj.data aix
-export-1-full
-SIZE.dd
}}
132 "aix-export-1-full.so"}
134 {"Export test 2" "-shared -bexpall"
136 {{nm
-D aix
-export-2-SIZE.nd
}} "aix-export-2.so"}
138 {"Garbage collection test 1"
139 "-shared -binitfini:init_function:fini_function -bE:aix-gc-1.ex"
141 {{objdump
{-dz
-j.
text -j.data
} aix
-gc
-1-SIZE.dd
}
142 {nm
{} aix
-gc
-1-SIZE.nd
}}
146 "-shared -bE:aix-glink-1.ex --unresolved-symbols=ignore-all"
148 {{objdump
{-D
-j.
text -j.data
} aix
-glink
-1-SIZE.dd
}}
151 {"Glink test 2 (part a)" "-shared -bE:aix-glink-2a.ex"
156 {"Glink test 2 (part b)" "-r"
161 {"Glink test 2 (part c)" "-shared -bE:aix-glink-2c.ex"
167 "-e.main tmpdir/aix-glink-2a.so tmpdir/aix-glink-2b.ro tmpdir/aix-glink-2c.so"
169 {{objdump
-d aix
-glink
-2-SIZE.dd
}}
172 {"Glink test 3 (shared library a)"
175 {} "aix-glink-3a.so"}
177 {"Glink test 3 (shared library b)"
180 {} "aix-glink-3b.so"}
182 {"Glink test 3 (main test)"
183 "-bnoautoimp tmpdir/aix-glink-3b.so tmpdir/aix-glink-3a.so"
185 {{objdump
-d aix
-glink
-3-SIZE.dd
}}
188 {"Line number test 1 (no discards)" "-e.main"
190 {{objdump
-dS aix
-lineno
-1a
-SIZE.dd
} {nm
{} aix
-lineno
-1a
-SIZE.nd
}}
193 {"Line number test 1 (discard locals)" "-e.main -x"
195 {{objdump
-dS aix
-lineno
-1b
-SIZE.dd
} {nm
{} aix
-lineno
-1b
-SIZE.nd
}}
198 {"Relocatable test 1" "-r"
200 {{objdump
-hr aix
-rel
-1.od
}} "aix-rel-1.ro"}
202 {".ref test 1" "-efoo1"
204 {{objdump
-dr aix
-ref
-1-SIZE.od
}}
207 {"Weak test 1 (rel)" "-r"
208 "" {aix-weak-1a.s aix-weak-1b.s}
209 {{nm
{} aix
-weak
-1-rel.nd
} {objdump
-h aix
-weak
-1-rel.hd
}}
212 {"Weak test 1 (shared, nogc)" "-shared -bE:aix-weak-1.ex -bnogc"
213 "" {aix-weak-1a.s aix-weak-1b.s}
214 {{nm
{} aix
-weak
-1-dso
-SIZE.nd
} {objdump
-h aix
-weak
-1-dso
-SIZE.hd
}
215 {nm
-D aix
-weak
-1-dso
-SIZE.dnd
}}
216 "aix-weak-1-nogc.so"}
218 {"Weak test 1 (shared, gc)" "-shared -bE:aix-weak-1.ex"
219 "" {aix-weak-1a.s aix-weak-1b.s}
220 {{nm
{} aix
-weak
-1-gcdso
-SIZE.nd
} {objdump
-h aix
-weak
-1-gcdso
-SIZE.hd
}
221 {nm
-D aix
-weak
-1-gcdso
-SIZE.dnd
}}
224 {"Weak test 2 (library 1)" "-shared -bE:aix-weak-2a.ex"
226 {{nm
-D aix
-weak
-2a
-SIZE.nd
}}
229 {"Weak test 2 (library 2)" "-shared -bE:aix-weak-2a.ex"
231 {{nm
-D aix
-weak
-2b
-SIZE.nd
}}
234 {"Weak test 2 (main library)"
235 "-shared -bE:aix-weak-2c.ex tmpdir/aix-weak-2a.so tmpdir/aix-weak-2b.so"
237 {{nm
{} aix
-weak
-2c
-SIZE.nd
} {objdump
{-sj.data
-R
} aix
-weak
-2c
-SIZE.od
}}
240 {"Weak test 3 (library)" "-shared -bE:aix-weak-3a.ex"
245 {"Weak test 3 (main, dynamic)" "-e.main tmpdir/aix-weak-3a.so"
247 {{objdump
-Dzrj.data aix
-weak
-3-SIZE.dd
}}
250 {"TOC test 1" "-shared -bE:aix-toc-1.ex"
251 "" {aix-toc-1a.s aix-toc-1b.s}
252 {{objdump
-dr aix
-toc
-1-SIZE.dd
}}
255 {"Negative relocation test 1" "-shared -bE:aix-neg-reloc.ex"
257 {{objdump
-dr aix
-neg
-reloc
-SIZE.d
}}
262 foreach test $aix52tests
{
263 foreach
{ name ldopts asopts sources tools output
} $test
{
264 run_aix_test
32 $
name $ldopts $asopts $sources $tools $output
265 run_aix_test
64 $
name $ldopts $asopts $sources $tools $output
269 run_dump_test
"aix-glink-1-32"
270 run_dump_test
"aix-glink-1-64"
271 run_dump_test
"aix-glink-3-32"
272 run_dump_test
"aix-glink-3-64"
273 run_dump_test
"aix-weak-3-32"
274 run_dump_test
"aix-weak-3-64"
277 # Tests added
for features in AIX
7+.
280 {"Large TOC test 1" "-shared -bE:aix-largetoc-1.ex"
281 "" {aix-largetoc-1.s}
282 {{objdump
-dr aix
-largetoc
-1-SIZE.d
}}
285 {"TLS relocations" "-shared -bE:aix-tls-reloc.ex"
287 {{objdump
{-dr
-j.data
} aix
-tls
-reloc
-SIZE.dd
}
288 {objdump
{-dr
-j.tdata
-j.tbss
} aix
-tls
-reloc
-SIZE.dt
}}
291 {"TLS section" "-shared -bE:aix-tls-section.ex"
292 "" {aix-tls-section.s}
293 {{objdump
-hw aix
-tls
-section
-SIZE.d
}}
294 "aix-tls-section.so"}
297 foreach test $aix7tests
{
298 foreach
{ name ldopts asopts sources tools output
} $test
{
299 run_aix_test
32 $
name $ldopts $asopts $sources $tools $output
300 run_aix_test
64 $
name $ldopts $asopts $sources $tools $output