llvm-6502/test/MC/ARM/thumb_set.s
Saleem Abdulrasool 5b5e5abd20 ARM IAS: support .thumb_set
This performs the equivalent of a .set directive in that it creates a symbol
which is an alias for another symbol or value which may possibly be yet
undefined.  This directive also has the added property in that it marks the
aliased symbol as being a thumb function entry point, in the same way that the
.thumb_func directive does.

The current implementation fails one test due to an unrelated issue.  Functions
within .thumb sections are not marked as thumb_func.  The result is that
the aliasee function is not valued correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204059 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-17 17:13:54 +00:00

141 lines
2.3 KiB
ArmAsm

@ RUN: llvm-mc -triple armv7-eabi -filetype obj -o - %s | llvm-readobj -t \
@ RUN: | FileCheck %s
.syntax unified
.arm
.type arm_func,%function
arm_func:
nop
.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
beta:
bkpt
.thumb_set beta, alpha
.thumb_set alias_undefined, undefined
@ CHECK: Symbol {
@ CHECK: Name: alias_arm_func
@ 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: 0x6
@ XFAIL-CHECK: Value: 0x7
@ CHECK: Type: Function
@ CHECK: }
@ CHECK: Symbol {
@ CHECK: Name: arm_func
@ CHECK: Value: 0x0
@ CHECK: Type: Function
@ CHECK: }
@ 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: }
@ CHECK: Symbol {
@ CHECK: Name: badblood
@ CHECK: Value: 0x0
@ CHECK: Type: Object
@ CHECK: }
@ CHECK: Symbol {
@ CHECK: Name: undefined
@ CHECK: Value: 0x0
@ CHECK: Type: None
@ CHECK: }