[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / tools / obj2yaml / ELF / implicit-sections-order.yaml
blob11a0a2ad5e07c4a4813ec260cd90365ab2992989
1 ## Check that obj2yaml dumps SHT_STRTAB/SHT_SYMTAB/SHT_DYNSYM sections
2 ## when they are allocatable.
4 ## In the following test we check the normal case: when .dynsym (SHT_DYNSYM)
5 ## and .dynstr (SHT_STRTAB) are allocatable sections and .symtab (SHT_SYMTAB),
6 ## .strtab (SHT_STRTAB) and .shstrtab (SHT_STRTAB) are not.
7 ## Check we explicitly declare allocatable sections.
9 # RUN: yaml2obj %s -o %t1.so -D FLAG1=SHF_ALLOC -D FLAG2=""
10 # RUN: llvm-readelf -S %t1.so | FileCheck %s --check-prefixes=RE,RE-1
11 # RUN: obj2yaml %t1.so | FileCheck %s --check-prefix=OUTPUT
13 ## Check the information about sections using an independent tool.
15 # RE:        Section Headers:
16 # RE-NEXT:   [Nr] Name      Type     Address          Off    Size   ES Flg Lk Inf Al
17 # RE-NEXT:   [ 0]           NULL     0000000000000000 000000 000000 00     0   0  0
18 # RE-NEXT:   [ 1] .foo.1    PROGBITS 0000000000000000 000040 000000 00     0   0  0
19 # RE-1-NEXT: [ 2] .dynsym   DYNSYM   0000000000001000 000040 000030 18   A 4   2  0
20 # RE-2-NEXT: [ 2] .dynsym   DYNSYM   0000000000001000 000040 000030 18     4   2  0
21 # RE-NEXT:   [ 3] .foo.2    PROGBITS 0000000000000000 000070 000000 00     0   0  0
22 # RE-1-NEXT: [ 4] .dynstr   STRTAB   0000000000002000 000070 000005 00   A 0   0  0
23 # RE-2-NEXT: [ 4] .dynstr   STRTAB   0000000000002000 000070 000005 00     0   0  0
24 # RE-NEXT:   [ 5] .foo.3    PROGBITS 0000000000000000 000075 000000 00     0   0  0
25 # RE-1-NEXT: [ 6] .symtab   SYMTAB   0000000000003000 000075 000030 18     8   2  0
26 # RE-2-NEXT: [ 6] .symtab   SYMTAB   0000000000003000 000075 000030 18   A 8   2  0
27 # RE-NEXT:   [ 7] .foo.4    PROGBITS 0000000000000000 0000a5 000000 00     0   0  0
28 # RE-1-NEXT: [ 8] .strtab   STRTAB   0000000000004000 0000a5 000005 00     0   0  0
29 # RE-2-NEXT: [ 8] .strtab   STRTAB   0000000000004000 0000a5 000005 00   A 0   0  0
30 # RE-NEXT:   [ 9] .foo.5    PROGBITS 0000000000000000 0000aa 000000 00     0   0  0
31 # RE-1-NEXT: [10] .shstrtab STRTAB   0000000000005000 0000aa 000055 00     0   0  0
32 # RE-2-NEXT: [10] .shstrtab STRTAB   0000000000005000 0000aa 000055 00   A 0   0  0
33 # RE-NEXT:   [11] .foo.6    PROGBITS 0000000000000000 0000ff 000000 00     0   0  0
35 # OUTPUT:      --- !ELF
36 # OUTPUT-NEXT: FileHeader:
37 # OUTPUT-NEXT:   Class: ELFCLASS64
38 # OUTPUT-NEXT:   Data:  ELFDATA2LSB
39 # OUTPUT-NEXT:   Type:  ET_DYN
40 # OUTPUT-NEXT: Sections:
41 # OUTPUT-NEXT:   - Name: .foo.1
42 # OUTPUT-NEXT:     Type: SHT_PROGBITS
43 # OUTPUT-NEXT:   - Name:    .dynsym
44 # OUTPUT-NEXT:     Type:    SHT_DYNSYM
45 # OUTPUT-NEXT:     Flags:   [ SHF_ALLOC ]
46 # OUTPUT-NEXT:     Address: 0x1000
47 # OUTPUT-NEXT:     Link:    .dynstr
48 # OUTPUT-NEXT:   - Name: .foo.2
49 # OUTPUT-NEXT:     Type: SHT_PROGBITS
50 # OUTPUT-NEXT:   - Name:    .dynstr
51 # OUTPUT-NEXT:     Type:    SHT_STRTAB
52 # OUTPUT-NEXT:     Flags:   [ SHF_ALLOC ]
53 # OUTPUT-NEXT:     Address: 0x2000
54 # OUTPUT-NEXT:   - Name: .foo.3
55 # OUTPUT-NEXT:     Type: SHT_PROGBITS
56 # OUTPUT-NEXT:   - Name: .foo.4
57 # OUTPUT-NEXT:     Type: SHT_PROGBITS
58 # OUTPUT-NEXT:   - Name: .foo.5
59 # OUTPUT-NEXT:     Type: SHT_PROGBITS
60 # OUTPUT-NEXT:   - Name: .foo.6
61 # OUTPUT-NEXT:     Type: SHT_PROGBITS
62 # OUTPUT-NEXT: Symbols:
63 # OUTPUT-NEXT:   - Name: foo
64 # OUTPUT-NEXT: DynamicSymbols:
65 # OUTPUT-NEXT:   - Name: bar
66 # OUTPUT-NEXT: ...
68 --- !ELF
69 FileHeader:
70   Class: ELFCLASS64
71   Data:  ELFDATA2LSB
72   Type:  ET_DYN
73 Sections:
74   - Name: .foo.1
75     Type: SHT_PROGBITS
76   - Name:    .dynsym
77     Type:    SHT_DYNSYM
78     Address: 0x1000
79     Flags: [ [[FLAG1]] ]
80   - Name: .foo.2
81     Type: SHT_PROGBITS
82   - Name:    .dynstr
83     Type:    SHT_STRTAB
84     Address: 0x2000
85     Flags: [ [[FLAG1]] ]
86   - Name: .foo.3
87     Type: SHT_PROGBITS
88   - Name:    .symtab
89     Type:    SHT_SYMTAB
90     Address: 0x3000
91     Flags: [ [[FLAG2]] ]
92   - Name: .foo.4
93     Type: SHT_PROGBITS
94   - Name:    .strtab
95     Type:    SHT_STRTAB
96     Address: 0x4000
97     Flags: [ [[FLAG2]] ]
98   - Name: .foo.5
99     Type: SHT_PROGBITS
100   - Name:    .shstrtab
101     Type:    SHT_STRTAB
102     Address: 0x5000
103     Flags: [ [[FLAG2]] ]
104   - Name: .foo.6
105     Type: SHT_PROGBITS
106 Symbols:
107   - Name: foo
108 DynamicSymbols:
109   - Name: bar
111 ## Now test the abnormal case: when .symtab (SHT_SYMTAB),
112 ## .strtab (SHT_STRTAB) and .shstrtab (SHT_STRTAB) are
113 ## allocatable sections, but .dynsym (SHT_DYNSYM) and
114 ## .dynstr (SHT_STRTAB) are not.
115 ## Check that only allocatable versions are explicitly declared.
117 # RUN: yaml2obj %s -o %t2.so -D FLAG1="" -D FLAG2=SHF_ALLOC
118 # RUN: llvm-readelf -S %t2.so | FileCheck %s --check-prefixes=RE,RE-2
119 # RUN: obj2yaml %t2.so | FileCheck %s --check-prefix=OUTPUT2
121 ## Check we explicitly declare only allocatable
122 ## SHT_STRTAB/SHT_SYMTAB/SHT_DYNSYM sections.
123 # OUTPUT2:      --- !ELF
124 # OUTPUT2-NEXT: FileHeader:
125 # OUTPUT2-NEXT:   Class: ELFCLASS64
126 # OUTPUT2-NEXT:   Data:  ELFDATA2LSB
127 # OUTPUT2-NEXT:   Type:  ET_DYN
128 # OUTPUT2-NEXT: Sections:
129 # OUTPUT2-NEXT:   - Name: .foo.1
130 # OUTPUT2-NEXT:     Type: SHT_PROGBITS
131 # OUTPUT2-NEXT:   - Name: .foo.2
132 # OUTPUT2-NEXT:     Type: SHT_PROGBITS
133 # OUTPUT2-NEXT:   - Name: .foo.3
134 # OUTPUT2-NEXT:     Type: SHT_PROGBITS
135 # OUTPUT2-NEXT:   - Name:    .symtab
136 # OUTPUT2-NEXT:     Type:    SHT_SYMTAB
137 # OUTPUT2-NEXT:     Flags:   [ SHF_ALLOC ]
138 # OUTPUT2-NEXT:     Address: 0x3000
139 # OUTPUT2-NEXT:     Link:    .strtab
140 # OUTPUT2-NEXT:   - Name: .foo.4
141 # OUTPUT2-NEXT:     Type: SHT_PROGBITS
142 # OUTPUT2-NEXT:   - Name:    .strtab
143 # OUTPUT2-NEXT:     Type:    SHT_STRTAB
144 # OUTPUT2-NEXT:     Flags:   [ SHF_ALLOC ]
145 # OUTPUT2-NEXT:     Address: 0x4000
146 # OUTPUT2-NEXT:   - Name: .foo.5
147 # OUTPUT2-NEXT:     Type: SHT_PROGBITS
148 # OUTPUT2-NEXT:   - Name:    .shstrtab
149 # OUTPUT2-NEXT:     Type:    SHT_STRTAB
150 # OUTPUT2-NEXT:     Flags:   [ SHF_ALLOC ]
151 # OUTPUT2-NEXT:     Address: 0x5000
152 # OUTPUT2-NEXT:   - Name:    .foo.6
153 # OUTPUT2-NEXT:     Type:    SHT_PROGBITS
154 # OUTPUT2-NEXT: Symbols:
155 # OUTPUT2-NEXT:   - Name: foo
156 # OUTPUT2-NEXT: DynamicSymbols:
157 # OUTPUT2-NEXT:   - Name: bar
158 # OUTPUT2-NEXT: ...