mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
89a237a2c6
This enhances the ARMAsmParser to handle .tlsdescseq directives. This is a slightly special relocation. We must be able to generate them, but not consume them in assembly. The relocation is meant to assist the linker in generating a TLS descriptor sequence. The ELF target streamer is enhanced to append additional fixups into the current segment and that is used to emit the new R_ARM_TLS_DESCSEQ relocations. llvm-svn: 200448
34 lines
862 B
ArmAsm
34 lines
862 B
ArmAsm
@ RUN: llvm-mc -triple armv7-linux-gnu -filetype obj -o - %s | llvm-readobj -r \
|
|
@ RUN: | FileCheck %s
|
|
@ RUN: llvm-mc -triple armv7-linux-gnu -filetype asm -o - %s \
|
|
@ RUN: | FileCheck -check-prefix CHECK-ASM %s
|
|
|
|
.type tlsdescseq,%function
|
|
tlsdescseq:
|
|
ldr r1, [pc, #8]
|
|
1:
|
|
.tlsdescseq variable
|
|
add r2, pc, r1
|
|
.tlsdescseq variable
|
|
ldr r3, [r1, #4]
|
|
.tlsdescseq variable
|
|
blx r3
|
|
2:
|
|
.word variable(tlsdesc) + (. - 1b)
|
|
|
|
@ CHECK: Relocations [
|
|
@ CHECK: 0x4 R_ARM_TLS_DESCSEQ variable 0x0
|
|
@ CHECK: 0x8 R_ARM_TLS_DESCSEQ variable 0x0
|
|
@ CHECK: 0xC R_ARM_TLS_DESCSEQ variable 0x0
|
|
@ CHECK: 0x10 R_ARM_TLS_GOTDESC variable 0x0
|
|
@ CHECK: ]
|
|
|
|
@ CHECK-ASM: ldr r1, [pc, #8]
|
|
@ CHECK-ASM: .tlsdescseq variable
|
|
@ CHECK-ASM: add r2, pc, r1
|
|
@ CHECK-ASM: .tlsdescseq variable
|
|
@ CHECK-ASM: ldr r3, [r1, #4]
|
|
@ CHECK-ASM: .tlsdescseq variable
|
|
@ CHECK-ASM: blx r3
|
|
|