mips-gprel32-relocs.s 912 Bytes
# REQUIRES: mips
# Check R_MIPS_GPREL32 relocation calculation.

# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o
# RUN: echo "SECTIONS { \
# RUN:         .rodata ALIGN(0x1000) : { *(.rodata) } \
# RUN:         . = 0x20000; .text :  { *(.text) } \
# RUN:       }" > %t.script
# RUN: ld.lld -shared --script %t.script -o %t.so %t.o
# RUN: llvm-objdump -s -section=.rodata -t %t.so | FileCheck %s

  .text
  .globl  __start
__start:
  lw      $t0,%call16(__start)($gp)
foo:
  nop
bar:
  nop

  .section .rodata, "a"
v1:
  .gpword foo
  .gpword bar

# CHECK: SYMBOL TABLE:
# CHECK: 00020008         .text           00000000 bar
# CHECK: 00020004         .text           00000000 foo
# CHECK: 00028000         .got            00000000 .hidden _gp

# CHECK: Contents of section .rodata:
# CHECK:  1000 ffff8004 ffff8008
#              ^ 0x20004 - 0x28000
#                       ^ 0x20008 - 0x28000