Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit 94a0cff

Browse files
committed
[llvm-readobj] Separate Symbol Version dumpers into LLVM style and GNU style
Summary: Currently, llvm-readobj can dump symbol version sections only in LLVM style. In this patch, I would like to separate these dumpers into GNU style and LLVM style for future implementation. Reviewers: grimar, jhenderson, mattd, rupprecht Reviewed By: rupprecht Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59186 llvm-svn: 356764
1 parent 221081e commit 94a0cff

File tree

5 files changed

+289
-203
lines changed

5 files changed

+289
-203
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,118 @@
11
// Test that llvm-readobj dumps version info tags correctly.
22

3-
RUN: llvm-readobj -dynamic-table -V %p/Inputs/verdef.elf-x86-64 | FileCheck %s
3+
RUN: llvm-readobj -dynamic-table -V %p/Inputs/verdef.elf-x86-64 | FileCheck %s --check-prefix=LLVM-VERDEF
4+
RUN: llvm-readelf -dynamic-table -V %p/Inputs/verdef.elf-x86-64 | FileCheck %s --check-prefix=GNU-VERDEF
45

5-
CHECK: 0x000000006FFFFFF0 VERSYM 0x24C
6-
CHECK: 0x000000006FFFFFFC VERDEF 0x25C
7-
CHECK: 0x000000006FFFFFFD VERDEFNUM 3
6+
LLVM-VERDEF: 0x000000006FFFFFF0 VERSYM 0x24C
7+
LLVM-VERDEF: 0x000000006FFFFFFC VERDEF 0x25C
8+
LLVM-VERDEF: 0x000000006FFFFFFD VERDEFNUM 3
89

9-
CHECK: Version symbols {
10-
CHECK-NEXT: Section Name: .gnu.version (20)
11-
CHECK-NEXT: Address: 0x24C
12-
CHECK-NEXT: Offset: 0x24C
13-
CHECK-NEXT: Link: 1
14-
CHECK-NEXT: Symbols [
15-
CHECK-NEXT: Symbol {
16-
CHECK-NEXT: Version: 0
17-
CHECK-NEXT: Name: {{$}}
18-
CHECK-NEXT: }
19-
CHECK-NEXT: Symbol {
20-
CHECK-NEXT: Version: 1
21-
CHECK-NEXT: Name: _end{{$}}
22-
CHECK-NEXT: }
23-
CHECK-NEXT: Symbol {
24-
CHECK-NEXT: Version: 1
25-
CHECK-NEXT: Name: _edata{{$}}
26-
CHECK-NEXT: }
27-
CHECK-NEXT: Symbol {
28-
CHECK-NEXT: Version: 3
29-
CHECK-NEXT: Name: goo@@VERSION2
30-
CHECK-NEXT: }
31-
CHECK-NEXT: Symbol {
32-
CHECK-NEXT: Version: 1
33-
CHECK-NEXT: Name: __bss_start{{$}}
34-
CHECK-NEXT: }
35-
CHECK-NEXT: Symbol {
36-
CHECK-NEXT: Version: 2
37-
CHECK-NEXT: Name: foo@@VERSION1
38-
CHECK-NEXT: }
39-
CHECK-NEXT: Symbol {
40-
CHECK-NEXT: Version: 2
41-
CHECK-NEXT: Name: VERSION1@@VERSION1
42-
CHECK-NEXT: }
43-
CHECK-NEXT: Symbol {
44-
CHECK-NEXT: Version: 3
45-
CHECK-NEXT: Name: VERSION2@@VERSION2
46-
CHECK-NEXT: }
47-
CHECK-NEXT: ]
48-
CHECK-NEXT: }
10+
LLVM-VERDEF: Version symbols {
11+
LLVM-VERDEF-NEXT: Section Name: .gnu.version (20)
12+
LLVM-VERDEF-NEXT: Address: 0x24C
13+
LLVM-VERDEF-NEXT: Offset: 0x24C
14+
LLVM-VERDEF-NEXT: Link: 1
15+
LLVM-VERDEF-NEXT: Symbols [
16+
LLVM-VERDEF-NEXT: Symbol {
17+
LLVM-VERDEF-NEXT: Version: 0
18+
LLVM-VERDEF-NEXT: Name: {{$}}
19+
LLVM-VERDEF-NEXT: }
20+
LLVM-VERDEF-NEXT: Symbol {
21+
LLVM-VERDEF-NEXT: Version: 1
22+
LLVM-VERDEF-NEXT: Name: _end{{$}}
23+
LLVM-VERDEF-NEXT: }
24+
LLVM-VERDEF-NEXT: Symbol {
25+
LLVM-VERDEF-NEXT: Version: 1
26+
LLVM-VERDEF-NEXT: Name: _edata{{$}}
27+
LLVM-VERDEF-NEXT: }
28+
LLVM-VERDEF-NEXT: Symbol {
29+
LLVM-VERDEF-NEXT: Version: 3
30+
LLVM-VERDEF-NEXT: Name: goo@@VERSION2
31+
LLVM-VERDEF-NEXT: }
32+
LLVM-VERDEF-NEXT: Symbol {
33+
LLVM-VERDEF-NEXT: Version: 1
34+
LLVM-VERDEF-NEXT: Name: __bss_start{{$}}
35+
LLVM-VERDEF-NEXT: }
36+
LLVM-VERDEF-NEXT: Symbol {
37+
LLVM-VERDEF-NEXT: Version: 2
38+
LLVM-VERDEF-NEXT: Name: foo@@VERSION1
39+
LLVM-VERDEF-NEXT: }
40+
LLVM-VERDEF-NEXT: Symbol {
41+
LLVM-VERDEF-NEXT: Version: 2
42+
LLVM-VERDEF-NEXT: Name: VERSION1@@VERSION1
43+
LLVM-VERDEF-NEXT: }
44+
LLVM-VERDEF-NEXT: Symbol {
45+
LLVM-VERDEF-NEXT: Version: 3
46+
LLVM-VERDEF-NEXT: Name: VERSION2@@VERSION2
47+
LLVM-VERDEF-NEXT: }
48+
LLVM-VERDEF-NEXT: ]
49+
LLVM-VERDEF-NEXT: }
4950

