Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / tools / llvm-readobj / ELF / needed-libs.test
blobd37ab6238e137d6552a2a1fd784c61212ae60b0a
1 ## In this test we check the --needed-libs option.
3 # RUN: yaml2obj %s --docnum=1 -o %t1
4 # RUN: llvm-readobj --needed-libs %t1 2>&1 \
5 # RUN:   | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --strict-whitespace --check-prefix=NEEDED-LIBS
6 # RUN: llvm-readelf --needed-libs %t1 2>&1 \
7 # RUN:   | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --strict-whitespace --check-prefix=NEEDED-LIBS
9 ## Check that library names are sorted when printed.
10 ## Document that we also sort error entries.
12 #      NEEDED-LIBS:{{^}}NeededLibraries [{{$}}
13 # NEEDED-LIBS-NEXT:  warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x9999a11: it goes past the end of the table (0x85){{$}}
14 # NEEDED-LIBS-NEXT:  warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x1111189: it goes past the end of the table (0x85){{$}}
15 # NEEDED-LIBS-NEXT:{{^}}  <?>{{$}}
16 # NEEDED-LIBS-NEXT:{{^}}  <?>{{$}}
17 # NEEDED-LIBS-NEXT:{{^}}  aaa{{$}}
18 # NEEDED-LIBS-NEXT:{{^}}  bbb{{$}}
19 # NEEDED-LIBS-NEXT:{{^}}  ccc{{$}}
20 # NEEDED-LIBS-NEXT:{{^}}]{{$}}
22 --- !ELF
23 FileHeader:
24   Class: ELFCLASS64
25   Data:  ELFDATA2LSB
26   Type:  ET_EXEC
27 Sections:
28   - Name:  .dynstr
29     Type:  SHT_STRTAB
30     Flags: [ SHF_ALLOC ]
31     Content: '00616161006262620063636300' ## 0,a,a,a,0,b,b,b,0,c,c,c,0
32   - Name:    .dynamic
33     Type:    SHT_DYNAMIC
34     Entries:
35       - Tag:   DT_STRTAB
36         Value: 0x0000000000000000
37       - Tag:   DT_NEEDED
38         Value: 0x9999999
39       - Tag:   DT_NEEDED
40         Value: 9
41       - Tag:   DT_NEEDED
42         Value: 1
43       - Tag:   DT_NEEDED
44         Value: 5
45       - Tag:   DT_NEEDED
46         Value: 0x1111111
47       - Tag:   DT_STRSZ
48         Value: [[SIZE=0xD]]
49       - Tag:   DT_NULL
50         Value: 0x0
51 ProgramHeaders:
52   - Type: PT_LOAD
53     VAddr: 0x0
54     FirstSec: .dynstr
55     LastSec:  .dynamic
57 ## Check what we print when the dynamic string table is empty.
58 # RUN: yaml2obj %s --docnum=2 -o %t2
59 # RUN: llvm-readobj --needed-libs %t2 2>&1 | \
60 # RUN:   FileCheck %s -DFILE=%t2 --implicit-check-not=warning: --check-prefix=EMPTY-DYNSTR
61 # RUN: llvm-readelf --needed-libs %t2 2>&1 | \
62 # RUN:   FileCheck %s -DFILE=%t2 --implicit-check-not=warning: --check-prefix=EMPTY-DYNSTR
64 # EMPTY-DYNSTR:      NeededLibraries [
65 # EMPTY-DYNSTR-NEXT: warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x79: it goes past the end of the table (0x78)
66 # EMPTY-DYNSTR-NEXT: warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x7a: it goes past the end of the table (0x78)
67 # EMPTY-DYNSTR-NEXT:   <?>
68 # EMPTY-DYNSTR-NEXT:   <?>
69 # EMPTY-DYNSTR-NEXT: ]
71 --- !ELF
72 FileHeader:
73   Class: ELFCLASS64
74   Data:  ELFDATA2LSB
75   Type:  ET_EXEC
76 Sections:
77   - Name:  .dynstr
78     Type:  SHT_STRTAB
79     Flags: [ SHF_ALLOC ]
80     Size:  0
81   - Name:    .dynamic
82     Type:    SHT_DYNAMIC
83     Address: 0x1000
84     Entries:
85       - Tag:   DT_STRTAB
86         Value: 0x0000000000000000
87       - Tag:   DT_NEEDED
88         Value: 1
89       - Tag:   DT_NEEDED
90         Value: 2
91       - Tag:   DT_STRSZ
92         Value: 0x0
93       - Tag:   DT_NULL
94         Value: 0x0
95 ProgramHeaders:
96   - Type:     PT_LOAD
97     VAddr:    0x0
98     FirstSec: .dynstr
99     LastSec:  .dynamic