[llvm] r321439 - [MC] - Disallow invalid section groups declarations.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 25 01:41:00 PST 2017


Author: grimar
Date: Mon Dec 25 01:41:00 2017
New Revision: 321439

URL: http://llvm.org/viewvc/llvm-project?rev=321439&view=rev
Log:
[MC] - Disallow invalid section groups declarations.

This fixes parseGroup() so that it always sets error condition on error.
Previously it was not done, because parseIdentifier looks never do that,
assuming that caller should do it if he wants to.

So previously cases from test were silently accepted and produced broken output.

Differential revision: https://reviews.llvm.org/D41559

Added:
    llvm/trunk/test/MC/ELF/comdat-declaration-errors.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=321439&r1=321438&r2=321439&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/ELFAsmParser.cpp Mon Dec 25 01:41:00 2017
@@ -427,13 +427,13 @@ bool ELFAsmParser::parseGroup(StringRef
     GroupName = getTok().getString();
     Lex();
   } else if (getParser().parseIdentifier(GroupName)) {
-    return true;
+    return TokError("invalid group name");
   }
   if (L.is(AsmToken::Comma)) {
     Lex();
     StringRef Linkage;
     if (getParser().parseIdentifier(Linkage))
-      return true;
+      return TokError("invalid linkage");
     if (Linkage != "comdat")
       return TokError("Linkage must be 'comdat'");
   }

Added: llvm/trunk/test/MC/ELF/comdat-declaration-errors.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/comdat-declaration-errors.s?rev=321439&view=auto
==============================================================================
--- llvm/trunk/test/MC/ELF/comdat-declaration-errors.s (added)
+++ llvm/trunk/test/MC/ELF/comdat-declaration-errors.s Mon Dec 25 01:41:00 2017
@@ -0,0 +1,14 @@
+// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s \
+// RUN:   -filetype=obj -o %t.o 2>&1 | FileCheck %s
+
+// Check we error out on incorrect COMDATs declarations
+// and not just silently ingnore them.
+
+// CHECK:      error: invalid group name
+// CHECK-NEXT: .section .foo,"G", at progbits,-abc,comdat
+
+// CHECK:      error: invalid linkage
+// CHECK-NEXT: .section .bar,"G", at progbits,abc,-comdat
+
+.section .foo,"G", at progbits,-abc,comdat
+.section .bar,"G", at progbits,abc,-comdat




More information about the llvm-commits mailing list