[Alignment][NFC] Instructions::getLoadStoreAlignment
[llvm-complete.git] / test / tools / llvm-readobj / elf-non-dynamic-in-pt-dynamic.test
blob77dea95903e3ea66f096d81bb155a27385eaf468
1 ## Show that llvm-readobj/llvm-readelf tools can dump the .dynamic section which
2 ## is not alone in PT_DYNAMIC segment.
4 ## In the first case .text is placed before .dynamic.
5 ## We check that we warn about this case.
7 # RUN: yaml2obj --docnum=1 %s -o %t1.o
8 # RUN: llvm-readobj --dynamic-table %t1.o 2>&1 \
9 # RUN:   | FileCheck %s --DFILE=%t1.o --check-prefixes=WARNING,LLVM
10 # RUN: llvm-readelf --dynamic-table %t1.o 2>&1 \
11 # RUN:   | FileCheck %s --DFILE=%t1.o --check-prefixes=WARNING,GNU
13 # WARNING: warning: '[[FILE]]': The SHT_DYNAMIC section '.dynamic' is not at the start of PT_DYNAMIC segment
14 # WARNING: warning: '[[FILE]]': invalid section size (33) or entity size (16)
15 # WARNING: warning: '[[FILE]]': SHT_DYNAMIC section header and PT_DYNAMIC program header disagree about the location of the dynamic table
16 # WARNING: warning: '[[FILE]]': PT_DYNAMIC dynamic table is invalid: SHT_DYNAMIC will be used
18 # LLVM:      DynamicSection [ (2 entries)
19 # LLVM-NEXT:   Tag                Type     Name/Value
20 # LLVM-NEXT:   0x0000000000000018 BIND_NOW 0x1
21 # LLVM-NEXT:   0x0000000000000000 NULL     0x0
22 # LLVM-NEXT: ]
24 # GNU:      Dynamic section at offset 0x{{.*}} contains 2 entries:
25 # GNU-NEXT:   Tag                Type       Name/Value
26 # GNU-NEXT:   0x0000000000000018 (BIND_NOW) 0x1
27 # GNU-NEXT:   0x0000000000000000 (NULL)     0x0
29 --- !ELF
30 FileHeader:
31   Class:   ELFCLASS64
32   Data:    ELFDATA2LSB
33   Type:    ET_EXEC
34   Machine: EM_X86_64
35 Sections:
36   - Name: .text
37     Type: SHT_PROGBITS
38     Flags: [SHF_ALLOC]
39     Address: 0x1000
40     AddressAlign: 0x100
41     Content: "00"
42   - Name: .dynamic
43     Type: SHT_DYNAMIC
44     Flags: [SHF_ALLOC]
45     Address: 0x1001
46     Entries:
47       - Tag:   DT_BIND_NOW
48         Value: 0x1
49       - Tag:   DT_NULL
50         Value: 0x0
51 ProgramHeaders:
52   - Type: PT_LOAD
53     VAddr: 0x1000
54     Sections:
55       - Section: .text
56       - Section: .dynamic
57   - Type: PT_DYNAMIC
58     VAddr: 0x1000
59     Sections:
60       - Section: .text
61       - Section: .dynamic
63 ## In this case .text goes after .dynamic and we don't display any warnings,
64 ## though the content of the .text is used for dumping the dynamic table.
66 # RUN: yaml2obj --docnum=2 %s -o %t2.o
67 # RUN: llvm-readobj --dynamic-table %t2.o 2>&1 | FileCheck %s --check-prefix=LLVM2
68 # RUN: llvm-readelf --dynamic-table %t2.o 2>&1 | FileCheck %s --check-prefix=GNU2
70 # LLVM2:      DynamicSection [ (3 entries)
71 # LLVM2-NEXT:   Tag                Type     Name/Value
72 # LLVM2-NEXT:   0x0000000000000018 BIND_NOW 0x1
73 # LLVM2-NEXT:   0x0000000000000018 BIND_NOW 0x2
74 # LLVM2-NEXT:   0x0000000000000000 NULL     0x0
75 # LLVM2-NEXT: ]
77 # GNU2:      Dynamic section at offset 0x{{.*}} contains 3 entries:
78 # GNU2-NEXT:   Tag                Type       Name/Value
79 # GNU2-NEXT:   0x0000000000000018 (BIND_NOW) 0x1
80 # GNU2-NEXT:   0x0000000000000018 (BIND_NOW) 0x2
81 # GNU2-NEXT:   0x0000000000000000 (NULL)     0x0
83 --- !ELF
84 FileHeader:
85   Class:   ELFCLASS64
86   Data:    ELFDATA2LSB
87   Type:    ET_EXEC
88   Machine: EM_X86_64
89 Sections:
90   - Name: .dynamic
91     Type: SHT_DYNAMIC
92     Flags: [SHF_ALLOC]
93     Address: 0x1000
94     AddressAlign: 0x1000
95     Entries:
96       - Tag:   DT_BIND_NOW
97         Value: 0x1
98       - Tag:   DT_BIND_NOW
99         Value: 0x2
100   - Name: .text
101     Type: SHT_PROGBITS
102     Flags: [SHF_ALLOC]
103     Address: 0x1100
104     AddressAlign: 0x100
105     Content: "00000000000000000000000000000000"
106 ProgramHeaders:
107   - Type: PT_LOAD
108     VAddr: 0x1000
109     Sections:
110       - Section: .dynamic
111       - Section: .text
112   - Type: PT_DYNAMIC
113     VAddr: 0x1000
114     Sections:
115       - Section: .dynamic
116       - Section: .text
118 ## In this case .text goes after .dynamic, but (PT_DYNAMIC segment size % dynamic entry size != 0)
119 ## and we have to use the information from the section header instead.
121 # RUN: yaml2obj --docnum=3 %s -o %t3.o
122 # RUN: llvm-readobj --dynamic-table %t3.o 2>&1 | FileCheck %s --DFILE=%t3.o --check-prefixes=WARNING2,LLVM3
123 # RUN: llvm-readelf --dynamic-table %t3.o 2>&1 | FileCheck %s --DFILE=%t3.o --check-prefixes=WARNING2,GNU3
125 # WARNING2: warning: '[[FILE]]': invalid section size (257) or entity size (16)
126 # WARNING2: warning: '[[FILE]]': PT_DYNAMIC dynamic table is invalid: SHT_DYNAMIC will be used
128 # LLVM3:      DynamicSection [ (2 entries)
129 # LLVM3-NEXT:   Tag                Type     Name/Value
130 # LLVM3-NEXT:   0x0000000000000018 BIND_NOW 0x1
131 # LLVM3-NEXT:   0x0000000000000000 NULL     0x0
132 # LLVM3-NEXT: ]
134 # GNU3:      Dynamic section at offset 0x{{.*}} contains 2 entries:
135 # GNU3-NEXT:   Tag                Type       Name/Value
136 # GNU3-NEXT:   0x0000000000000018 (BIND_NOW) 0x1
137 # GNU3-NEXT:   0x0000000000000000 (NULL)     0x0
139 --- !ELF
140 FileHeader:
141   Class:   ELFCLASS64
142   Data:    ELFDATA2LSB
143   Type:    ET_EXEC
144   Machine: EM_X86_64
145 Sections:
146   - Name: .dynamic
147     Type: SHT_DYNAMIC
148     Flags: [SHF_ALLOC]
149     Address: 0x1000
150     AddressAlign: 0x1000
151     Entries:
152       - Tag:   DT_BIND_NOW
153         Value: 0x1
154       - Tag:   DT_NULL
155         Value: 0x0
156   - Name: .text
157     Type: SHT_PROGBITS
158     Flags: [SHF_ALLOC]
159     Address: 0x1100
160     AddressAlign: 0x100
161     Content: "00"
162 ProgramHeaders:
163   - Type: PT_LOAD
164     VAddr: 0x1000
165     Sections:
166       - Section: .dynamic
167       - Section: .text
168   - Type: PT_DYNAMIC
169     VAddr: 0x1000
170     Sections:
171       - Section: .dynamic
172       - Section: .text