mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-02 00:16:25 +00:00
[yaml2obj] - Teach tool to produce SHT_GROUP section with a custom type.
Currently, it is possible to use yaml2obj for producing SHT_GROUP sections of type GRP_COMDAT. For LLD test case I need to produce an object with a broken (different from GRP_COMDAT) type. The patch teaches tool to do such things. Differential revision: https://reviews.llvm.org/D50761 llvm-svn: 339764
This commit is contained in:
parent
46d60a61fa
commit
dda68cb795
34
test/tools/yaml2obj/elf-comdat-broken.yaml
Normal file
34
test/tools/yaml2obj/elf-comdat-broken.yaml
Normal file
@ -0,0 +1,34 @@
|
||||
# RUN: yaml2obj %s -o %t
|
||||
# RUN: llvm-readobj -sections -elf-section-groups %t | FileCheck %s
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .group
|
||||
Type: SHT_GROUP
|
||||
Link: .symtab
|
||||
Info: foo
|
||||
Members:
|
||||
- SectionOrType: 0xFF
|
||||
- SectionOrType: 3
|
||||
Symbols:
|
||||
Global:
|
||||
- Name: foo
|
||||
|
||||
## Check we are able to produce SHT_GROUP section with a custom Type (0xFF).
|
||||
# CHECK: Groups {
|
||||
# CHECK-NEXT: Group {
|
||||
# CHECK-NEXT: Name: .group
|
||||
# CHECK-NEXT: Index: 1
|
||||
# CHECK-NEXT: Link: 2
|
||||
# CHECK-NEXT: Info: 1
|
||||
# CHECK-NEXT: Type: COMDAT (0xFF)
|
||||
# CHECK-NEXT: Signature: foo
|
||||
# CHECK-NEXT: Section(s) in group [
|
||||
# CHECK-NEXT: .strtab (3)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: }
|
@ -537,7 +537,8 @@ bool ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader,
|
||||
unsigned int sectionIndex = 0;
|
||||
if (member.sectionNameOrType == "GRP_COMDAT")
|
||||
sectionIndex = llvm::ELF::GRP_COMDAT;
|
||||
else if (SN2I.lookup(member.sectionNameOrType, sectionIndex)) {
|
||||
else if (SN2I.lookup(member.sectionNameOrType, sectionIndex) &&
|
||||
!to_integer(member.sectionNameOrType, sectionIndex)) {
|
||||
WithColor::error() << "Unknown section referenced: '"
|
||||
<< member.sectionNameOrType << "' at YAML section' "
|
||||
<< Section.Name << "\n";
|
||||
|
Loading…
Reference in New Issue
Block a user