| # 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 -t -mips-plt-got %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 |