Index: llvm/trunk/test/tools/yaml2obj/elf-comdat-broken.yaml =================================================================== --- llvm/trunk/test/tools/yaml2obj/elf-comdat-broken.yaml +++ llvm/trunk/test/tools/yaml2obj/elf-comdat-broken.yaml @@ -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: } Index: llvm/trunk/tools/yaml2obj/yaml2elf.cpp =================================================================== --- llvm/trunk/tools/yaml2obj/yaml2elf.cpp +++ llvm/trunk/tools/yaml2obj/yaml2elf.cpp @@ -537,7 +537,8 @@ 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";