forked from OSchip/llvm-project
53 lines
1.6 KiB
ArmAsm
53 lines
1.6 KiB
ArmAsm
# REQUIRES: mips
|
|
# Check that GOT entries accessed via 16-bit indexing are allocated
|
|
# in the beginning of the GOT.
|
|
|
|
# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s -o %t.o
|
|
# RUN: ld.lld %t.o -o %t.exe
|
|
# RUN: llvm-objdump -d --no-show-raw-insn %t.exe | FileCheck %s
|
|
# RUN: llvm-readelf -s -A %t.exe | FileCheck -check-prefix=GOT %s
|
|
|
|
# CHECK: Disassembly of section .text:
|
|
# CHECK-EMPTY:
|
|
# CHECK-NEXT: <__start>:
|
|
# CHECK-NEXT: lui $2, 0
|
|
# CHECK-NEXT: lw $2, -32732($2)
|
|
# CHECK-NEXT: lui $2, 0
|
|
# CHECK-NEXT: lw $2, -32728($2)
|
|
#
|
|
# CHECK: <bar>:
|
|
# CHECK-NEXT: lw $2, -32736($2)
|
|
# CHECK-NEXT: lw $2, -32744($2)
|
|
# CHECK-NEXT: addi $2, $2, {{.*}}
|
|
|
|
# GOT: Symbol table '.symtab'
|
|
# GOT: Num: Value Size Type Bind Vis Ndx Name
|
|
# GOT: [[LOC:[0-9a-f]+]] 0 NOTYPE LOCAL DEFAULT 4 loc
|
|
# GOT: [[START:[0-9a-f]+]] 0 NOTYPE GLOBAL DEFAULT 3 __start
|
|
# GOT: [[BAR:[0-9a-f]+]] 0 NOTYPE GLOBAL DEFAULT 3 bar
|
|
|
|
# GOT: Static GOT:
|
|
# GOT: Local entries:
|
|
# GOT: Address Access Initial
|
|
# GOT-NEXT: -32744(gp) 00030000
|
|
# GOT-NEXT: -32740(gp) 00040000
|
|
# GOT-NEXT: -32736(gp) [[BAR]]
|
|
# GOT-NEXT: -32732(gp) [[START]]
|
|
# GOT-NEXT: -32728(gp) [[LOC]]
|
|
|
|
.text
|
|
.global __start, bar
|
|
__start:
|
|
lui $2, %got_hi(__start)
|
|
lw $2, %got_lo(__start)($2)
|
|
lui $2, %got_hi(loc)
|
|
lw $2, %got_lo(loc)($2)
|
|
bar:
|
|
lw $2, %got(bar)($2)
|
|
lw $2, %got(loc)($2)
|
|
addi $2, $2, %lo(loc)
|
|
|
|
.data
|
|
loc:
|
|
.word 0
|