[yaml2obj/obj2yaml] - Add support for SHT_HASH sections.
[llvm-complete.git] / test / tools / yaml2obj / elf-hash-section.yaml
blob9995574df0e3b874936515a402c9fe5e23621218
1 ## Check how yaml2obj produces SHT_HASH sections.
3 ## Check we can describe a SHT_HASH section using the "Content" tag.
5 # RUN: yaml2obj --docnum=1 %s -o %t1
6 # RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s --check-prefix=CONTENT
8 # CONTENT:      Name: .hash
9 # CONTENT-NEXT: Type: SHT_HASH
10 # CONTENT-NEXT: Flags [
11 # CONTENT-NEXT: ]
12 # CONTENT-NEXT: Address: 0x0
13 # CONTENT-NEXT: Offset: 0x44
14 # CONTENT-NEXT: Size: 20
15 # CONTENT-NEXT: Link: 1
16 # CONTENT-NEXT: Info: 0
17 # CONTENT-NEXT: AddressAlignment: 0
18 # CONTENT-NEXT: EntrySize: 0
19 # CONTENT-NEXT: SectionData (
20 # CONTENT-NEXT:   0000: 01000000 02000000 03000000 04000000
21 # CONTENT-NEXT:   0010: 05000000
22 # CONTENT-NEXT: )
24 --- !ELF
25 FileHeader:
26   Class:   ELFCLASS32
27   Data:    ELFDATA2LSB
28   Type:    ET_DYN
29   Machine: EM_386
30 Sections:
31 ## SHT_HASH is linked to dynamic symbol table by default.
32   - Name: .dynsym
33     Type: SHT_DYNSYM
34   - Name:    .hash
35     Type:    SHT_HASH
36     Content: '0100000002000000030000000400000005000000'
38 ## Check we can describe a SHT_HASH section using "Bucket" and "Chain" tags.
40 # RUN: yaml2obj --docnum=2 %s -o %t2
41 # RUN: llvm-readobj --sections --section-data %t2 | FileCheck %s --check-prefix=BUCKET-CHAIN
43 # BUCKET-CHAIN:      Name: .hash
44 # BUCKET-CHAIN:      Size:
45 # BUCKET-CHAIN-SAME: 28
46 # BUCKET-CHAIN:      Link:
47 # BUCKET-CHAIN-SAME: 0
48 # BUCKET-CHAIN:      SectionData (
49 # BUCKET-CHAIN-NEXT:   0000: 02000000 03000000 01000000 02000000  |
50 # BUCKET-CHAIN-NEXT:   0010: 03000000 04000000 05000000           |
51 # BUCKET-CHAIN-NEXT: )
53 --- !ELF
54 FileHeader:
55   Class:   ELFCLASS32
56   Data:    ELFDATA2LSB
57   Type:    ET_DYN
58   Machine: EM_386
59 Sections:
60   - Name:   .hash
61     Type:   SHT_HASH
62     Bucket: [ 1, 2 ]
63     Chain:  [ 3, 4, 5 ]
65 ## Check we can't use "Content" and "Bucket" tags together.
67 # RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-BUCKET
69 # CONTENT-BUCKET: error: "Content" and "Bucket" cannot be used together
71 --- !ELF
72 FileHeader:
73   Class:   ELFCLASS32
74   Data:    ELFDATA2LSB
75   Type:    ET_DYN
76   Machine: EM_386
77 Sections:
78   - Name:   .hash
79     Type:   SHT_HASH
80     Bucket: [ 1 ]
81     Content: '00'
83 ## Check we can't use "Content" and "Chain" tags together.
85 # RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --check-prefix=CONTENT-CHAIN
87 # CONTENT-CHAIN: error: "Content" and "Chain" cannot be used together
89 --- !ELF
90 FileHeader:
91   Class:   ELFCLASS32
92   Data:    ELFDATA2LSB
93   Type:    ET_DYN
94   Machine: EM_386
95 Sections:
96   - Name:   .hash
97     Type:   SHT_HASH
98     Chain:  [ 1 ]
99     Content: '00'
101 ## Check we can't use "Bucket" without "Chain".
103 # RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --check-prefix=NO-BUCKET-OR-CHAIN
105 # NO-BUCKET-OR-CHAIN: error: "Bucket" and "Chain" must be used together
107 --- !ELF
108 FileHeader:
109   Class:   ELFCLASS32
110   Data:    ELFDATA2LSB
111   Type:    ET_DYN
112   Machine: EM_386
113 Sections:
114   - Name:   .hash
115     Type:   SHT_HASH
116     Bucket: [ 1 ]
118 ## Check we can't use "Chain" without "Bucket".
120 # RUN: not yaml2obj --docnum=6 %s 2>&1 | FileCheck %s --check-prefix=NO-BUCKET-OR-CHAIN
122 --- !ELF
123 FileHeader:
124   Class:   ELFCLASS32
125   Data:    ELFDATA2LSB
126   Type:    ET_DYN
127   Machine: EM_386
128 Sections:
129   - Name:  .hash
130     Type:  SHT_HASH
131     Chain: [ 1 ]
133 ## Check we report an error if neither "Bucket", "Chain" nor "Content" were set.
135 # RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=NO-TAGS
137 # NO-TAGS: error: one of "Content", "Bucket" or "Chain" must be specified
139 --- !ELF
140 FileHeader:
141   Class:   ELFCLASS32
142   Data:    ELFDATA2LSB
143   Type:    ET_DYN
144   Machine: EM_386
145 Sections:
146   - Name:  .hash
147     Type:  SHT_HASH