[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