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 {"Line number test 1 (no discards)" "-e.main"
150 {{objdump
-dS aix
-lineno
-1a.dd
} {nm
{} aix
-lineno
-1a.nd
}}
153 {"Line number test 1 (discard locals)" "-e.main -x"
155 {{objdump
-dS aix
-lineno
-1b.dd
} {nm
{} aix
-lineno
-1b.nd
}}
158 {"Glink test 2 (part a)" "-shared -bE:aix-glink-2a.ex"
163 {"Glink test 2 (part b)" "-r"
168 {"Glink test 2 (part c)" "-shared -bE:aix-glink-2c.ex"
174 "-e.main tmpdir/aix-glink-2a.so tmpdir/aix-glink-2b.ro tmpdir/aix-glink-2c.so"
176 {{objdump
-d aix
-glink
-2-SIZE.dd
}}
179 {"Relocatable test 1" "-r"
181 {{objdump
-hr aix
-rel
-1.od
}} "aix-rel-1.ro"}
183 {"Weak test 1 (rel)" "-r"
184 "" {aix-weak-1a.s aix-weak-1b.s}
185 {{nm
{} aix
-weak
-1-rel.nd
} {objdump
-h aix
-weak
-1-rel.hd
}}
188 {"Weak test 1 (shared, nogc)" "-shared -bE:aix-weak-1.ex -bnogc"
189 "" {aix-weak-1a.s aix-weak-1b.s}
190 {{nm
{} aix
-weak
-1-dso.nd
} {objdump
-h aix
-weak
-1-dso.hd
}
191 {nm
-D aix
-weak
-1-dso.dnd
}}
192 "aix-weak-1-nogc.so"}
194 {"Weak test 1 (shared, gc)" "-shared -bE:aix-weak-1.ex"
195 "" {aix-weak-1a.s aix-weak-1b.s}
196 {{nm
{} aix
-weak
-1-gcdso.nd
} {objdump
-h aix
-weak
-1-gcdso.hd
}
197 {nm
-D aix
-weak
-1-gcdso.dnd
}}
200 {"Weak test 2 (library 1)" "-shared -bE:aix-weak-2a.ex"
202 {{nm
-D aix
-weak
-2a.nd
}}
205 {"Weak test 2 (library 2)" "-shared -bE:aix-weak-2a.ex"
207 {{nm
-D aix
-weak
-2b.nd
}}
210 {"Weak test 2 (main library)"
211 "-shared -bE:aix-weak-2c.ex tmpdir/aix-weak-2a.so tmpdir/aix-weak-2b.so"
213 {{nm
{} aix
-weak
-2c.nd
} {objdump
{-sj.data
-R
} aix
-weak
-2c.od
}}
216 {"Weak test 3 (library)" "-shared -bE:aix-weak-3a.ex"
221 {"Weak test 3 (main, dynamic)" "-e.main tmpdir/aix-weak-3a.so"
223 {{objdump
-Dzrj.data aix
-weak
-3-SIZE.dd
}}
226 {"TOC test 1" "-shared -bE:aix-toc-1.ex"
227 "" {aix-toc-1a.s aix-toc-1b.s}
228 {{objdump
-dr aix
-toc
-1-SIZE.dd
}}
232 foreach test $aix52tests
{
233 foreach
{ name ldopts asopts sources tools output
} $test
{
234 run_aix_test
32 $
name $ldopts $asopts $sources $tools $output
235 run_aix_test
64 $
name $ldopts $asopts $sources $tools $output
239 run_dump_test
"aix-weak-3-32"
240 run_dump_test
"aix-weak-3-64"