MC asm parser: allow ?'s in symbol names, and handle @'s in names in MS asm

This is another (final?) stab at making us able to parse our own asm output
on Windows.

Symbols on Windows often contain @'s and ?'s in their names. Our asm parser
didn't like this. ?'s were not allowed, and @'s were intepreted as trying to
reference PLT/GOT/etc.

We can't just add quotes around the bad names, since e.g. for MinGW, we use gas
to assemble, and it doesn't like quotes in some places (notably in .def
directives).

This commit makes us allow ?'s in symbol names, and @'s in symbol names for MS
assembly.

Differential Revision: http://llvm-reviews.chandlerc.com/D1978

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193000 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Hans Wennborg
2013-10-18 20:46:28 +00:00
parent 2d8a1d677c
commit 22f9dd4591
8 changed files with 87 additions and 13 deletions

View File

@@ -156,6 +156,10 @@ namespace llvm {
/// symbol names. This defaults to true.
bool AllowPeriodsInName;
/// \brief This is true if the assembler allows @ characters in symbol
/// names. Defaults to false.
bool AllowAtInName;
/// AllowUTF8 - This is true if the assembler accepts UTF-8 input.
// FIXME: Make this a more general encoding setting?
bool AllowUTF8;
@@ -485,6 +489,9 @@ namespace llvm {
bool doesAllowPeriodsInName() const {
return AllowPeriodsInName;
}
bool doesAllowAtInName() const {
return AllowAtInName;
}
bool doesAllowUTF8() const {
return AllowUTF8;
}