brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 724be08 Raw
66 lines · plain
1// REQUIRES: arm2// RUN: split-file %s %t3// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %t/test.s -o %t.o4// RUN: ld.lld --script %t/script %t.o -o %t25// RUN: llvm-objdump --no-print-imm-hex --no-show-raw-insn -d %t2 | FileCheck %s6 7// RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7aeb-none-linux-gnueabi -mcpu=cortex-a8 %t/test.s -o %t.o8// RUN: ld.lld --script %t/script %t.o -o %t29// RUN: llvm-objdump --no-print-imm-hex --no-show-raw-insn -d %t2 | FileCheck %s10// RUN: ld.lld --be8 --script %t/script %t.o -o %t211// RUN: llvm-objdump --no-print-imm-hex --no-show-raw-insn -d %t2 | FileCheck %s12 13/// Test that we can reuse thunks between Arm and Thumb callers14/// using a BL. Expect two thunks, one for far, one for far2.15 16//--- script17SECTIONS {18        .text 0x10000 : { *(.text) }19        .text.far 0x10000000 : AT (0x10000000) { *(.far) }20}21 22//--- test.s23 24.syntax unified25.text26.globl _start27.type _start, %function28 .arm29_start:30 bl far31 .thumb32 bl far33 bl far234 .arm35 bl far236 37// CHECK:   00010000 <_start>:38// CHECK-NEXT: 10000: bl      0x10010 <__ARMv7ABSLongThunk_far>39// CHECK-NEXT: 10004: blx     0x10010 <__ARMv7ABSLongThunk_far>40// CHECK-NEXT: 10008: bl      0x1001c <__Thumbv7ABSLongThunk_far2>41// CHECK-NEXT: 1000c: blx     0x1001c <__Thumbv7ABSLongThunk_far2>42// CHECK:   00010010 <__ARMv7ABSLongThunk_far>:43// CHECK-NEXT: 10010: movw    r12, #044// CHECK-NEXT: 10014: movt    r12, #409645// CHECK-NEXT: 10018: bx      r1246// CHECK:   0001001c <__Thumbv7ABSLongThunk_far2>:47// CHECK-NEXT: 1001c: movw    r12, #448// CHECK-NEXT: 10020: movt    r12, #409649// CHECK-NEXT: 10024: bx      r1250 51.section .text.far, "ax", %progbits52.globl far53.type far, %function54far:55 bx lr56.globl far257.type far2, %function58far2:59 bx lr60 61// CHECK: Disassembly of section .text.far:62// CHECK:      10000000 <far>:63// CHECK-NEXT: 10000000: bx      lr64// CHECK:      10000004 <far2>:65// CHECK-NEXT: 10000004: bx      lr66