# REQUIRES: mips
# Check calculation of MIPS GOT page address entries number
# when a linker script is provided.

# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux -o %t.o %s
# RUN: echo "SECTIONS { \
# RUN:          .text : { *(.text) } \
# RUN:          .data 0x10000 : { *(.data) } }" > %t.script
# RUN: ld.lld -shared --script %t.script -o %t.so %t.o
# RUN: llvm-readobj --symbols -A %t.so | FileCheck %s

# CHECK:      Name: foo1
# CHECK-NEXT: Value: 0x10000
# CHECK:      Name: foo2
# CHECK-NEXT: Value: 0x20000
# CHECK:      Name: foo3
# CHECK-NEXT: Value: 0x30000
# CHECK:      Name: foo4
# CHECK-NEXT: Value: 0x40000

# CHECK:      Local entries [
# CHECK-BEXT:    Entry {
# CHECK-BEXT:      Address:
# CHECK-BEXT:      Access:
# CHECK-BEXT:      Initial: 0x10000
# CHECK-BEXT:    }
# CHECK-BEXT:    Entry {
# CHECK-BEXT:      Address:
# CHECK-BEXT:      Access:
# CHECK-BEXT:      Initial: 0x20000
# CHECK-BEXT:    }
# CHECK-BEXT:    Entry {
# CHECK-BEXT:      Address:
# CHECK-BEXT:      Access:
# CHECK-BEXT:      Initial: 0x30000
# CHECK-BEXT:    }
# CHECK-BEXT:    Entry {
# CHECK-BEXT:      Address:
# CHECK-BEXT:      Access:
# CHECK-BEXT:      Initial: 0x40000
# CHECK-BEXT:    }
# CHECK-BEXT:    Entry {
# CHECK-BEXT:      Address:
# CHECK-BEXT:      Access:
# CHECK-BEXT:      Initial: 0x50000
# CHECK-BEXT:    }
# CHECK-BEXT:  ]

  .option pic2
  .text
  ld      $v0,%got_page(foo1)($gp)
  ld      $v0,%got_page(foo2)($gp)
  ld      $v0,%got_page(foo3)($gp)
  ld      $v0,%got_page(foo4)($gp)

  .data
foo1:
  .space 0x10000
foo2:
  .space 0x10000
foo3:
  .space 0x10000
foo4:
  .word 0
