# 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
