Index: llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp =================================================================== --- llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp +++ llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp @@ -423,8 +423,12 @@ if (L.isNot(AsmToken::Comma)) return TokError("expected group name"); Lex(); - if (getParser().parseIdentifier(GroupName)) + if (L.is(AsmToken::Integer)) { + GroupName = getTok().getString(); + Lex(); + } else if (getParser().parseIdentifier(GroupName)) { return true; + } if (L.is(AsmToken::Comma)) { Lex(); StringRef Linkage; Index: llvm/trunk/test/MC/ELF/comdat-name-number.s =================================================================== --- llvm/trunk/test/MC/ELF/comdat-name-number.s +++ llvm/trunk/test/MC/ELF/comdat-name-number.s @@ -0,0 +1,28 @@ +// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o %t.o +// RUN: llvm-readobj -elf-section-groups %t.o | FileCheck %s + +// Test that we can handle numeric COMDAT names. + +.section .foo,"G",@progbits,123,comdat +.section .bar,"G",@progbits,abc,comdat + +// CHECK: Groups { +// CHECK-NEXT: Group { +// CHECK-NEXT: Name: .group +// CHECK-NEXT: Index: +// CHECK-NEXT: Type: COMDAT +// CHECK-NEXT: Signature: 123 +// CHECK-NEXT: Section(s) in group [ +// CHECK-NEXT: .foo +// CHECK-NEXT: ] +// CHECK-NEXT: } +// CHECK-NEXT: Group { +// CHECK-NEXT: Name: .group +// CHECK-NEXT: Index: +// CHECK-NEXT: Type: COMDAT +// CHECK-NEXT: Signature: abc +// CHECK-NEXT: Section(s) in group [ +// CHECK-NEXT: .bar +// CHECK-NEXT: ] +// CHECK-NEXT: } +// CHECK-NEXT: }