1 # Expect script
for symbol
export classes
, i386 variation.
3 # Copyright
(C
) 2012-2023 Free Software Foundation
, Inc.
5 # This file is part of the GNU Binutils.
7 # This
program is free software
; you can redistribute it and
/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation
; either version
3 of the License
, or
10 #
(at your option
) any later version.
12 # This
program is distributed in the hope that it will be useful
,
13 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License
for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this
program; if not
, write to the Free Software
19 # Foundation
, Inc.
, 51 Franklin Street
- Fifth Floor
, Boston
,
24 # Written by Maciej W. Rozycki
<macro@codesourcery.com
>
27 # Exclude non
-ELF targets.
28 if { ![is_elf_format
] } {
32 # Exclude some more targets
; feel free to
include your favorite one
34 if { !([istarget i?
86-*-linux
*]
35 ||
[istarget i?
86-*-gnu
*]) } {
39 set testname
"i386 symbol export class test"
41 # Build an auxiliary shared object with conflicting versioned symbol
43 run_ld_link_tests
[list \
45 "$testname (auxiliary shared object)" \
46 "-shared -version-script ../ld-elf/export-class-lib.ver" "" \
48 { ..
/ld-elf
/export-class
-lib.s
} \
50 "i386-export-class-lib.so" \
54 # Build a static object that pulls symbol definitions. It has to come
55 # first before the auxiliary shared object and other static objects
on
56 # the linker
's command line and hence we need to build it separately.
57 run_ld_link_tests [list \
59 "$testname (initial static object)" \
62 { ../ld-elf/export-class-ref.s } \
64 "i386-export-class-ref-r.o" \
68 # Build static objects that satisfy symbol dependencies and preempt
69 # shared-object symbol definitions, and link all the objects built into
70 # the final shared object. The command-line order of objects linked is
71 # important to make sure the linker correctly preempts versioned symbols
72 # from the auxiliary shared object and is as follows: ref, lib, dep, def.
73 # Get a dump to make sure symbol dependencies are resolved internally.
74 run_ld_link_tests [list \
76 "$testname (final shared object)" \
77 "-shared $NO_DT_RELR_LDFLAGS -Tdata=0x12340000 tmpdir/i386-export-class-ref-r.o tmpdir/i386-export-class-lib.so" "" \
79 { ../ld-elf/export-class-dep.s ../ld-elf/export-class-def.s } \
81 { readelf -r i386-export-class.rd } \
82 { readelf "-x .data" i386-export-class.xd } \
84 "i386-export-class.so" \