mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
e49cb88496
According to the documentation, .thumb_set is 'the equivalent of a .set directive'. We didn't have equivalent behaviour in terms of all the errors we could throw, for example, when a symbol is redefined. This change refactors parseAssignment so that it can be used by .set and .thumb_set and implements tests for .thumb_set for all the errors thrown by that method. Reviewed by Rafael Espíndola. llvm-svn: 240318
153 lines
2.7 KiB
ArmAsm
153 lines
2.7 KiB
ArmAsm
@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s | llvm-readobj -t \
|
|
@ RUN: | FileCheck %s
|
|
|
|
@ RUN: llvm-mc -triple armv7-eabi -filetype asm -o - %s \
|
|
@ RUN: | FileCheck --check-prefix=ASM %s
|
|
|
|
.syntax unified
|
|
|
|
.arm
|
|
|
|
.type arm_func,%function
|
|
arm_func:
|
|
nop
|
|
|
|
.thumb_set alias_arm_func, arm_func
|
|
|
|
alias_arm_func2 = alias_arm_func
|
|
alias_arm_func3 = alias_arm_func2
|
|
|
|
@ ASM: .thumb_set alias_arm_func, arm_func
|
|
|
|
.thumb
|
|
|
|
.type thumb_func,%function
|
|
.thumb_func
|
|
thumb_func:
|
|
nop
|
|
|
|
.thumb_set alias_thumb_func, thumb_func
|
|
|
|
.thumb_set seedless, 0x5eed1e55
|
|
.thumb_set eggsalad, seedless + 0x87788358
|
|
.thumb_set faceless, ~eggsalad + 0xe133c002
|
|
|
|
.thumb_set alias_undefined_data, badblood
|
|
|
|
.data
|
|
|
|
.type badblood,%object
|
|
badblood:
|
|
.long 0xbadb100d
|
|
|
|
.type bedazzle,%object
|
|
bedazzle:
|
|
.long 0xbeda221e
|
|
|
|
.text
|
|
.thumb
|
|
|
|
.thumb_set alias_defined_data, bedazzle
|
|
|
|
.type alpha,%function
|
|
alpha:
|
|
nop
|
|
|
|
.type beta,%function
|
|
|
|
.thumb_set beta, alpha
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: alias_arm_func
|
|
@ CHECK: Value: 0x1
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: alias_arm_func2
|
|
@ CHECK: Value: 0x1
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: alias_arm_func3
|
|
@ CHECK: Value: 0x1
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: alias_defined_data
|
|
@ CHECK: Value: 0x5
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: alias_thumb_func
|
|
@ CHECK: Value: 0x5
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: alias_undefined_data
|
|
@ CHECK: Value: 0x0
|
|
@ CHECK: Type: Object
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: alpha
|
|
@ CHECK: Value: 0x7
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: arm_func
|
|
@ CHECK: Value: 0x0
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: badblood
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local
|
|
@ CHECK-NEXT: Type: Object
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .data
|
|
@ CHECK-NEXT: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: bedazzle
|
|
@ CHECK: Value: 0x4
|
|
@ CHECK: Type: Object
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: beta
|
|
@ CHECK: Value: 0x7
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: eggsalad
|
|
@ CHECK: Value: 0xE665A1AD
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: faceless
|
|
@ CHECK: Value: 0xFACE1E55
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: seedless
|
|
@ CHECK: Value: 0x5EED1E55
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: thumb_func
|
|
@ CHECK: Value: 0x5
|
|
@ CHECK: Type: Function
|
|
@ CHECK: }
|