mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
a034c96443
ARM assembly syntax uses @ for a comment, execpt for the second parameter of the .symver directive which requires @ as part of the symbol name. This commit fixes the parsing of this directive by adding a special case for ARM for this one argumnet. To make the change we had to move the AllowAtInIdentifier variable to the MCAsmLexer interface (from AsmLexer) and expose a setter for the value. The ELFAsmParser then toggles this value when parsing the second argument to the .symver directive for a target that uses @ as a comment symbol git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199339 91177308-0d34-0410-b5e6-96231b3b80d8
153 lines
4.4 KiB
ArmAsm
153 lines
4.4 KiB
ArmAsm
@ RUN: llvm-mc -filetype=obj -triple arm-none-linux-gnueabi %s -o - | llvm-readobj -r -t | FileCheck %s
|
|
@ RUN: llvm-mc -filetype=obj -triple thumb-none-linux-gnueabi %s -o - | llvm-readobj -r -t | FileCheck %s
|
|
|
|
defined1:
|
|
defined2:
|
|
defined3:
|
|
.symver defined1, bar1@zed
|
|
.symver undefined1, bar2@zed
|
|
|
|
.symver defined2, bar3@@zed
|
|
|
|
.symver defined3, bar5@@@zed
|
|
.symver undefined3, bar6@@@zed
|
|
|
|
.long defined1
|
|
.long undefined1
|
|
.long defined2
|
|
.long defined3
|
|
.long undefined3
|
|
|
|
.global global1
|
|
.symver global1, g1@@zed
|
|
global1:
|
|
|
|
@ CHECK: Relocations [
|
|
@ CHECK-NEXT: Section (2) .rel.text {
|
|
@ CHECK-NEXT: 0x0 R_ARM_ABS32 defined1 0x0
|
|
@ CHECK-NEXT: 0x4 R_ARM_ABS32 bar2@zed 0x0
|
|
@ CHECK-NEXT: 0x8 R_ARM_ABS32 defined2 0x0
|
|
@ CHECK-NEXT: 0xC R_ARM_ABS32 defined3 0x0
|
|
@ CHECK-NEXT: 0x10 R_ARM_ABS32 bar6@zed 0x0
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: ]
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: bar1@zed (28)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar3@@zed (46)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar5@@zed (56)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: defined1 (1)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: defined2 (10)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: defined3 (19)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: .text (0)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: Section (0x3)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: .data (0)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: Section (0x3)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .data (0x3)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: .bss (0)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: Section (0x3)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .bss (0x4)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: g1@@zed (88)
|
|
@ CHECK-NEXT: Value: 0x14
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: global1 (80)
|
|
@ CHECK-NEXT: Value: 0x14
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar2@zed (37)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: (0x0)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar6@zed (66)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: (0x0)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: ]
|