diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-01-24 18:02:54 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-01-24 18:02:54 +0000 |
| commit | 689939e648156deaf569d30d339e0fada15fedde (patch) | |
| tree | dd1a42738d9ef52cbe8b6bb923a368f815a0d435 /llvm | |
| parent | 3ac8cd614f5c5accb346d584e167c1ea99c069ae (diff) | |
| download | bcm5719-llvm-689939e648156deaf569d30d339e0fada15fedde.tar.gz bcm5719-llvm-689939e648156deaf569d30d339e0fada15fedde.zip | |
Handle strings in section names the same way as gas:
* If the name is a single string, we remove the quotes
* If the name starts without a quote, we include any quotes in the name
llvm-svn: 124127
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/MC/MCParser/ELFAsmParser.cpp | 17 | ||||
| -rw-r--r-- | llvm/test/MC/ELF/section.s | 7 |
2 files changed, 21 insertions, 3 deletions
diff --git a/llvm/lib/MC/MCParser/ELFAsmParser.cpp b/llvm/lib/MC/MCParser/ELFAsmParser.cpp index 39ff906ea7a..7b88ea2d1da 100644 --- a/llvm/lib/MC/MCParser/ELFAsmParser.cpp +++ b/llvm/lib/MC/MCParser/ELFAsmParser.cpp @@ -168,6 +168,12 @@ bool ELFAsmParser::ParseSectionName(StringRef &SectionName) { SMLoc FirstLoc = getLexer().getLoc(); unsigned Size = 0; + if (getLexer().is(AsmToken::String)) { + SectionName = getTok().getIdentifier(); + Lex(); + return false; + } + for (;;) { StringRef Tmp; unsigned CurSize; @@ -176,10 +182,15 @@ bool ELFAsmParser::ParseSectionName(StringRef &SectionName) { if (getLexer().is(AsmToken::Minus)) { CurSize = 1; Lex(); // Consume the "-". - } else if (!getParser().ParseIdentifier(Tmp)) - CurSize = Tmp.size(); - else + } else if (getLexer().is(AsmToken::String)) { + CurSize = getTok().getIdentifier().size() + 2; + Lex(); + } else if (getLexer().is(AsmToken::Identifier)) { + CurSize = getTok().getIdentifier().size(); + Lex(); + } else { break; + } Size += CurSize; SectionName = StringRef(FirstLoc.getPointer(), Size); diff --git a/llvm/test/MC/ELF/section.s b/llvm/test/MC/ELF/section.s index 427f125f1eb..861dc4f057f 100644 --- a/llvm/test/MC/ELF/section.s +++ b/llvm/test/MC/ELF/section.s @@ -101,3 +101,10 @@ bar: // CHECK-NEXT: ('sh_addralign', 0x00000001) // CHECK-NEXT: ('sh_entsize', 0x00000000) // CHECK-NEXT: ), + +// Test that we handle the strings like gas +.section bar-"foo" +.section "foo" + +// CHECK: ('sh_name', 0x0000008a) # 'bar-"foo"' +// CHECK: ('sh_name', 0x00000094) # 'foo' |

