Recommit "rL366894: [yaml2obj] - Allow custom fields for the SHT_UNDEF sections."
[llvm-complete.git] / test / tools / yaml2obj / elf-override-shsize.yaml
blobe57053bb7479270a7da773597dd25050a74dc115
1 ## Check we are able to set custom sh_size field
2 ## for different sections.
4 # RUN: yaml2obj --docnum=1 %s -o %t1
5 # RUN: llvm-readelf --sections %t1 | FileCheck %s --check-prefix=CASE1
7 # CASE1:      Section Headers:
8 # CASE1-NEXT:  [Nr] Name           Type     Address          Off    Size  
9 # CASE1-NEXT:  [ 0]                NULL     0000000000000000 000000 000000
10 # CASE1-NEXT:  [ 1] .dynsym        DYNSYM   0000000000000000 000380 000001
11 # CASE1-NEXT:  [ 2] .symtab        SYMTAB   0000000000000000 000398 000002
12 # CASE1-NEXT:  [ 3] .dynamic       DYNAMIC  0000000000000000 0003b0 000003
13 # CASE1-NEXT:  [ 4] .rela          RELA     0000000000000000 0003b0 000004
14 # CASE1-NEXT:  [ 5] .nobits        NOBITS   0000000000000000 0003b0 000005
15 # CASE1-NEXT:  [ 6] .group         GROUP    0000000000000000 0003b0 000006
16 # CASE1-NEXT:  [ 7] .gnu.version   VERSYM   0000000000000000 0003b0 000007
17 # CASE1-NEXT:  [ 8] .gnu.version_r VERNEED  0000000000000000 0003b0 000008
18 # CASE1-NEXT:  [ 9] .gnu.version_d VERDEF   0000000000000000 0003b0 000009
19 # CASE1-NEXT:  [10] .regular       PROGBITS 0000000000000000 0003b0 00000a
20 # CASE1-NEXT:  [11] .strtab        STRTAB   0000000000000000 0003b0 00000b
22 --- !ELF
23 FileHeader:
24   Class:   ELFCLASS64
25   Data:    ELFDATA2LSB
26   Type:    ET_REL
27   Machine: EM_X86_64
28 Sections:
29   - Name: .dynsym
30     Type: SHT_DYNSYM
31     ShSize: 0x000000001
32   - Name: .symtab
33     Type: SHT_SYMTAB
34     ShSize: 0x000000002
35   - Name: .dynamic
36     Type: SHT_DYNAMIC
37     ShSize: 0x000000003
38   - Name: .rela
39     Type: SHT_RELA
40     ShSize: 0x000000004
41   - Name: .nobits
42     Type: SHT_NOBITS
43     ShSize: 0x000000005
44   - Name: .group
45     Type: SHT_GROUP
46     Info: 0
47     ShSize: 0x000000006
48     Members:
49   - Name: .gnu.version
50     Type: SHT_GNU_versym
51     Entries: [ ]
52     ShSize: 0x000000007
53   - Name: .gnu.version_r
54     Type: SHT_GNU_verneed
55     Info: 0x0000000000000001
56     ShSize: 0x000000008
57     Dependencies:
58   - Name: .gnu.version_d
59     Type: SHT_GNU_verdef
60     Info: 0x0000000000000001
61     ShSize: 0x000000009
62     Entries:
63   - Name: .regular
64     Type: SHT_PROGBITS
65     ShSize: 0x00000000A
66   - Name: .strtab
67     Type: SHT_STRTAB
68     ShSize: 0x00000000B
70 ## Here we check that defining ShSize does not actually change
71 ## the content and also does not affect file size.
73 # RUN: yaml2obj --docnum=2 %s -o %t2
74 # RUN: yaml2obj --docnum=3 %s -o %t3
75 # RUN: od -t x8 -v %t2 > %t.txt
76 # RUN: od -t x8 -v %t3 >> %t.txt
77 # RUN: FileCheck %s --input-file=%t.txt --check-prefix=CASE2
79 # CASE2: [[OFFSET:.*]] fefefefefefefefe
80 # CASE2: [[FILESIZE:.*]]{{$}}
81 # CASE2: [[OFFSET]] fefefefefefefefe
82 # CASE2: [[FILESIZE]]{{$}}
84 --- !ELF
85 FileHeader:
86   Class:   ELFCLASS64
87   Data:    ELFDATA2LSB
88   Type:    ET_REL
89   Machine: EM_X86_64
90 Sections:
91   - Name: .foo
92     Type: SHT_PROGBITS
93     Content: "fefefefefefefefe"
95 --- !ELF
96 FileHeader:
97   Class:   ELFCLASS64
98   Data:    ELFDATA2LSB
99   Type:    ET_REL
100   Machine: EM_X86_64
101 Sections:
102   - Name: .foo
103     Type: SHT_PROGBITS
104     ShSize: 1
105     Content: "fefefefefefefefe"
107 ## Check we can define sh_size larger than section content size
108 ## and thus create overlaping sections.
110 # RUN: yaml2obj --docnum=4 %s -o %t4
111 # RUN: llvm-readobj --sections --section-data %t4 | FileCheck %s --check-prefix=CASE4
113 # CASE4:      Name: .foo
114 # CASE4:      SectionData (
115 # CASE4-NEXT: 0000: AAAABBBB |....|
116 # CASE4:      Name: .bar
117 # CASE4:      SectionData (
118 # CASE4-NEXT: 0000: BBBB |..|
120 --- !ELF
121 FileHeader:
122   Class:   ELFCLASS64
123   Data:    ELFDATA2LSB
124   Type:    ET_REL
125   Machine: EM_X86_64
126 Sections:
127   - Name: .foo
128     Type: SHT_PROGBITS
129     Content: "aaaa"
130     ShSize: 4
131   - Name: .bar
132     Type: SHT_PROGBITS
133     Content: "bbbb"
135 ## Check we can set both Size and ShSize and the number of the actual
136 ## bytes written is equal to Size in this case.
138 # RUN: yaml2obj --docnum=5 %s -o %t5
139 # RUN: od -t x1 -v %t5 | FileCheck %s --check-prefix=CASE5
141 # CASE5: aa aa 00 00 bb bb
143 --- !ELF
144 FileHeader:
145   Class:   ELFCLASS64
146   Data:    ELFDATA2LSB
147   Type:    ET_REL
148   Machine: EM_X86_64
149 Sections:
150   - Name: .foo
151     Type: SHT_PROGBITS
152     Content: "aaaa"
153   - Name: .bar
154     Type: SHT_PROGBITS
155     Size: 2
156     ShSize: 4
157   - Name: .zed
158     Type: SHT_PROGBITS
159     Content: "bbbb"