Skip to content

Commit c836e48

Browse files
committed
[yaml2obj]Allow number for ELF symbol type
yaml2obj previously only recognised standard STT_* names, and didn't allow arbitrary numbers. This change allows the user to specify a number for the type instead. It also adds a test to verify the existing behaviour for obj2yaml for unkown symbol types. Reviewed by: grimar Differential Revision: https://reviews.llvm.org/D57822 llvm-svn: 353315
1 parent 33dbcbb commit c836e48

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

llvm/lib/ObjectYAML/ELFYAML.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,7 @@ void ScalarEnumerationTraits<ELFYAML::ELF_STT>::enumeration(
572572
ECase(STT_TLS);
573573
ECase(STT_GNU_IFUNC);
574574
#undef ECase
575+
IO.enumFallback<Hex8>(Value);
575576
}
576577

577578
void ScalarEnumerationTraits<ELFYAML::ELF_STV>::enumeration(
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# RUN: yaml2obj %s > %t
2+
# RUN: obj2yaml %t | FileCheck %s
3+
4+
# CHECK: Symbols:
5+
# CHECK-NEXT: Global:
6+
# CHECK-NEXT: - Name: a_known_type
7+
# CHECK-NEXT: Type: STT_OBJECT
8+
# CHECK-NEXT: - Name: an_unknown_type
9+
# CHECK-NEXT: Type: 0x07
10+
11+
!ELF
12+
FileHeader:
13+
Class: ELFCLASS64
14+
Data: ELFDATA2LSB
15+
Type: ET_REL
16+
Machine: EM_X86_64
17+
Symbols:
18+
Global:
19+
- Name: a_known_type
20+
Type: STT_OBJECT
21+
- Name: an_unknown_type
22+
Type: 0x7
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# RUN: yaml2obj %s > %t
2+
# RUN: llvm-readobj --symbols %t | FileCheck %s
3+
4+
# CHECK: Name: notype
5+
# CHECK: Type: None
6+
# CHECK: Name: normal_type
7+
# CHECK: Type: Object
8+
# CHECK: Name: .text
9+
# CHECK: Type: Section
10+
# CHECK: Name: known_hex
11+
# CHECK: Type: Object
12+
# CHECK: Name: unknown_hex
13+
# CHECK: Type: 0xB
14+
# CHECK: Name: known_int
15+
# CHECK: Type: Object
16+
# CHECK: Name: unknown_int
17+
# CHECK: Type: 0xB
18+
19+
!ELF
20+
FileHeader:
21+
Class: ELFCLASS64
22+
Data: ELFDATA2LSB
23+
Type: ET_REL
24+
Machine: EM_X86_64
25+
Sections:
26+
- Name: .text
27+
Type: SHT_PROGBITS
28+
Symbols:
29+
Global:
30+
- Name: notype
31+
Type: STT_NOTYPE
32+
- Name: normal_type
33+
Type: STT_OBJECT
34+
- Name: .text
35+
Type: STT_SECTION
36+
- Name: known_hex
37+
Type: 0x1
38+
- Name: unknown_hex
39+
Type: 0xb
40+
- Name: known_int
41+
Type: 1
42+
- Name: unknown_int
43+
Type: 11

0 commit comments

Comments
 (0)