brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 902d506 Raw
105 lines · plain
1# REQUIRES: mips2# Check LA25 stubs creation. This stub code is necessary when3# non-PIC code calls PIC function.4 5# RUN: echo "SECTIONS { \6# RUN:         . = 0x20000; .text ALIGN(0x100) : { *(.text) *(.text.*) } \7# RUN:       }" > %t.script8 9# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r2 \10# RUN:   %p/Inputs/mips-fpic.s -o %t-fpic.o11# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r2 \12# RUN:   %p/Inputs/mips-fnpic.s -o %t-fnpic.o13# RUN: ld.lld -r %t-fpic.o %t-fnpic.o -o %t-sto-pic-r2.o14# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r2 \15# RUN:   %p/Inputs/mips-pic.s -o %t-pic-r2.o16# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r2 \17# RUN:   %s -o %t-npic-r2.o18# RUN: ld.lld %t-npic-r2.o %t-pic-r2.o %t-sto-pic-r2.o \19# RUN:        -script %t.script -o %t-r2.exe20# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t-r2.exe \21# RUN:   | FileCheck --check-prefixes=CHECK,R2 %s22 23# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r6 \24# RUN:   %p/Inputs/mips-fpic.s -o %t-fpic.o25# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r6 \26# RUN:   %p/Inputs/mips-fnpic.s -o %t-fnpic.o27# RUN: ld.lld -r %t-fpic.o %t-fnpic.o -o %t-sto-pic-r6.o28# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r6 \29# RUN:   %p/Inputs/mips-pic.s -o %t-pic-r6.o30# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux -mcpu=mips32r6 \31# RUN:   %s -o %t-npic-r6.o32# RUN: ld.lld %t-npic-r6.o %t-pic-r6.o %t-sto-pic-r6.o \33# RUN:        -script %t.script -o %t-r6.exe34# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t-r6.exe \35# RUN:   | FileCheck --check-prefixes=CHECK,R6 %s36 37# CHECK:     Disassembly of section .text:38# CHECK-EMPTY:39# CHECK-NEXT: <__start>:40# CHECK-NEXT:    20100:       jal     {{.*}} <__LA25Thunk_foo1a>41# CHECK-NEXT:                 nop42# CHECK-NEXT:                 jal     {{.*}} <__LA25Thunk_foo2>43# CHECK-NEXT:                 nop44# CHECK-NEXT:                 jal     {{.*}} <__LA25Thunk_foo1b>45# CHECK-NEXT:                 nop46# CHECK-NEXT:                 jal     {{.*}} <__LA25Thunk_foo2>47# CHECK-NEXT:                 nop48# CHECK-NEXT:                 jal     {{.*}} <__LA25Thunk_fpic>49# CHECK-NEXT:                 nop50# CHECK-NEXT:                 jal     {{.*}} <fnpic>51# CHECK-NEXT:                 nop52 53# CHECK: <__LA25Thunk_fpic>:54# R2:            20130:       lui     $25, 255# R6:            20130:       aui     $25, $zero, 256# CHECK-NEXT:                 j       {{.*}} <fpic>57# CHECK-NEXT:                 addiu   $25, $25, 32058# CHECK-NEXT:                 nop59 60# CHECK: <fpic>:61# CHECK-NEXT:    20140:       nop62 63# CHECK: <fnpic>:64# CHECK-NEXT:    20150:       nop65 66# CHECK: <__LA25Thunk_foo1a>:67# R2:            20154:       lui     $25, 268# R6:            20154:       aui     $25, $zero, 269# CHECK:                      j       {{.*}} <foo1a>70# CHECK-NEXT:                 addiu   $25, $25, 38471# CHECK-NEXT:                 nop72 73# CHECK: <__LA25Thunk_foo1b>:74# R2:            20164:       lui     $25, 275# R6:                         aui     $25, $zero, 276# CHECK-NEXT:                 j       {{.*}} <foo1b>77# CHECK-NEXT:                 addiu   $25, $25, 38878# CHECK-NEXT:                 nop79 80# CHECK: <foo1a>:81# CHECK-NEXT:    20180:       nop82 83# CHECK: <foo1b>:84# CHECK-NEXT:    20184:       nop85 86# CHECK: <__LA25Thunk_foo2>:87# R2:            20188:       lui     $25, 288# R6:                         aui     $25, $zero, 289# CHECK-NEXT:                 j       {{.*}} <foo2>90# CHECK-NEXT:                 addiu   $25, $25, 41691# CHECK-NEXT:                 nop92 93# CHECK: <foo2>:94# CHECK-NEXT:    201a0:       nop95 96  .text97  .globl __start98__start:99  jal foo1a100  jal foo2101  jal foo1b102  jal foo2103  jal fpic104  jal fnpic105