1# REQUIRES: mips 2# Check R_MIPS_HI16 / LO16 relocations calculation against _gp_disp. 3 4# RUN: echo "SECTIONS { \ 5# RUN: . = 0x10000; .text ALIGN(0x1000) : { *(.text) } \ 6# RUN: . = 0x30000; .got : { *(.got) } \ 7# RUN: }" > %t.script 8# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t1.o 9# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux \ 10# RUN: %S/Inputs/mips-dynamic.s -o %t2.o 11# RUN: ld.lld %t1.o %t2.o --script %t.script -o %t.exe 12# RUN: llvm-objdump -d -t --no-show-raw-insn %t.exe | FileCheck %s 13# RUN: ld.lld %t1.o %t2.o -shared --script %t.script -o %t.so 14# RUN: llvm-objdump -d -t --no-show-raw-insn %t.so | FileCheck %s 15 16 .text 17 .globl __start 18__start: 19 lui $t0,%hi(_gp_disp) 20 addi $t0,$t0,%lo(_gp_disp) 21 lw $v0,%call16(_foo)($gp) 22bar: 23 lui $t0,%hi(_gp_disp) 24 addi $t0,$t0,%lo(_gp_disp) 25 26# CHECK: SYMBOL TABLE: 27# CHECK: 0001100c l .text 00000000 bar 28# CHECK: 00037ff0 l .got 00000000 .hidden _gp 29# CHECK: 00011000 g .text 00000000 __start 30 31# CHECK: Disassembly of section .text: 32# CHECK-EMPTY: 33# CHECK-NEXT: <__start>: 34# CHECK-NEXT: 11000: lui $8, 2 35# ^-- %hi(0x37ff0-0x11000) 36# CHECK-NEXT: 11004: addi $8, $8, 28656 37# ^-- %lo(0x37ff0-0x11004+4) 38# CHECK: <bar>: 39# CHECK-NEXT: 1100c: lui $8, 2 40# ^-- %hi(0x37ff0-0x1100c) 41# CHECK-NEXT: 11010: addi $8, $8, 28644 42# ^-- %lo(0x37ff0-0x11010+4) 43