xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/set-symbol-visibility.test (revision 07d8a457ad8bb9a14974b9cb47072746c7f5e489)
1*07d8a457SIlia Kuklin# RUN: yaml2obj --docnum=1 %s -o %t.o
2*07d8a457SIlia Kuklin# RUN: echo '.*' > %t.symbols.regex
3*07d8a457SIlia Kuklin
4*07d8a457SIlia Kuklin## Check that the visibility of all symbols is properly set to DEFAULT.
5*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t0.o --set-symbols-visibility=%t.symbols.regex=default --regex
6*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t0.o | FileCheck %s --check-prefix=DEF
7*07d8a457SIlia Kuklin
8*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 default_local
9*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 internal_local
10*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 hidden_local
11*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 protected_local
12*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 default_global
13*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 default_weak
14*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 internal_global
15*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 internal_weak
16*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 hidden_global
17*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 hidden_weak
18*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 protected_global
19*07d8a457SIlia Kuklin# DEF-DAG: DEFAULT     1 protected_weak
20*07d8a457SIlia Kuklin
21*07d8a457SIlia Kuklin## Check that the visibility of all symbols is properly set to HIDDEN.
22*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t1.o --set-symbols-visibility=%t.symbols.regex=hidden --regex
23*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t1.o | FileCheck %s --check-prefix=HID
24*07d8a457SIlia Kuklin
25*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 default_local
26*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 internal_local
27*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 hidden_local
28*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 protected_local
29*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 default_global
30*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 default_weak
31*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 internal_global
32*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 internal_weak
33*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 hidden_global
34*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 hidden_weak
35*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 protected_global
36*07d8a457SIlia Kuklin# HID-DAG: HIDDEN      1 protected_weak
37*07d8a457SIlia Kuklin
38*07d8a457SIlia Kuklin## Check that the visibility of all symbols is properly set to PROTECTED.
39*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t2.o --set-symbols-visibility=%t.symbols.regex=protected --regex
40*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t2.o | FileCheck %s --check-prefix=PRO
41*07d8a457SIlia Kuklin
42*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 default_local
43*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 internal_local
44*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 hidden_local
45*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 protected_local
46*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 default_global
47*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 default_weak
48*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 internal_global
49*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 internal_weak
50*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 hidden_global
51*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 hidden_weak
52*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 protected_global
53*07d8a457SIlia Kuklin# PRO-DAG: PROTECTED   1 protected_weak
54*07d8a457SIlia Kuklin
55*07d8a457SIlia Kuklin## Check that the visibility of all symbols is properly set to INTERNAL.
56*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t3.o --set-symbols-visibility=%t.symbols.regex=internal --regex
57*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t3.o | FileCheck %s --check-prefix=INT
58*07d8a457SIlia Kuklin
59*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 default_local
60*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 internal_local
61*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 hidden_local
62*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 protected_local
63*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 default_global
64*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 default_weak
65*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 internal_global
66*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 internal_weak
67*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 hidden_global
68*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 hidden_weak
69*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 protected_global
70*07d8a457SIlia Kuklin# INT-DAG: INTERNAL    1 protected_weak
71*07d8a457SIlia Kuklin
72*07d8a457SIlia Kuklin## Check that setting the visibility of certain symbols that were read from
73*07d8a457SIlia Kuklin## a file does not affect other symbols.
74*07d8a457SIlia Kuklin# RUN: echo -e "default_local\ninternal_local" > %t.symbol.list
75*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t4.o --set-symbols-visibility=%t.symbol.list=hidden
76*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t4.o | FileCheck %s --check-prefix=FILE
77*07d8a457SIlia Kuklin
78*07d8a457SIlia Kuklin# FILE-DAG: HIDDEN      1 default_local
79*07d8a457SIlia Kuklin# FILE-DAG: HIDDEN      1 internal_local
80*07d8a457SIlia Kuklin## Unaffected symbols:
81*07d8a457SIlia Kuklin# FILE-DAG: HIDDEN      1 hidden_local
82*07d8a457SIlia Kuklin# FILE-DAG: PROTECTED   1 protected_local
83*07d8a457SIlia Kuklin# FILE-DAG: DEFAULT     1 default_global
84*07d8a457SIlia Kuklin# FILE-DAG: DEFAULT     1 default_weak
85*07d8a457SIlia Kuklin# FILE-DAG: INTERNAL    1 internal_global
86*07d8a457SIlia Kuklin# FILE-DAG: INTERNAL    1 internal_weak
87*07d8a457SIlia Kuklin# FILE-DAG: HIDDEN      1 hidden_global
88*07d8a457SIlia Kuklin# FILE-DAG: HIDDEN      1 hidden_weak
89*07d8a457SIlia Kuklin# FILE-DAG: PROTECTED   1 protected_global
90*07d8a457SIlia Kuklin# FILE-DAG: PROTECTED   1 protected_weak
91*07d8a457SIlia Kuklin
92*07d8a457SIlia Kuklin## Check that the visibility of a single symbol is set correctly,
93*07d8a457SIlia Kuklin## and that no other symbols are affected.
94*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t5.o --set-symbol-visibility=default_local=hidden \
95*07d8a457SIlia Kuklin# RUN:                         --set-symbol-visibility=internal_local=protected \
96*07d8a457SIlia Kuklin# RUN:                         --set-symbol-visibility=hidden_local=internal \
97*07d8a457SIlia Kuklin# RUN:                         --set-symbol-visibility=protected_local=default
98*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t5.o | FileCheck %s --check-prefix=SINGLE
99*07d8a457SIlia Kuklin
100*07d8a457SIlia Kuklin# SINGLE-DAG: HIDDEN      1 default_local
101*07d8a457SIlia Kuklin# SINGLE-DAG: PROTECTED   1 internal_local
102*07d8a457SIlia Kuklin# SINGLE-DAG: INTERNAL    1 hidden_local
103*07d8a457SIlia Kuklin# SINGLE-DAG: DEFAULT     1 protected_local
104*07d8a457SIlia Kuklin## Unaffected symbols:
105*07d8a457SIlia Kuklin# SINGLE-DAG: DEFAULT     1 default_global
106*07d8a457SIlia Kuklin# SINGLE-DAG: DEFAULT     1 default_weak
107*07d8a457SIlia Kuklin# SINGLE-DAG: INTERNAL    1 internal_global
108*07d8a457SIlia Kuklin# SINGLE-DAG: INTERNAL    1 internal_weak
109*07d8a457SIlia Kuklin# SINGLE-DAG: HIDDEN      1 hidden_global
110*07d8a457SIlia Kuklin# SINGLE-DAG: HIDDEN      1 hidden_weak
111*07d8a457SIlia Kuklin# SINGLE-DAG: PROTECTED   1 protected_global
112*07d8a457SIlia Kuklin# SINGLE-DAG: PROTECTED   1 protected_weak
113*07d8a457SIlia Kuklin
114*07d8a457SIlia Kuklin## Check that the visibility of symbols specified by a regex are set correctly,
115*07d8a457SIlia Kuklin## and that no other symbols are affected.
116*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t6.o --set-symbol-visibility='.*'_local=hidden --regex
117*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t6.o | FileCheck %s --check-prefix=REGEX
118*07d8a457SIlia Kuklin
119*07d8a457SIlia Kuklin# REGEX-DAG: HIDDEN      1 default_local
120*07d8a457SIlia Kuklin# REGEX-DAG: HIDDEN      1 internal_local
121*07d8a457SIlia Kuklin# REGEX-DAG: HIDDEN      1 hidden_local
122*07d8a457SIlia Kuklin# REGEX-DAG: HIDDEN      1 protected_local
123*07d8a457SIlia Kuklin## Unaffected symbols:
124*07d8a457SIlia Kuklin# REGEX-DAG: DEFAULT     1 default_global
125*07d8a457SIlia Kuklin# REGEX-DAG: DEFAULT     1 default_weak
126*07d8a457SIlia Kuklin# REGEX-DAG: INTERNAL    1 internal_global
127*07d8a457SIlia Kuklin# REGEX-DAG: INTERNAL    1 internal_weak
128*07d8a457SIlia Kuklin# REGEX-DAG: HIDDEN      1 hidden_global
129*07d8a457SIlia Kuklin# REGEX-DAG: HIDDEN      1 hidden_weak
130*07d8a457SIlia Kuklin# REGEX-DAG: PROTECTED   1 protected_global
131*07d8a457SIlia Kuklin# REGEX-DAG: PROTECTED   1 protected_weak
132*07d8a457SIlia Kuklin
133*07d8a457SIlia Kuklin## Check that the visibility of symbols specified by a wildcard are set correctly,
134*07d8a457SIlia Kuklin## and that no other symbols are affected.
135*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t7.o --set-symbol-visibility='*_local'=hidden --wildcard
136*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t7.o | FileCheck %s --check-prefix=WILDCARD
137*07d8a457SIlia Kuklin
138*07d8a457SIlia Kuklin# WILDCARD-DAG: HIDDEN      1 default_local
139*07d8a457SIlia Kuklin# WILDCARD-DAG: HIDDEN      1 internal_local
140*07d8a457SIlia Kuklin# WILDCARD-DAG: HIDDEN      1 hidden_local
141*07d8a457SIlia Kuklin# WILDCARD-DAG: HIDDEN      1 protected_local
142*07d8a457SIlia Kuklin## Unaffected symbols:
143*07d8a457SIlia Kuklin# WILDCARD-DAG: DEFAULT     1 default_global
144*07d8a457SIlia Kuklin# WILDCARD-DAG: DEFAULT     1 default_weak
145*07d8a457SIlia Kuklin# WILDCARD-DAG: INTERNAL    1 internal_global
146*07d8a457SIlia Kuklin# WILDCARD-DAG: INTERNAL    1 internal_weak
147*07d8a457SIlia Kuklin# WILDCARD-DAG: HIDDEN      1 hidden_global
148*07d8a457SIlia Kuklin# WILDCARD-DAG: HIDDEN      1 hidden_weak
149*07d8a457SIlia Kuklin# WILDCARD-DAG: PROTECTED   1 protected_global
150*07d8a457SIlia Kuklin# WILDCARD-DAG: PROTECTED   1 protected_weak
151*07d8a457SIlia Kuklin
152*07d8a457SIlia Kuklin## Check that the latest option that matches the same symbols as any of the previous
153*07d8a457SIlia Kuklin## options overwrites the visibility of these symbols.
154*07d8a457SIlia Kuklin# RUN: echo -e '*_weak\n*_local' > %t.symbols.pattern
155*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t.o %t8.o --set-symbol-visibility='default_*'=hidden \
156*07d8a457SIlia Kuklin# RUN:                         --set-symbol-visibility='internal_*'=hidden \
157*07d8a457SIlia Kuklin# RUN:                         --set-symbols-visibility=%t.symbols.pattern=protected \
158*07d8a457SIlia Kuklin# RUN:                         --wildcard
159*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t8.o | FileCheck %s --check-prefix=REWRITE
160*07d8a457SIlia Kuklin
161*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 default_local
162*07d8a457SIlia Kuklin# REWRITE-DAG: HIDDEN      1 default_global
163*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 default_weak
164*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 internal_local
165*07d8a457SIlia Kuklin# REWRITE-DAG: HIDDEN      1 internal_global
166*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 internal_weak
167*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 hidden_local
168*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 hidden_weak
169*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 protected_local
170*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 protected_weak
171*07d8a457SIlia Kuklin## Unaffected symbols:
172*07d8a457SIlia Kuklin# REWRITE-DAG: HIDDEN      1 hidden_global
173*07d8a457SIlia Kuklin# REWRITE-DAG: PROTECTED   1 protected_global
174*07d8a457SIlia Kuklin
175*07d8a457SIlia Kuklin## Check that a symbol name with a special charater is treated as a plain name
176*07d8a457SIlia Kuklin## when pattern matching options are not enabled.
177*07d8a457SIlia Kuklin# RUN: yaml2obj --docnum=2 %s -o %t9.o
178*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t9.o --set-symbol-visibility='f*o'=hidden
179*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t9.o | FileCheck %s --check-prefix=SPECIAL
180*07d8a457SIlia Kuklin
181*07d8a457SIlia Kuklin# SPECIAL-DAG: HIDDEN      1 f*o
182*07d8a457SIlia Kuklin## Unaffected symbol:
183*07d8a457SIlia Kuklin# SPECIAL-DAG: DEFAULT     1 foo
184*07d8a457SIlia Kuklin
185*07d8a457SIlia Kuklin# RUN: yaml2obj --docnum=3 %s -o %t10.o
186*07d8a457SIlia Kuklin
187*07d8a457SIlia Kuklin## Check that the visibility of undefined symbols can be changed as well.
188*07d8a457SIlia Kuklin# RUN: llvm-objcopy %t10.o --set-symbol-visibility=foo=hidden
189*07d8a457SIlia Kuklin# RUN: llvm-readelf -s %t10.o | FileCheck %s --check-prefix=UNDEF
190*07d8a457SIlia Kuklin# UNDEF: HIDDEN    UND foo
191*07d8a457SIlia Kuklin
192*07d8a457SIlia Kuklin## Check that passing an invalid visibility type generates an error message.
193*07d8a457SIlia Kuklin# RUN: echo 'foo' > %t.symbols
194*07d8a457SIlia Kuklin# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=%t.symbols=invalid-type 2>&1 | \
195*07d8a457SIlia Kuklin# RUN:   FileCheck %s --check-prefix=TYPE
196*07d8a457SIlia Kuklin# RUN: not llvm-objcopy %t10.o --set-symbol-visibility=foo=invalid-type 2>&1 | \
197*07d8a457SIlia Kuklin# RUN:   FileCheck %s --check-prefix=TYPE
198*07d8a457SIlia Kuklin# TYPE: error: 'invalid-type' is not a valid symbol visibility
199*07d8a457SIlia Kuklin
200*07d8a457SIlia Kuklin## Check that omitting the '=' character generates an error.
201*07d8a457SIlia Kuklin# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=%t.symbols,hidden 2>&1 | \
202*07d8a457SIlia Kuklin# RUN:   FileCheck %s --check-prefix=FORMAT -DOPTION=--set-symbols-visibility
203*07d8a457SIlia Kuklin# RUN: not llvm-objcopy %t10.o --set-symbol-visibility=foo default 2>&1 | \
204*07d8a457SIlia Kuklin# RUN:   FileCheck %s --check-prefix=FORMAT -DOPTION=--set-symbol-visibility
205*07d8a457SIlia Kuklin# FORMAT: error: bad format for [[OPTION]]
206*07d8a457SIlia Kuklin
207*07d8a457SIlia Kuklin## Check that using an invalid symbol pattern generates an error.
208*07d8a457SIlia Kuklin# RUN: echo '*.' > %t.symbols.regex
209*07d8a457SIlia Kuklin# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=%t.symbols.regex=hidden --regex 2>&1 | \
210*07d8a457SIlia Kuklin# RUN:   FileCheck %s --check-prefix=SYMBOL
211*07d8a457SIlia Kuklin# RUN: not llvm-objcopy %t10.o --set-symbol-visibility='*.'=default --regex 2>&1 | \
212*07d8a457SIlia Kuklin# RUN:   FileCheck %s --check-prefix=SYMBOL
213*07d8a457SIlia Kuklin# SYMBOL: error: cannot compile regular expression '*.': repetition-operator operand invalid
214*07d8a457SIlia Kuklin
215*07d8a457SIlia Kuklin## Check passing an invalid filename generates an error.
216*07d8a457SIlia Kuklin# RUN: not llvm-objcopy %t10.o --set-symbols-visibility=no_file=hidden 2>&1 | \
217*07d8a457SIlia Kuklin# RUN:   FileCheck %s --check-prefix=NO_FILE -DMSG=%errc_ENOENT
218*07d8a457SIlia Kuklin# NO_FILE: error: 'no_file': [[MSG]]
219*07d8a457SIlia Kuklin
220*07d8a457SIlia Kuklin---
221*07d8a457SIlia Kuklin!ELF
222*07d8a457SIlia KuklinFileHeader:
223*07d8a457SIlia Kuklin  Class:   ELFCLASS64
224*07d8a457SIlia Kuklin  Data:    ELFDATA2LSB
225*07d8a457SIlia Kuklin  Type:    ET_REL
226*07d8a457SIlia Kuklin  Machine: EM_X86_64
227*07d8a457SIlia KuklinSections:
228*07d8a457SIlia Kuklin  - Name:  .text
229*07d8a457SIlia Kuklin    Type:  SHT_PROGBITS
230*07d8a457SIlia KuklinSymbols:
231*07d8a457SIlia Kuklin  - Name:    default_local
232*07d8a457SIlia Kuklin    Section: .text
233*07d8a457SIlia Kuklin    Binding:  STB_LOCAL
234*07d8a457SIlia Kuklin  - Name:    protected_local
235*07d8a457SIlia Kuklin    Section: .text
236*07d8a457SIlia Kuklin    Binding:  STB_LOCAL
237*07d8a457SIlia Kuklin    Other:    [ STV_PROTECTED ]
238*07d8a457SIlia Kuklin  - Name:    internal_local
239*07d8a457SIlia Kuklin    Section: .text
240*07d8a457SIlia Kuklin    Binding:  STB_LOCAL
241*07d8a457SIlia Kuklin    Other:    [ STV_INTERNAL ]
242*07d8a457SIlia Kuklin  - Name:    hidden_local
243*07d8a457SIlia Kuklin    Section: .text
244*07d8a457SIlia Kuklin    Binding:  STB_LOCAL
245*07d8a457SIlia Kuklin    Other:    [ STV_HIDDEN ]
246*07d8a457SIlia Kuklin  - Name:    default_weak
247*07d8a457SIlia Kuklin    Section: .text
248*07d8a457SIlia Kuklin    Binding:  STB_WEAK
249*07d8a457SIlia Kuklin  - Name:    internal_weak
250*07d8a457SIlia Kuklin    Section: .text
251*07d8a457SIlia Kuklin    Binding:  STB_WEAK
252*07d8a457SIlia Kuklin    Other:    [ STV_INTERNAL ]
253*07d8a457SIlia Kuklin  - Name:    hidden_weak
254*07d8a457SIlia Kuklin    Section: .text
255*07d8a457SIlia Kuklin    Binding:  STB_WEAK
256*07d8a457SIlia Kuklin    Other:    [ STV_HIDDEN ]
257*07d8a457SIlia Kuklin  - Name:    protected_weak
258*07d8a457SIlia Kuklin    Section: .text
259*07d8a457SIlia Kuklin    Binding:  STB_WEAK
260*07d8a457SIlia Kuklin    Other:    [ STV_PROTECTED ]
261*07d8a457SIlia Kuklin  - Name:    default_global
262*07d8a457SIlia Kuklin    Section: .text
263*07d8a457SIlia Kuklin    Binding:  STB_GLOBAL
264*07d8a457SIlia Kuklin  - Name:    internal_global
265*07d8a457SIlia Kuklin    Section: .text
266*07d8a457SIlia Kuklin    Binding:  STB_GLOBAL
267*07d8a457SIlia Kuklin    Other:    [ STV_INTERNAL ]
268*07d8a457SIlia Kuklin  - Name:    hidden_global
269*07d8a457SIlia Kuklin    Section: .text
270*07d8a457SIlia Kuklin    Binding:  STB_GLOBAL
271*07d8a457SIlia Kuklin    Other:    [ STV_HIDDEN ]
272*07d8a457SIlia Kuklin  - Name:    protected_global
273*07d8a457SIlia Kuklin    Section: .text
274*07d8a457SIlia Kuklin    Binding:  STB_GLOBAL
275*07d8a457SIlia Kuklin    Other:    [ STV_PROTECTED ]
276*07d8a457SIlia Kuklin  - Name:    ignored_name
277*07d8a457SIlia Kuklin    Section: .text
278*07d8a457SIlia Kuklin    Binding:  STB_GLOBAL
279*07d8a457SIlia Kuklin    Other:    [ STV_INTERNAL ]
280*07d8a457SIlia Kuklin...
281*07d8a457SIlia Kuklin
282*07d8a457SIlia Kuklin---
283*07d8a457SIlia Kuklin!ELF
284*07d8a457SIlia KuklinFileHeader:
285*07d8a457SIlia Kuklin  Class:   ELFCLASS64
286*07d8a457SIlia Kuklin  Data:    ELFDATA2LSB
287*07d8a457SIlia Kuklin  Type:    ET_REL
288*07d8a457SIlia Kuklin  Machine: EM_X86_64
289*07d8a457SIlia KuklinSections:
290*07d8a457SIlia Kuklin  - Name:  .text
291*07d8a457SIlia Kuklin    Type:  SHT_PROGBITS
292*07d8a457SIlia KuklinSymbols:
293*07d8a457SIlia Kuklin  - Name:    f*o
294*07d8a457SIlia Kuklin    Section: .text
295*07d8a457SIlia Kuklin    Binding:  STB_LOCAL
296*07d8a457SIlia Kuklin  - Name:    foo
297*07d8a457SIlia Kuklin    Section: .text
298*07d8a457SIlia Kuklin    Binding:  STB_LOCAL
299*07d8a457SIlia Kuklin...
300*07d8a457SIlia Kuklin
301*07d8a457SIlia Kuklin---
302*07d8a457SIlia Kuklin!ELF
303*07d8a457SIlia KuklinFileHeader:
304*07d8a457SIlia Kuklin  Class:   ELFCLASS64
305*07d8a457SIlia Kuklin  Data:    ELFDATA2LSB
306*07d8a457SIlia Kuklin  Type:    ET_REL
307*07d8a457SIlia Kuklin  Machine: EM_X86_64
308*07d8a457SIlia KuklinSymbols:
309*07d8a457SIlia Kuklin  - Name:     foo
310*07d8a457SIlia Kuklin    Binding:  STB_LOCAL
311*07d8a457SIlia Kuklin...
312