[llvm-readobj/llvm-readelf] - Improve/cleanup the error reporting API.
[llvm-complete.git] / test / tools / llvm-readobj / elf-non-dynamic-in-pt-dynamic.test
blob08bae9467af78c8596609f615af0b187fa6ae11e
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 %t.o
8 # RUN: llvm-readobj --dynamic-table %t.o 2>&1 \
9 # RUN:   | FileCheck %s --DFILE=%t.o --check-prefixes=WARNING,LLVM
10 # RUN: llvm-readelf --dynamic-table %t.o 2>&1 \
11 # RUN:   | FileCheck %s --DFILE=%t.o --check-prefixes=WARNING,GNU
13 # WARNING:    warning: '[[FILE]]': The SHT_DYNAMIC section '.dynamic' is not at the start of PT_DYNAMIC segment
15 # LLVM:      DynamicSection [ (2 entries)
16 # LLVM-NEXT:   Tag                Type     Name/Value
17 # LLVM-NEXT:   0x0000000000000018 BIND_NOW 0x1
18 # LLVM-NEXT:   0x0000000000000000 NULL     0x0
19 # LLVM-NEXT: ]
21 # GNU:      Dynamic section at offset 0x{{.*}} contains 2 entries:
22 # GNU-NEXT:   Tag                Type       Name/Value
23 # GNU-NEXT:   0x0000000000000018 (BIND_NOW) 0x1
24 # GNU-NEXT:   0x0000000000000000 (NULL)     0x0
26 --- !ELF
27 FileHeader:
28   Class:   ELFCLASS64
29   Data:    ELFDATA2LSB
30   Type:    ET_EXEC
31   Machine: EM_X86_64
32 Sections:
33   - Name: .text
34     Type: SHT_PROGBITS
35     Flags: [SHF_ALLOC]
36     Address: 0x1000
37     AddressAlign: 0x100
38     Content: "00"
39   - Name: .dynamic
40     Type: SHT_DYNAMIC
41     Flags: [SHF_ALLOC]
42     Address: 0x1100
43     AddressAlign: 0x1000
44     Entries:
45       - Tag:   DT_BIND_NOW
46         Value: 0x1
47       - Tag:   DT_NULL
48         Value: 0x0
49 ProgramHeaders:
50   - Type: PT_LOAD
51     VAddr: 0x1000
52     Sections:
53       - Section: .text
54       - Section: .dynamic
55   - Type: PT_DYNAMIC
56     VAddr: 0x1000
57     Sections:
58       - Section: .text
59       - Section: .dynamic
61 ## In the second case .text goes after .dynamic and we don't display any warnings.
63 # RUN: yaml2obj --docnum=2 %s -o %t.o
64 # RUN: llvm-readobj --dynamic-table %t.o | FileCheck %s --implicit-check-not="warning"
65 # RUN: llvm-readelf --dynamic-table %t.o | FileCheck %s --implicit-check-not="warning"
67 --- !ELF
68 FileHeader:
69   Class:   ELFCLASS64
70   Data:    ELFDATA2LSB
71   Type:    ET_EXEC
72   Machine: EM_X86_64
73 Sections:
74   - Name: .dynamic
75     Type: SHT_DYNAMIC
76     Flags: [SHF_ALLOC]
77     Address: 0x1000
78     AddressAlign: 0x1000
79     Entries:
80       - Tag:   DT_BIND_NOW
81         Value: 0x1
82       - Tag:   DT_NULL
83         Value: 0x0
84   - Name: .text
85     Type: SHT_PROGBITS
86     Flags: [SHF_ALLOC]
87     Address: 0x1100
88     AddressAlign: 0x100
89     Content: "00"
90 ProgramHeaders:
91   - Type: PT_LOAD
92     VAddr: 0x1000
93     Sections:
94       - Section: .dynamic
95       - Section: .text
96   - Type: PT_DYNAMIC
97     VAddr: 0x1000
98     Sections:
99       - Section: .dynamic
100       - Section: .text