From 22f9dd4591e8af6d6feed10a4b6e11a784582edc Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Fri, 18 Oct 2013 20:46:28 +0000 Subject: 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 --- test/MC/ELF/bad-relocation.s | 7 +++++++ test/MC/ELF/symbol-names.s | 12 ++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 test/MC/ELF/bad-relocation.s create mode 100644 test/MC/ELF/symbol-names.s (limited to 'test/MC/ELF') diff --git a/test/MC/ELF/bad-relocation.s b/test/MC/ELF/bad-relocation.s new file mode 100644 index 0000000000..1a66744ec8 --- /dev/null +++ b/test/MC/ELF/bad-relocation.s @@ -0,0 +1,7 @@ +// RUN: not llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o /dev/null 2>&1 | FileCheck %s + +// CHECK: error: invalid variant 'BADRELOC' + + .text +foo: + leal .Lfoo@BADRELOC(%ebx), %eax diff --git a/test/MC/ELF/symbol-names.s b/test/MC/ELF/symbol-names.s new file mode 100644 index 0000000000..6459ac93cc --- /dev/null +++ b/test/MC/ELF/symbol-names.s @@ -0,0 +1,12 @@ +// RUN: llvm-mc -triple i686-pc-linux -filetype=obj %s -o - | llvm-readobj -t | FileCheck %s + +// MC allows ?'s in symbol names as an extension. + +.text +.globl foo?bar +.type foo?bar, @function +foo?bar: +ret + +// CHECK: Symbol +// CHECK: Name: foo?bar -- cgit v1.2.3