Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / tools / obj2yaml / ELF / duplicate-symbol-and-section-names.yaml
blob97724f72fcd11a500a0545959c22654bb9f9e566
1 ## Check that obj2yaml is able to produce YAML from
2 ## an object containing symbols and sections with duplicate
3 ## names and produces same-named sections and symbols
4 ## with distinguishing suffixes.
6 # RUN: yaml2obj --docnum=1 %s -o %t1
7 # RUN: llvm-readobj -s -t %t1 | FileCheck %s
9 # CHECK: Name: .foo (
10 # CHECK: Name: .foo (
11 # CHECK: Name: .foo (
12 # CHECK: Name: .bar (
13 # CHECK: Name: .bar (
14 # CHECK: Name: .bar (
16 # CHECK: Name: localfoo (
17 # CHECK: Name: localfoo (
18 # CHECK: Name: localfoo (
19 # CHECK: Name: localbar (
20 # CHECK: Name: localbar (
21 # CHECK: Name: localbar (
23 # RUN: obj2yaml %t1 | FileCheck %s --check-prefix=CASE1
25 # CASE1:      --- !ELF
26 # CASE1-NEXT: FileHeader:
27 # CASE1-NEXT:   Class: ELFCLASS64
28 # CASE1-NEXT:   Data:  ELFDATA2LSB
29 # CASE1-NEXT:   Type:  ET_REL
30 # CASE1-NEXT: Sections:
31 # CASE1-NEXT:   - Name: .foo
32 # CASE1-NEXT:     Type: SHT_PROGBITS
33 # CASE1-NEXT:   - Name: '.foo (1)'
34 # CASE1-NEXT:     Type: SHT_PROGBITS
35 # CASE1-NEXT:   - Name: '.foo (2)'
36 # CASE1-NEXT:     Type: SHT_PROGBITS
37 # CASE1-NEXT:   - Name: .bar
38 # CASE1-NEXT:     Type: SHT_PROGBITS
39 # CASE1-NEXT:   - Name: '.bar (1)'
40 # CASE1-NEXT:     Type: SHT_PROGBITS
41 # CASE1-NEXT:   - Name: '.bar (2)'
42 # CASE1-NEXT:     Type: SHT_PROGBITS
43 # CASE1-NEXT: Symbols:
44 # CASE1-NEXT:   - Name: localfoo
45 # CASE1-NEXT:   - Name: 'localfoo (1)'
46 # CASE1-NEXT:   - Name: 'localfoo (2)'
47 # CASE1-NEXT:   - Name: localbar
48 # CASE1-NEXT:   - Name: 'localbar (1)'
49 # CASE1-NEXT:   - Name: 'localbar (2)'
50 # CASE1-NEXT: ...
52 --- !ELF
53 FileHeader:
54   Class: ELFCLASS64
55   Data:  ELFDATA2LSB
56   Type:  ET_REL
57 Sections:
58   - Name: .foo
59     Type: SHT_PROGBITS
60   - Name: '.foo (555)'
61     Type: SHT_PROGBITS
62   - Name: '.foo (random_tag)'
63     Type: SHT_PROGBITS
64   - Name: .bar
65     Type: SHT_PROGBITS
66   - Name: '.bar (666)'
67     Type: SHT_PROGBITS
68   - Name: '.bar (random_tag)'
69     Type: SHT_PROGBITS
70 Symbols:
71   - Name: 'localfoo (111)'
72   - Name: 'localfoo (222)'
73   - Name: 'localfoo (random_tag)'
74   - Name: 'localbar (333)'
75   - Name: 'localbar (444)'
76   - Name: 'localbar (random_tag)'
78 ## Check we can refer to symbols with the same
79 ## name from relocations.
81 # RUN: yaml2obj --docnum=2 %s -o %t2
82 # RUN: obj2yaml %t2 | FileCheck %s --check-prefix=CASE2
84 # CASE2:      Relocations:
85 # CASE2-NEXT:  - Symbol: 'foo (1)'
86 # CASE2-NEXT:    Type:   R_X86_64_PC32
87 # CASE2-NEXT:  - Offset: 0x4
88 # CASE2-NEXT:    Symbol: foo
89 # CASE2-NEXT:    Type:   R_X86_64_PC32
90 # CASE2-NEXT: Symbols:
91 # CASE2-NEXT:  - Name: foo
92 # CASE2-NEXT:  - Name: 'foo (1)'
93   
94 --- !ELF
95 FileHeader:
96   Class:   ELFCLASS64
97   Data:    ELFDATA2LSB
98   Type:    ET_REL
99   Machine: EM_X86_64
100 Sections:
101   - Name: .text
102     Type: SHT_PROGBITS
103     Size: 8
104   - Name: .rela.text
105     Type: SHT_RELA
106     Info: .text
107     Link: .symtab
108     Relocations:
109       - Type: R_X86_64_PC32
110         Symbol: 'foo (1)'
111       - Type: R_X86_64_PC32
112         Offset: 4
113         Symbol: foo
114 Symbols:
115   - Name: foo
116   - Name: 'foo (1)'
118 ## Check obj2yaml does not add a suffix to a name if the
119 ## symbol is in .symtab and .dynsym at the same time.
121 # RUN: yaml2obj --docnum=3 %s -o %t3
122 # RUN: obj2yaml %t3 | FileCheck %s --check-prefix=CASE3
124 # CASE3:      Symbols:
125 # CASE3-NEXT:   - Name:    foo
126 # CASE3-NEXT:     Binding: STB_GLOBAL
127 # CASE3-NEXT: DynamicSymbols:
128 # CASE3-NEXT:   - Name:    foo
129 # CASE3-NEXT:     Binding: STB_GLOBAL
131 --- !ELF
132 FileHeader:
133   Class: ELFCLASS64
134   Data:  ELFDATA2LSB
135   Type:  ET_DYN
136 Symbols:
137   - Name:    foo
138     Binding: STB_GLOBAL
139 DynamicSymbols:
140   - Name:    foo
141     Binding: STB_GLOBAL