1# REQUIRES: mips 2# 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.o 7# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \ 8# RUN: %p/Inputs/mips-fnpic.s -o %t-fnpic.o 9# RUN: ld.lld -r %t-fpic.o %t-fnpic.o -o %t-sto-pic.o 10# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \ 11# RUN: %p/Inputs/mips-pic.s -o %t-pic.o 12# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t-npic.o 13# RUN: ld.lld %t-npic.o %t-pic.o %t-sto-pic.o -o %t.exe 14# RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.exe | FileCheck %s 15 16# CHECK: Disassembly of section .text: 17# CHECK-EMPTY: 18# CHECK-NEXT: <__LA25Thunk_foo1a>: 19# CHECK-NEXT: lui $25, 0x2 20# CHECK-NEXT: j {{.*}} <foo1a> 21# CHECK-NEXT: addiu $25, $25, {{.*}} 22 23# CHECK: <__LA25Thunk_foo1b>: 24# CHECK-NEXT: lui $25, 0x2 25# CHECK-NEXT: j {{.*}} <foo1b> 26# CHECK-NEXT: addiu $25, $25, {{.*}} 27 28# CHECK: <foo1a>: 29# CHECK-NEXT: nop 30 31# CHECK: <foo1b>: 32# CHECK-NEXT: nop 33 34# CHECK: <__LA25Thunk_foo2>: 35# CHECK-NEXT: lui $25, 0x2 36# CHECK-NEXT: j {{.*}} <foo2> 37# CHECK-NEXT: addiu $25, $25, {{.*}} 38 39# CHECK: <foo2>: 40# CHECK-NEXT: nop 41 42# CHECK: <__LA25Thunk_fpic>: 43# CHECK-NEXT: lui $25, 0x2 44# CHECK-NEXT: j {{.*}} <fpic> 45# CHECK-NEXT: addiu $25, $25, {{.*}} 46 47# CHECK: <fpic>: 48# CHECK-NEXT: nop 49 50# CHECK: <fnpic>: 51# CHECK-NEXT: nop 52# 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: nop 58# CHECK-NEXT: jal {{.*}} <__LA25Thunk_foo2> 59# CHECK-NEXT: nop 60# CHECK-NEXT: jal {{.*}} <__LA25Thunk_foo1b> 61# CHECK-NEXT: nop 62# CHECK-NEXT: jal {{.*}} <__LA25Thunk_foo2> 63# CHECK-NEXT: nop 64# CHECK-NEXT: jal {{.*}} <__LA25Thunk_fpic> 65# CHECK-NEXT: nop 66# CHECK-NEXT: jal {{.*}} <fnpic> 67 68 .section .differentos, "ax", %progbits 69 .globl __start 70__start: 71 jal foo1a 72 jal foo2 73 jal foo1b 74 jal foo2 75 jal fpic 76 jal fnpic 77