50-
CHECK: SHT_GNU_verdef {
51-
CHECK-NEXT: Definition {
52-
CHECK-NEXT: Version: 1
53-
CHECK-NEXT: Flags: Base (0x1)
54-
CHECK-NEXT: Index: 1
55-
CHECK-NEXT: Hash: 430712
56-
CHECK-NEXT: Name: blah
57-
CHECK-NEXT: }
58-
CHECK-NEXT: Definition {
59-
CHECK-NEXT: Version: 1
60-
CHECK-NEXT: Flags: 0x0
61-
CHECK-NEXT: Index: 2
62-
CHECK-NEXT: Hash: 175630257
63-
CHECK-NEXT: Name: VERSION1
64-
CHECK-NEXT: }
65-
CHECK-NEXT: Definition {
66-
CHECK-NEXT: Version: 1
67-
CHECK-NEXT: Flags: 0x0
68-
CHECK-NEXT: Index: 3
69-
CHECK-NEXT: Hash: 175630258
70-
CHECK-NEXT: Name: VERSION2
71-
CHECK-NEXT: Predecessor: VERSION1
72-
CHECK-NEXT: }
73-
CHECK-NEXT: }
51+
LLVM-VERDEF: SHT_GNU_verdef {
52+
LLVM-VERDEF-NEXT: Definition {
53+
LLVM-VERDEF-NEXT: Version: 1
54+
LLVM-VERDEF-NEXT: Flags: Base (0x1)
55+
LLVM-VERDEF-NEXT: Index: 1
56+
LLVM-VERDEF-NEXT: Hash: 430712
57+
LLVM-VERDEF-NEXT: Name: blah
58+
LLVM-VERDEF-NEXT: }
59+
LLVM-VERDEF-NEXT: Definition {
60+
LLVM-VERDEF-NEXT: Version: 1
61+
LLVM-VERDEF-NEXT: Flags: 0x0
62+
LLVM-VERDEF-NEXT: Index: 2
63+
LLVM-VERDEF-NEXT: Hash: 175630257
64+
LLVM-VERDEF-NEXT: Name: VERSION1
65+
LLVM-VERDEF-NEXT: }
66+
LLVM-VERDEF-NEXT: Definition {
67+
LLVM-VERDEF-NEXT: Version: 1
68+
LLVM-VERDEF-NEXT: Flags: 0x0
69+
LLVM-VERDEF-NEXT: Index: 3
70+
LLVM-VERDEF-NEXT: Hash: 175630258
71+
LLVM-VERDEF-NEXT: Name: VERSION2
72+
LLVM-VERDEF-NEXT: Predecessor: VERSION1
73+
LLVM-VERDEF-NEXT: }
74+
LLVM-VERDEF-NEXT: }
7475

75-
RUN: llvm-readobj -V %p/Inputs/verneed.elf-x86-64 | FileCheck %s --check-prefix=VERNEED
76+
GNU-VERDEF: 0x000000006ffffff0 VERSYM 0x24c
77+
GNU-VERDEF: 0x000000006ffffffc VERDEF 0x25c
78+
GNU-VERDEF: 0x000000006ffffffd VERDEFNUM 3
7679

