Use a comma after the unique keyword.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 6 Apr 2015 16:34:41 +0000 (16:34 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 6 Apr 2015 16:34:41 +0000 (16:34 +0000)
H.J. Lu noted that all .section options are separated by a comma.

This patch changes the syntax of unique to require one.

llvm-svn: 234174

llvm/docs/Extensions.rst
llvm/lib/MC/MCParser/ELFAsmParser.cpp
llvm/lib/MC/MCSectionELF.cpp
llvm/test/MC/ELF/section-unique-err1.s
llvm/test/MC/ELF/section-unique-err2.s
llvm/test/MC/ELF/section-unique-err3.s
llvm/test/MC/ELF/section-unique-err4.s [new file with mode: 0644]
llvm/test/MC/ELF/section-unique.s

index 12eac5e..c8ff07c 100644 (file)
@@ -178,10 +178,10 @@ For example, the following code creates two sections named ``.text``.
 
 .. code-block:: gas
 
-       .section        .text,"ax",@progbits,unique 1
+       .section        .text,"ax",@progbits,unique,1
         nop
 
-       .section        .text,"ax",@progbits,unique 2
+       .section        .text,"ax",@progbits,unique,2
         nop
 
 
index 4cb3dfe..a19339d 100644 (file)
@@ -470,6 +470,9 @@ bool ELFAsmParser::ParseSectionArguments(bool IsPush, SMLoc loc) {
           return TokError("expected identifier in directive");
         if (UniqueStr != "unique")
           return TokError("expected 'unique'");
+        if (getLexer().isNot(AsmToken::Comma))
+          return TokError("expected commma");
+        Lex();
         if (getParser().parseAbsoluteExpression(UniqueID))
           return true;
         if (UniqueID < 0)
index 2b9b8c6..3cd8453 100644 (file)
@@ -149,7 +149,7 @@ void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &MAI,
   }
 
   if (isUnique())
-    OS << ",unique " << UniqueID;
+    OS << ",unique," << UniqueID;
 
   OS << '\n';
 
index 0b4985b..3a997d1 100644 (file)
@@ -2,4 +2,4 @@
 
 // CHECK:  error: expected absolute expression
 
-        .section       .text,"ax",@progbits,unique "abc"
+        .section       .text,"ax",@progbits,unique, "abc"
index b2ac4f8..7b7cd5f 100644 (file)
@@ -2,4 +2,4 @@
 
 // CHECK:  error: unique id must be positive
 
-        .section       .text,"ax",@progbits,unique -1
+        .section       .text,"ax",@progbits,unique, -1
index 67e962b..bbccd24 100644 (file)
@@ -2,4 +2,4 @@
 
 // CHECK:  error: unique id is too large
 
-        .section       .text,"ax",@progbits,unique 4294967295
+        .section       .text,"ax",@progbits,unique, 4294967295
diff --git a/llvm/test/MC/ELF/section-unique-err4.s b/llvm/test/MC/ELF/section-unique-err4.s
new file mode 100644 (file)
index 0000000..3c82682
--- /dev/null
@@ -0,0 +1,5 @@
+// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s -o - 2>&1 | FileCheck %s
+
+// CHECK:  error: expected commma
+
+        .section       .text,"ax",@progbits,unique 1
index ffd11d9..3fe7271 100644 (file)
@@ -1,22 +1,22 @@
 // RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -o - | FileCheck %s
 // RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -filetype=obj -o - | llvm-readobj -t | FileCheck %s --check-prefix=OBJ
 
-       .section        .text,"ax",@progbits,unique 4294967293
+       .section        .text,"ax",@progbits,unique, 4294967293
         .globl f
 f:
         nop
 
-       .section        .text,"ax",@progbits,unique 4294967294
+       .section        .text,"ax",@progbits,unique, 4294967294
         .globl g
 g:
         nop
 
 // test that f and g are in different sections.
 
-// CHECK: .section     .text,"ax",@progbits,unique 4294967293
+// CHECK: .section     .text,"ax",@progbits,unique,4294967293
 // CHECK: f:
 
-// CHECK: .section     .text,"ax",@progbits,unique 4294967294
+// CHECK: .section     .text,"ax",@progbits,unique,4294967294
 // CHECK: g:
 
 // OBJ: Symbol {