[Alignment][NFC] Instructions::getLoadStoreAlignment
[llvm-complete.git] / test / tools / llvm-readobj / elf-symbol-shndx.test
blobbdf2050e4568bcb47be1261722cab06e3fd3ec61
1 # Show that llvm-readobj prints symbol shndxes correctly, for valid indexes,
2 # invalid indexes (i.e. section indexes that don't correspond to a real
3 # section), reserved values and processor/os-specific index values, for both GNU
4 # and LLVM styles.
6 # Use --dyn-symbols because yaml2obj does not currently support large section indexes
7 # and also does not allow hand-crafting of static symbol tables.
8 # RUN: yaml2obj --docnum=1 %s > %t1
9 # RUN: llvm-readobj --symbols --dyn-symbols %t1 | FileCheck %s --check-prefix=LLVM
10 # RUN: llvm-readelf --symbols --dyn-symbols %t1 | FileCheck %s --check-prefix=GNU1
12 # llvm-readobj doesn't accept shndx values that are not valid section indexes
13 # for LLVM style, so only test GNU output in this case.
14 # RUN: yaml2obj --docnum=2 %s > %t2
15 # RUN: llvm-readelf --symbols %t2 | FileCheck %s --check-prefix=GNU2
17 # LLVM: Name:    undef
18 # LLVM: Section: Undefined (0x0)
19 # LLVM: Name:    normal
20 # LLVM: Section: .text (0x1)
21 # LLVM: Name:    common
22 # LLVM: Section: Common (0xFFF2)
23 # LLVM: Name:    absolute
24 # LLVM: Section: Absolute (0xFFF1)
25 # LLVM: Name:    proc
26 # LLVM: Section: Processor Specific (0xFF01)
27 # LLVM: Name:    os
28 # LLVM: Section: Operating System Specific (0xFF21)
29 # LLVM: Name:    reserved
30 # LLVM: Section: Reserved (0xFFFE)
32 # GNU1:      Symbol table '.dynsym' contains 2 entries:
33 # GNU1-NEXT:   Num: {{.*}} Ndx Name
34 # GNU1-NEXT:     0: {{.*}} UND
35 # GNU1-NEXT:     1: {{.*}}   1 xindex
36 # GNU1:      Symbol table '.symtab' contains 8 entries:
37 # GNU1-NEXT:   Num: {{.*}} Ndx Name
38 # GNU1-NEXT:     0: {{.*}} UND
39 # GNU1-NEXT:     1: {{.*}} UND undef
40 # GNU1-NEXT:     2: {{.*}}   1 normal
41 # GNU1-NEXT:     3: {{.*}} COM common
42 # GNU1-NEXT:     4: {{.*}} ABS absolute
43 # GNU1-NEXT:     5: {{.*}} PRC[0xff01] proc
44 # GNU1-NEXT:     6: {{.*}} OS[0xff21] os
45 # GNU1-NEXT:     7: {{.*}} RSV[0xfffe] reserved
47 # GNU2:      Symbol table '.symtab' contains 2 entries:
48 # GNU2-NEXT:   Num: {{.*}} Ndx Name
49 # GNU2-NEXT:     0: {{.*}} UND
50 # GNU2-NEXT:     1: {{.*}}  66 bad
52 --- !ELF
53 FileHeader:
54   Class:   ELFCLASS32
55   Data:    ELFDATA2LSB
56   Type:    ET_REL
57   Machine: EM_386
58 Sections:
59   - Name: .text
60     Type: SHT_PROGBITS
61   - Name: .dynstr
62     Type: SHT_STRTAB
63     #\0xindex\0
64     Content: "0078696e64657800"
65   - Name: .dynsym
66     Type: SHT_DYNSYM
67     Link: .dynstr
68     EntSize: 16
69     # Null symbol
70     # Symbol with st_name = 1, st_shndx = SHN_XINDEX
71     Content: "000000000000000000000000000000000100000000000000000000000000ffff"
72   - Name: .symtab_shndx
73     Type: SHT_SYMTAB_SHNDX
74     Link: .dynsym
75     Entries: [ 0, 1 ]
76 Symbols:
77   - Name:    undef
78     Binding: STB_GLOBAL
79   - Name:    normal
80     Section: .text
81     Binding: STB_GLOBAL
82   - Name:    common
83     Index:   SHN_COMMON
84     Binding: STB_GLOBAL
85   - Name:    absolute
86     Index:   SHN_ABS
87     Binding: STB_GLOBAL
88   - Name:    proc
89     Index:   0xff01
90     Binding: STB_GLOBAL
91   - Name:    os
92     Index:   0xff21
93     Binding: STB_GLOBAL
94   - Name:    reserved
95     Index:   0xfffe
96     Binding: STB_GLOBAL
98 --- !ELF
99 FileHeader:
100   Class:   ELFCLASS32
101   Data:    ELFDATA2LSB
102   Type:    ET_REL
103   Machine: EM_386
104 Symbols:
105   - Name:    bad
106     Index:   0x42
107     Binding: STB_GLOBAL