77-
VERNEED: SHT_GNU_verneed {
78-
VERNEED-NEXT: Dependency {
79-
VERNEED-NEXT: Version: 1
80-
VERNEED-NEXT: Count: 2
81-
VERNEED-NEXT: FileName: verneed1.so.0
82-
VERNEED-NEXT: Entry {
83-
VERNEED-NEXT: Hash: 1938
84-
VERNEED-NEXT: Flags: 0x0
85-
VERNEED-NEXT: Index: 3
86-
VERNEED-NEXT: Name: v2
87-
VERNEED-NEXT: }
88-
VERNEED-NEXT: Entry {
89-
VERNEED-NEXT: Hash: 1939
90-
VERNEED-NEXT: Flags: 0x0
91-
VERNEED-NEXT: Index: 2
92-
VERNEED-NEXT: Name: v3
93-
VERNEED-NEXT: }
94-
VERNEED-NEXT: }
95-
VERNEED-NEXT: Dependency {
96-
VERNEED-NEXT: Version: 1
97-
VERNEED-NEXT: Count: 1
98-
VERNEED-NEXT: FileName: verneed2.so.0
99-
VERNEED-NEXT: Entry {
100-
VERNEED-NEXT: Hash: 1937
101-
VERNEED-NEXT: Flags: 0x0
102-
VERNEED-NEXT: Index: 4
103-
VERNEED-NEXT: Name: v1
104-
VERNEED-NEXT: }
105-
VERNEED-NEXT: }
106-
VERNEED-NEXT: }
80+
GNU-VERDEF: Dumper for .gnu.version is not implemented
81+
GNU-VERDEF: Dumper for .gnu.version_d is not implemented
82+
83+
RUN: llvm-readobj -V %p/Inputs/verneed.elf-x86-64 | FileCheck %s --check-prefix=LLVM-VERNEED
84+
RUN: llvm-readelf -V %p/Inputs/verneed.elf-x86-64 | FileCheck %s --check-prefix=GNU-VERNEED
85+
86+
LLVM-VERNEED: SHT_GNU_verneed {
87+
LLVM-VERNEED-NEXT: Dependency {
88+
LLVM-VERNEED-NEXT: Version: 1
89+
LLVM-VERNEED-NEXT: Count: 2
90+
LLVM-VERNEED-NEXT: FileName: verneed1.so.0
91+
LLVM-VERNEED-NEXT: Entry {
92+
LLVM-VERNEED-NEXT: Hash: 1938
93+
LLVM-VERNEED-NEXT: Flags: 0x0
94+
LLVM-VERNEED-NEXT: Index: 3
95+
LLVM-VERNEED-NEXT: Name: v2
96+
LLVM-VERNEED-NEXT: }
97+
LLVM-VERNEED-NEXT: Entry {
98+
LLVM-VERNEED-NEXT: Hash: 1939
99+
LLVM-VERNEED-NEXT: Flags: 0x0
100+
LLVM-VERNEED-NEXT: Index: 2
101+
LLVM-VERNEED-NEXT: Name: v3
102+
LLVM-VERNEED-NEXT: }
103+
LLVM-VERNEED-NEXT: }
104+
LLVM-VERNEED-NEXT: Dependency {
105+
LLVM-VERNEED-NEXT: Version: 1
106+
LLVM-VERNEED-NEXT: Count: 1
107+
LLVM-VERNEED-NEXT: FileName: verneed2.so.0
108+
LLVM-VERNEED-NEXT: Entry {
109+
LLVM-VERNEED-NEXT: Hash: 1937
110+
LLVM-VERNEED-NEXT: Flags: 0x0
111+
LLVM-VERNEED-NEXT: Index: 4
112+
LLVM-VERNEED-NEXT: Name: v1
113+
LLVM-VERNEED-NEXT: }
114+
LLVM-VERNEED-NEXT: }
115+
LLVM-VERNEED-NEXT: }
116+
117+
GNU-VERNEED: Dumper for .gnu.version is not implemented
118+
GNU-VERNEED: Dumper for .gnu.version_r is not implemented

llvm/test/tools/yaml2obj/verdef-section.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# RUN: yaml2obj %s -o %t
2-
# RUN: llvm-readelf -V %t | FileCheck %s
2+
# RUN: llvm-readobj -V %t | FileCheck %s
33

44
# Check we are able to handle the SHT_GNU_verdef sections.
55

llvm/test/tools/yaml2obj/verneed-section.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# RUN: yaml2obj %s -o %t
2-
# RUN: llvm-readelf -V %t | FileCheck %s
2+
# RUN: llvm-readobj -V %t | FileCheck %s
33

44
# Check we are able to handle the SHT_GNU_verneed sections.
55

llvm/test/tools/yaml2obj/versym-section.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# RUN: yaml2obj %s -o %t
2-
# RUN: llvm-readelf -V %t | FileCheck %s
2+
# RUN: llvm-readobj -V %t | FileCheck %s
33

44
## Check we are able to produce a valid SHT_GNU_versym
55
## section from its description.

0 commit comments

Comments
 (0)