[llvm] r215373 - MC: Diagnose an unexpected token in COFF .section instead of asserting

Reid Kleckner reid at kleckner.net
Mon Aug 11 11:34:43 PDT 2014


Author: rnk
Date: Mon Aug 11 13:34:43 2014
New Revision: 215373

URL: http://llvm.org/viewvc/llvm-project?rev=215373&view=rev
Log:
MC: Diagnose an unexpected token in COFF .section instead of asserting

This can easily arise when trying to assemble and ELF style .section
directive for a COFF object file.

Modified:
    llvm/trunk/lib/MC/MCParser/COFFAsmParser.cpp
    llvm/trunk/test/MC/COFF/section-invalid-flags.s

Modified: llvm/trunk/lib/MC/MCParser/COFFAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/COFFAsmParser.cpp?rev=215373&r1=215372&r2=215373&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/COFFAsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/COFFAsmParser.cpp Mon Aug 11 13:34:43 2014
@@ -364,6 +364,10 @@ bool COFFAsmParser::ParseDirectiveSectio
 
     Flags |= COFF::IMAGE_SCN_LNK_COMDAT;
 
+    if (!getLexer().is(AsmToken::Identifier))
+      return TokError("expected comdat type such as 'discard' or 'largest' "
+                      "after protection bits");
+
     if (parseCOMDATType(Type))
       return true;
 

Modified: llvm/trunk/test/MC/COFF/section-invalid-flags.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/COFF/section-invalid-flags.s?rev=215373&r1=215372&r2=215373&view=diff
==============================================================================
--- llvm/trunk/test/MC/COFF/section-invalid-flags.s (original)
+++ llvm/trunk/test/MC/COFF/section-invalid-flags.s Mon Aug 11 13:34:43 2014
@@ -6,3 +6,6 @@
 
 // CHECK: error: conflicting section flags 'b' and 'd'
 .section s_bd,"bd"; .long 1
+
+// CHECK: error: expected comdat type such as 'discard' or 'largest' after protection bits
+.section .stack, "w", @nobits





More information about the llvm-commits mailing list