1## Show that llvm-readobj prints the symbol visibility where recognised, or
2## something sensible when not, for both GNU and LLVM output.
3
4## Check how we dump symbols when they have only STV_* bits set for st_other.
5## (This is the most common case).
6
7# RUN: yaml2obj --docnum=1 %s -o %t1.o
8# RUN: llvm-readobj --symbols %t1.o | FileCheck %s --check-prefix=LLVM
9# RUN: llvm-readelf --symbols %t1.o | FileCheck %s --strict-whitespace --check-prefix=GNU
10
11# LLVM:      Name: default
12# LLVM:      Other: 0
13# LLVM:      Name: internal
14# LLVM:      Other [ (0x1)
15# LLVM-NEXT:   STV_INTERNAL (0x1)
16# LLVM-NEXT: ]
17# LLVM:      Name: hidden
18# LLVM:      Other [ (0x2)
19# LLVM-NEXT:   STV_HIDDEN (0x2)
20# LLVM-NEXT: ]
21# LLVM:      Name: protected
22# LLVM:      Other [ (0x3)
23# LLVM-NEXT:   STV_PROTECTED (0x3)
24# LLVM-NEXT: ]
25
26# GNU:      Vis       Ndx Name
27# GNU-NEXT: DEFAULT   UND
28# GNU-NEXT: DEFAULT   UND default
29# GNU-NEXT: INTERNAL  UND internal
30# GNU-NEXT: HIDDEN    UND hidden
31# GNU-NEXT: PROTECTED UND protected
32
33--- !ELF
34FileHeader:
35  Class: ELFCLASS32
36  Data:  ELFDATA2LSB
37  Type:  ET_REL
38Symbols:
39  - Name: default
40    Other: [ STV_DEFAULT ]
41    Binding: STB_GLOBAL
42  - Name: internal
43    Other: [ STV_INTERNAL ]
44    Binding: STB_GLOBAL
45  - Name: hidden
46    Other: [ STV_HIDDEN ]
47    Binding: STB_GLOBAL
48  - Name: protected
49    Other: [ STV_PROTECTED ]
50    Binding: STB_GLOBAL
51
52## Check the output when we have non-visibility bits set for at least one of the symbols.
53
54# RUN: yaml2obj --docnum=2 %s -o %t2.o
55# RUN: llvm-readobj --symbols %t2.o | FileCheck %s --check-prefixes=LLVM,LLVM-OTHER
56# RUN: llvm-readelf --symbols %t2.o | FileCheck %s --strict-whitespace --check-prefix=GNU-OTHER
57
58# LLVM-OTHER:      Name: other
59# LLVM-OTHER:      Other [ (0x4)
60# LLVM-OTHER-NEXT: ]
61
62#      GNU-OTHER: Vis                    Ndx Name
63# GNU-OTHER-NEXT: DEFAULT                UND
64# GNU-OTHER-NEXT: DEFAULT                UND default
65# GNU-OTHER-NEXT: INTERNAL               UND internal
66# GNU-OTHER-NEXT: HIDDEN                 UND hidden
67# GNU-OTHER-NEXT: PROTECTED              UND protected
68# GNU-OTHER-NEXT: DEFAULT [<other: 0x4>] UND other
69
70--- !ELF
71FileHeader:
72  Class: ELFCLASS32
73  Data:  ELFDATA2LSB
74  Type:  ET_REL
75Symbols:
76  - Name: default
77    Other: [ STV_DEFAULT ]
78  - Name: internal
79    Other: [ STV_INTERNAL ]
80  - Name: hidden
81    Other: [ STV_HIDDEN ]
82  - Name: protected
83    Other: [ STV_PROTECTED ]
84  - Name: other
85    Other: [ 4 ]
86