From 184640e96e391ecfc4621156907b29f132c14959 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 24 Jan 2011 18:02:54 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124127 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCParser/ELFAsmParser.cpp | 17 ++++++++++++++--- test/MC/ELF/section.s | 7 +++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/MC/MCParser/ELFAsmParser.cpp b/lib/MC/MCParser/ELFAsmParser.cpp index 39ff906ea7a..7b88ea2d1da 100644 --- a/lib/MC/MCParser/ELFAsmParser.cpp +++ b/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/test/MC/ELF/section.s b/test/MC/ELF/section.s index 427f125f1eb..861dc4f057f 100644 --- a/test/MC/ELF/section.s +++ b/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' -- 2.11.0