77 lines · plain
1# REQUIRES: mips2# Check LA25 stubs creation with caller in different Output Section to callee.3# This stub code is necessary when non-PIC code calls PIC function.4 5# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \6# RUN: %p/Inputs/mips-fpic.s -o %t-fpic.o7# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \8# RUN: %p/Inputs/mips-fnpic.s -o %t-fnpic.o9# RUN: ld.lld -r %t-fpic.o %t-fnpic.o -o %t-sto-pic.o10# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \11# RUN: %p/Inputs/mips-pic.s -o %t-pic.o12# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t-npic.o13# RUN: ld.lld %t-npic.o %t-pic.o %t-sto-pic.o -o %t.exe14# RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.exe | FileCheck %s15 16# CHECK: Disassembly of section .text:17# CHECK-EMPTY:18# CHECK-NEXT: <__LA25Thunk_foo1a>:19# CHECK-NEXT: lui $25, 0x220# CHECK-NEXT: j {{.*}} <foo1a>21# CHECK-NEXT: addiu $25, $25, {{.*}}22 23# CHECK: <__LA25Thunk_foo1b>:24# CHECK-NEXT: lui $25, 0x225# CHECK-NEXT: j {{.*}} <foo1b>26# CHECK-NEXT: addiu $25, $25, {{.*}}27 28# CHECK: <foo1a>:29# CHECK-NEXT: nop30 31# CHECK: <foo1b>:32# CHECK-NEXT: nop33 34# CHECK: <__LA25Thunk_foo2>:35# CHECK-NEXT: lui $25, 0x236# CHECK-NEXT: j {{.*}} <foo2>37# CHECK-NEXT: addiu $25, $25, {{.*}}38 39# CHECK: <foo2>:40# CHECK-NEXT: nop41 42# CHECK: <__LA25Thunk_fpic>:43# CHECK-NEXT: lui $25, 0x244# CHECK-NEXT: j {{.*}} <fpic>45# CHECK-NEXT: addiu $25, $25, {{.*}}46 47# CHECK: <fpic>:48# CHECK-NEXT: nop49 50# CHECK: <fnpic>:51# CHECK-NEXT: nop52# CHECK-EMPTY:53# CHECK-NEXT: Disassembly of section .differentos:54# CHECK-EMPTY:55# CHECK-NEXT: <__start>:56# CHECK-NEXT: jal {{.*}} <__LA25Thunk_foo1a>57# CHECK-NEXT: nop58# CHECK-NEXT: jal {{.*}} <__LA25Thunk_foo2>59# CHECK-NEXT: nop60# CHECK-NEXT: jal {{.*}} <__LA25Thunk_foo1b>61# CHECK-NEXT: nop62# CHECK-NEXT: jal {{.*}} <__LA25Thunk_foo2>63# CHECK-NEXT: nop64# CHECK-NEXT: jal {{.*}} <__LA25Thunk_fpic>65# CHECK-NEXT: nop66# CHECK-NEXT: jal {{.*}} <fnpic>67 68 .section .differentos, "ax", %progbits69 .globl __start70__start:71 jal foo1a72 jal foo273 jal foo1b74 jal foo275 jal fpic76 jal fnpic77