1 # Expect script
for AIX
5.2+ tests
2 # Copyright
2009 Free Software Foundation
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\]*"]
23 ||
[istarget
"powerpc*-*-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.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.od
} {nm
{} aix
-abs-reloc
-1.nd
}}
84 {"Core sections test 1" "-shared -bE:aix-core-sec-1.ex"
86 {{objdump
-h aix
-core
-sec
-1.hd
}}
89 {"Core sections test 2" "-shared -bE:aix-core-sec-2.ex"
91 {{objdump
-h aix
-core
-sec
-2.hd
}}
94 {"Core sections test 3" "-shared -bE:aix-core-sec-3.ex"
96 {{objdump
-h aix
-core
-sec
-3.hd
}}
99 {"Duplicate symbol check 1 (rel)" "-r"
100 "" {aix-no-dup-syms-1a.s aix-no-dup-syms-1b.s}
101 {{nm
{} aix
-no
-dup
-syms
-1-rel.nd
} {objdump
-r aix
-no
-dup
-syms
-1-rel.rd
}}
102 "aix-no-dup-syms-1.o"}
104 {"Duplicate symbol check 1 (shared)"
105 "-shared --allow-multiple-definition -bI:aix-no-dup-syms-1.im -bE:aix-no-dup-syms-1.ex"
106 "" {aix-no-dup-syms-1a.s aix-no-dup-syms-1b.s}
107 {{nm
{} aix
-no
-dup
-syms
-1-dso.nd
} {objdump
-r aix
-no
-dup
-syms
-1-dso.rd
}
108 {nm
-D aix
-no
-dup
-syms
-1-dso.dnd
} {objdump
-R aix
-no
-dup
-syms
-1-dso.drd
}}
109 "aix-no-dup-syms-1.so"}
111 {"Export test 1 (archive)" ""
113 {} "libaix-export-1.a"}
115 {"Export test 1 (object)" "-r"
119 {"Export test 1 (-bexpall)"
120 "-shared -bexpall tmpdir/aix-export-1.o -Ltmpdir -laix-export-1"
122 {{objdump
-dj.data aix
-export-1-all.dd
}}
123 "aix-export-1-all.so"}
125 {"Export test 1 (-bexpfull)"
126 "-shared -bexpfull tmpdir/aix-export-1.o -Ltmpdir -laix-export-1"
128 {{objdump
-dj.data aix
-export-1-full.dd
}}
129 "aix-export-1-full.so"}
131 {"Export test 2" "-shared -bexpall"
133 {{nm
-D aix
-export-2.nd
}} "aix-export-2.so"}
135 {"Garbage collection test 1"
136 "-shared -binitfini:init_function:fini_function -bE:aix-gc-1.ex"
138 {{objdump
{-dz
-j.
text -j.data
} aix
-gc
-1-SIZE.dd
}
143 "-shared -bE:aix-glink-1.ex --unresolved-symbols=ignore-all"
145 {{objdump
{-D
-j.
text -j.data
} aix
-glink
-1-SIZE.dd
}}
148 {"Glink test 2 (part a)" "-shared -bE:aix-glink-2a.ex"
153 {"Glink test 2 (part b)" "-r"
158 {"Glink test 2 (part c)" "-shared -bE:aix-glink-2c.ex"
164 "-e.main tmpdir/aix-glink-2a.so tmpdir/aix-glink-2b.ro tmpdir/aix-glink-2c.so"
166 {{objdump
-d aix
-glink
-2-SIZE.dd
}}
169 {"Glink test 3 (shared library a)"
172 {} "aix-glink-3a.so"}
174 {"Glink test 3 (shared library b)"
177 {} "aix-glink-3b.so"}
179 {"Glink test 3 (main test)"
180 "-bnoautoimp tmpdir/aix-glink-3b.so tmpdir/aix-glink-3a.so"
182 {{objdump
-d aix
-glink
-3.dd
}}
185 {"Line number test 1 (no discards)" "-e.main"
187 {{objdump
-dS aix
-lineno
-1a.dd
} {nm
{} aix
-lineno
-1a.nd
}}
190 {"Line number test 1 (discard locals)" "-e.main -x"
192 {{objdump
-dS aix
-lineno
-1b.dd
} {nm
{} aix
-lineno
-1b.nd
}}
195 {"Relocatable test 1" "-r"
197 {{objdump
-hr aix
-rel
-1.od
}} "aix-rel-1.ro"}
199 {"Weak test 1 (rel)" "-r"
200 "" {aix-weak-1a.s aix-weak-1b.s}
201 {{nm
{} aix
-weak
-1-rel.nd
} {objdump
-h aix
-weak
-1-rel.hd
}}
204 {"Weak test 1 (shared, nogc)" "-shared -bE:aix-weak-1.ex -bnogc"
205 "" {aix-weak-1a.s aix-weak-1b.s}
206 {{nm
{} aix
-weak
-1-dso.nd
} {objdump
-h aix
-weak
-1-dso.hd
}
207 {nm
-D aix
-weak
-1-dso.dnd
}}
208 "aix-weak-1-nogc.so"}
210 {"Weak test 1 (shared, gc)" "-shared -bE:aix-weak-1.ex"
211 "" {aix-weak-1a.s aix-weak-1b.s}
212 {{nm
{} aix
-weak
-1-gcdso.nd
} {objdump
-h aix
-weak
-1-gcdso.hd
}
213 {nm
-D aix
-weak
-1-gcdso.dnd
}}
216 {"Weak test 2 (library 1)" "-shared -bE:aix-weak-2a.ex"
218 {{nm
-D aix
-weak
-2a.nd
}}
221 {"Weak test 2 (library 2)" "-shared -bE:aix-weak-2a.ex"
223 {{nm
-D aix
-weak
-2b.nd
}}
226 {"Weak test 2 (main library)"
227 "-shared -bE:aix-weak-2c.ex tmpdir/aix-weak-2a.so tmpdir/aix-weak-2b.so"
229 {{nm
{} aix
-weak
-2c.nd
} {objdump
{-sj.data
-R
} aix
-weak
-2c.od
}}
232 {"Weak test 3 (library)" "-shared -bE:aix-weak-3a.ex"
237 {"Weak test 3 (main, dynamic)" "-e.main tmpdir/aix-weak-3a.so"
239 {{objdump
-Dzrj.data aix
-weak
-3-SIZE.dd
}}
242 {"TOC test 1" "-shared -bE:aix-toc-1.ex"
243 "" {aix-toc-1a.s aix-toc-1b.s}
244 {{objdump
-dr aix
-toc
-1-SIZE.dd
}}
248 foreach test $aix52tests
{
249 foreach
{ name ldopts asopts sources tools output
} $test
{
250 run_aix_test
32 $
name $ldopts $asopts $sources $tools $output
251 run_aix_test
64 $
name $ldopts $asopts $sources $tools $output
255 run_dump_test
"aix-glink-1-32"
256 run_dump_test
"aix-glink-1-64"
257 run_dump_test
"aix-glink-3-32"
258 run_dump_test
"aix-glink-3-64"
259 run_dump_test
"aix-weak-3-32"
260 run_dump_test
"aix-weak-3-64"