xref: /llvm-project/llvm/test/tools/llvm-nm/ifunc.test (revision b3af96d07b8bcdbc716b04629a1ad1d3d5f6ee5f)
1## Test that the symbol type of STT_GNU_IFUNC is 'i'.
2
3# RUN: yaml2obj %s -o %t
4# RUN: llvm-nm --no-sort %t | FileCheck %s
5
6# CHECK:      i ifunc_local
7# CHECK-NEXT: i ifunc_global
8# CHECK-NEXT: i ifunc_weak
9# CHECK-NEXT: U ifunc_undef
10# CHECK-NEXT: w ifunc_undef_weak
11
12!ELF
13FileHeader:
14  Class:   ELFCLASS64
15  Data:    ELFDATA2LSB
16  Type:    ET_REL
17  Machine: EM_X86_64
18Sections:
19  - Name:  .text
20    Type:  SHT_PROGBITS
21    Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
22Symbols:
23  - Name:    ifunc_local
24    Type:    STT_GNU_IFUNC
25    Binding: STB_LOCAL
26    Section: .text
27  - Name:    ifunc_global
28    Type:    STT_GNU_IFUNC
29    Binding: STB_GLOBAL
30    Section: .text
31  - Name:    ifunc_weak
32    Type:    STT_GNU_IFUNC
33    Binding: STB_WEAK
34    Section: .text
35  - Name:    ifunc_undef
36    Type:    STT_GNU_IFUNC
37    Binding: STB_GLOBAL
38  - Name:    ifunc_undef_weak
39    Type:    STT_GNU_IFUNC
40    Binding: STB_WEAK
41