[llvm] r321419 - [MC] - Teach llvm-mc to handle comdats whose names are numbers.
George Rimar via llvm-commits
llvm-commits at lists.llvm.org
Sat Dec 23 22:13:37 PST 2017
Author: grimar
Date: Sat Dec 23 22:13:36 2017
New Revision: 321419
URL: http://llvm.org/viewvc/llvm-project?rev=321419&view=rev
Log:
[MC] - Teach llvm-mc to handle comdats whose names are numbers.
Currently llvm-mc ignores COMDATs whose names are numbers,
for example following code:
.section .foo,"G", at progbits,123,comdat
would produce no COMDATs at all.
Patch fixes the issue.
Differential revision: https://reviews.llvm.org/D41552
Added:
llvm/trunk/test/MC/ELF/comdat-name-number.s
Modified:
llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp
Modified: llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp?rev=321419&r1=321418&r2=321419&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp Sat Dec 23 22:13:36 2017
@@ -423,8 +423,12 @@ bool ELFAsmParser::parseGroup(StringRef
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;
Added: llvm/trunk/test/MC/ELF/comdat-name-number.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/comdat-name-number.s?rev=321419&view=auto
==============================================================================
--- llvm/trunk/test/MC/ELF/comdat-name-number.s (added)
+++ llvm/trunk/test/MC/ELF/comdat-name-number.s Sat Dec 23 22:13:36 2017
@@ -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", at progbits,123,comdat
+.section .bar,"G", at 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: }
More information about the llvm-commits
mailing list