[InstCombine] Signed saturation patterns
[llvm-core.git] / test / tools / llvm-readobj / elf-dynamic-not-in-pt-dynamic.test
blobcb8da637e006ae65e8f4b0465dc635fd4d8af86f
1 ## Show that llvm-readobj/llvm-readelf tools sometimes can dump the
2 ## dynamic table when it is not in a PT_DYNAMIC segment.
4 ## Case 1: The dynamic table found using the dynamic program header is corrupted
5 ##         (<size of data> % <size of dynamic entry> != 0). So the table is taken
6 ##         from the section header.
8 # RUN: yaml2obj --docnum=1 %s -o %t1.o
9 # RUN: llvm-readobj --dynamic-table %t1.o 2>&1 \
10 # RUN:   | FileCheck -DFILE=%t1.o --check-prefixes=WARNING1,LLVM1 %s
11 # RUN: llvm-readelf --dynamic-table %t1.o 2>&1 \
12 # RUN:   | FileCheck -DFILE=%t1.o --check-prefixes=WARNING1,GNU1 %s
14 # WARNING1: warning: '[[FILE]]': The SHT_DYNAMIC section '.dynamic' is not contained within the PT_DYNAMIC segment
15 # WARNING1: warning: '[[FILE]]': invalid section size (1) or entity size (16)
16 # WARNING1: warning: '[[FILE]]': SHT_DYNAMIC section header and PT_DYNAMIC program header disagree about the location of the dynamic table
17 # WARNING1: warning: '[[FILE]]': PT_DYNAMIC dynamic table is invalid: SHT_DYNAMIC will be used
19 # LLVM1:      DynamicSection [ (2 entries)
20 # LLVM1-NEXT:   Tag                Type     Name/Value
21 # LLVM1-NEXT:   0x0000000000000018 BIND_NOW 0x1
22 # LLVM1-NEXT:   0x0000000000000000 NULL     0x0
23 # LLVM1-NEXT: ]
25 # GNU1:      Dynamic section at offset 0x{{.*}} contains 2 entries:
26 # GNU1-NEXT:   Tag                Type       Name/Value
27 # GNU1-NEXT:   0x0000000000000018 (BIND_NOW) 0x1
28 # GNU1-NEXT:   0x0000000000000000 (NULL)     0x0
30 --- !ELF
31 FileHeader:
32   Class:   ELFCLASS64
33   Data:    ELFDATA2LSB
34   Type:    ET_EXEC
35   Machine: EM_X86_64
36 Sections:
37   - Name: .dynamic
38     Type: SHT_DYNAMIC
39     Flags: [SHF_ALLOC]
40     Address: 0x1000
41     AddressAlign: 0x1000
42     Entries:
43       - Tag:   DT_BIND_NOW
44         Value: 0x1
45       - Tag:   DT_NULL
46         Value: 0x0
47   - Name: .text
48     Type: SHT_PROGBITS
49     Flags: [SHF_ALLOC]
50     Address: 0x1100
51     AddressAlign: 0x100
52     Content: "00"
53 ProgramHeaders:
54   - Type: PT_LOAD
55     VAddr: 0x1000
56     Sections:
57       - Section: .dynamic
58       - Section: .text
59   - Type: PT_DYNAMIC
60     VAddr: 0x1000
61     Sections:
62       - Section: .text
64 ## Case 2: The dynamic table found using the dynamic program header is different from the
65 ##         table found using the section header table.
67 # RUN: yaml2obj --docnum=2 %s -o %t2.o
68 # RUN: llvm-readobj --dynamic-table %t2.o 2>&1 \
69 # RUN:   | FileCheck -DFILE=%t2.o --check-prefixes=WARNING2,LLVM2 %s
70 # RUN: llvm-readelf --dynamic-table %t2.o 2>&1 \
71 # RUN:   | FileCheck -DFILE=%t2.o --check-prefixes=WARNING2,GNU2 %s
73 # WARNING2: warning: '[[FILE]]': The SHT_DYNAMIC section '.dynamic' is not contained within the PT_DYNAMIC segment
74 # WARNING2: warning: '[[FILE]]': SHT_DYNAMIC section header and PT_DYNAMIC program header disagree about the location of the dynamic table
76 # LLVM2:      DynamicSection [ (1 entries)
77 # LLVM2-NEXT:   Tag                Type     Name/Value
78 # LLVM2-NEXT:   0x0000000000000000 NULL     0x0
79 # LLVM2-NEXT: ]
81 # GNU2:      Dynamic section at offset 0x{{.*}} contains 1 entries:
82 # GNU2-NEXT:   Tag                Type       Name/Value
83 # GNU2-NEXT:   0x0000000000000000 (NULL)     0x0
85 --- !ELF
86 FileHeader:
87   Class:   ELFCLASS64
88   Data:    ELFDATA2LSB
89   Type:    ET_EXEC
90   Machine: EM_X86_64
91 Sections:
92   - Name: .dynamic
93     Type: SHT_DYNAMIC
94     Flags: [SHF_ALLOC]
95     Address: 0x1000
96     AddressAlign: 0x1000
97     Entries:
98       - Tag:   DT_BIND_NOW
99         Value: 0x1
100       - Tag:   DT_NULL
101         Value: 0x0
102   - Name: .text
103     Type: SHT_PROGBITS
104     Flags: [SHF_ALLOC]
105     Address: 0x1100
106     AddressAlign: 0x100
107     Content: "00000000000000000000000000000000"
108 ProgramHeaders:
109   - Type: PT_LOAD
110     VAddr: 0x1000
111     Sections:
112       - Section: .dynamic
113       - Section: .text
114   - Type: PT_DYNAMIC
115     VAddr: 0x1000
116     Sections:
117       - Section: .text
119 ## Case 3: Both dynamic tables found using SHT_DYNAMIC/PT_DYNAMIC are corrupted.
121 # RUN: yaml2obj --docnum=3 %s -o %t3.o
122 # RUN: llvm-readobj --dynamic-table %t3.o 2>&1 \
123 # RUN:   | FileCheck -DFILE=%t3.o --check-prefix=WARNING3 --implicit-check-not="Dynamic" %s
124 # RUN: llvm-readelf --dynamic-table %t3.o 2>&1 \
125 # RUN:   | FileCheck -DFILE=%t3.o --check-prefix=WARNING3 --implicit-check-not="Dynamic" %s
127 # WARNING3: warning: '[[FILE]]': invalid section size (1) or entity size (16)
128 # WARNING3: warning: '[[FILE]]': SHT_DYNAMIC section header and PT_DYNAMIC program header disagree about the location of the dynamic table
129 # WARNING3: warning: '[[FILE]]': no valid dynamic table was found
131 --- !ELF
132 FileHeader:
133   Class:   ELFCLASS64
134   Data:    ELFDATA2LSB
135   Type:    ET_EXEC
136   Machine: EM_X86_64
137 Sections:
138   - Name: .dynamic
139     Type: SHT_DYNAMIC
140     Flags: [SHF_ALLOC]
141     Address: 0x1000
142     AddressAlign: 0x1000
143     Content: "00"
144   - Name: .text
145     Type: SHT_PROGBITS
146     Flags: [SHF_ALLOC]
147     Address: 0x1100
148     AddressAlign: 0x100
149     Content: "00"
150 ProgramHeaders:
151   - Type: PT_LOAD
152     VAddr: 0x1000
153     Sections:
154       - Section: .dynamic
155       - Section: .text
156   - Type: PT_DYNAMIC
157     VAddr: 0x1000
158     Sections:
159       - Section: .text