mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
a193e28818
When a symbol S shows up in an expression in assembly there are two possible interpretations * The expression is referring to the value of S in this file. * The expression is referring to the value after symbol resolution. In the first case the assembler can reason about the value and try to produce a relocation. In the second case, that is only possible if the symbol cannot be preempted. Assemblers are not very consistent about which interpretation gets used. This changes MC to agree with GAS in the case of an expression of the form "Sym - WeakSym". llvm-svn: 258329
47 lines
1.2 KiB
ArmAsm
47 lines
1.2 KiB
ArmAsm
// RUN: not llvm-mc -triple aarch64--none-eabi -filetype obj < %s -o /dev/null 2>&1 | FileCheck %s
|
|
|
|
// Note: These errors are not always emitted in the order in which the relevant
|
|
// source appears, this file is carefully ordered so that that is the case.
|
|
|
|
.text
|
|
// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: symbol 'undef' can not be undefined in a subtraction expression
|
|
.word (0-undef)
|
|
|
|
// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: expected relocatable expression
|
|
.word -undef
|
|
|
|
// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: No relocation available to represent this relative expression
|
|
adr x0, #a-undef
|
|
|
|
// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: Cannot represent a difference across sections
|
|
.word x_a - y_a
|
|
|
|
// CHECK: <unknown>:0: error: expression could not be evaluated
|
|
.set v1, -undef
|
|
|
|
.comm common, 4
|
|
// CHECK: <unknown>:0: error: Common symbol 'common' cannot be used in assignment expr
|
|
.set v3, common
|
|
|
|
// CHECK: <unknown>:0: error: Undefined temporary symbol
|
|
.word 5f
|
|
|
|
// CHECK: <unknown>:0: error: symbol 'undef' could not be evaluated in a subtraction expression
|
|
.set v2, a-undef
|
|
|
|
|
|
|
|
w:
|
|
.word 0
|
|
.weak w
|
|
|
|
|
|
.section sec_x
|
|
x_a:
|
|
.word 0
|
|
|
|
|
|
.section sec_y
|
|
y_a:
|
|
.word 0
|