xref: /llvm-project/llvm/test/tools/llvm-readobj/ELF/symbol-types.test (revision a6436b0b3a7fd9f13d7a059a6a78544a7e0b702f)
1# Show that llvm-readobj can print the type of symbol for all known symbol types
2# and also for unknown types, both in the os/processor specific ranges and not,
3# for both GNU and LLVM styles.
4
5# RUN: yaml2obj %s -o %t
6# RUN: llvm-readobj --symbols %t | FileCheck %s --check-prefix=LLVM
7# RUN: llvm-readelf --symbols %t | FileCheck %s --check-prefix=GNU
8
9# LLVM: Name: notype
10# LLVM: Type: None
11# LLVM: Name: object
12# LLVM: Type: Object
13# LLVM: Name: func
14# LLVM: Type: Function
15# LLVM: Name: .text
16# LLVM: Type: Section
17# LLVM: Name: file
18# LLVM: Type: File
19# LLVM: Name: common
20# LLVM: Type: Common
21# LLVM: Name: tls
22# LLVM: Type: TLS
23# LLVM: Name: gnu_ifunc
24# LLVM: Type: GNU_IFunc
25
26# LLVM: Name: os_specific_11
27# LLVM: Type: OS Specific (0xB)
28# LLVM: Name: os_specific_12
29# LLVM: Type: OS Specific (0xC)
30
31# LLVM: Name: proc_specific_13
32# LLVM: Type: Proc Specific (0xD)
33# LLVM: Name: proc_specific_14
34# LLVM: Type: Proc Specific (0xE)
35# LLVM: Name: proc_specific_15
36# LLVM: Type: Proc Specific (0xF)
37
38# LLVM: Name: unknown_7
39# LLVM: Type: Unknown (0x7)
40# LLVM: Name: unknown_8
41# LLVM: Type: Unknown (0x8)
42# LLVM: Name: unknown_9
43# LLVM: Type: Unknown (0x9)
44
45# GNU: NOTYPE  {{.*}} notype
46# GNU: OBJECT  {{.*}} object
47# GNU: FUNC    {{.*}} func
48# GNU: SECTION {{.*}} .text
49# GNU: FILE    {{.*}} file
50# GNU: COMMON  {{.*}} common
51# GNU: TLS     {{.*}} tls
52# GNU: IFUNC   {{.*}} gnu_ifunc
53# GNU: <OS specific>: 11       {{.*}} os_specific_11
54# GNU: <OS specific>: 12       {{.*}} os_specific_12
55# GNU: <processor specific>: 13       {{.*}} proc_specific_13
56# GNU: <processor specific>: 14       {{.*}} proc_specific_14
57# GNU: <processor specific>: 15       {{.*}} proc_specific_15
58# GNU: <unknown>: 7       {{.*}} unknown_7
59# GNU: <unknown>: 8       {{.*}} unknown_8
60# GNU: <unknown>: 9       {{.*}} unknown_9
61
62!ELF
63FileHeader:
64  Class: ELFCLASS64
65  Data:  ELFDATA2LSB
66  Type:  ET_REL
67Sections:
68  - Name: .text
69    Type: SHT_PROGBITS
70Symbols:
71  - Name:    notype
72    Type:    STT_NOTYPE
73    Binding: STB_GLOBAL
74  - Name:    object
75    Type:    STT_OBJECT
76    Binding: STB_GLOBAL
77  - Name:    func
78    Type:    STT_FUNC
79    Binding: STB_GLOBAL
80  - Name:    .text
81    Type:    STT_SECTION
82    Section: .text
83    Binding: STB_GLOBAL
84  - Name:    file
85    Type:    STT_FILE
86    Binding: STB_GLOBAL
87  - Name:    common
88    Type:    STT_COMMON
89    Binding: STB_GLOBAL
90  - Name:    tls
91    Type:    STT_TLS
92    Binding: STB_GLOBAL
93  - Name:    gnu_ifunc
94    Type:    STT_GNU_IFUNC
95    Binding: STB_GLOBAL
96  - Name:    os_specific_11
97    Type:    11
98    Binding: STB_GLOBAL
99  - Name:    os_specific_12
100    Type:    12
101    Binding: STB_GLOBAL
102  - Name:    proc_specific_13
103    Type:    13
104    Binding: STB_GLOBAL
105  - Name:    proc_specific_14
106    Type:    14
107    Binding: STB_GLOBAL
108  - Name:    proc_specific_15
109    Type:    15
110    Binding: STB_GLOBAL
111  - Name:    unknown_7
112    Type:    7
113    Binding: STB_GLOBAL
114  - Name:    unknown_8
115    Type:    8
116    Binding: STB_GLOBAL
117  - Name:    unknown_9
118    Type:    9
119    Binding: STB_GLOBAL
120