| # REQUIRES: mips |
| # Check the case when small section (less that 0x10000 bytes) occupies |
| # two adjacent 0xffff-bytes pages. We need to create two GOT entries |
| # for R_MIPS_GOT_PAGE relocations. |
| |
| # RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux -o %t.o %s |
| # RUN: ld.lld --section-start .rodata=0x27FFC -shared -o %t.so %t.o |
| # RUN: llvm-readobj -t -mips-plt-got %t.so | FileCheck %s |
| |
| # CHECK: Name: bar |
| # CHECK-NEXT: Value: 0x28000 |
| # ^ page-address = (0x28000 + 0x8000) & ~0xffff = 0x30000 |
| |
| # CHECK: Name: foo |
| # CHECK-NEXT: Value: 0x27FFC |
| # ^ page-address = (0x27ffc + 0x8000) & ~0xffff = 0x20000 |
| |
| # CHECK: Local entries [ |
| # CHECK-NEXT: Entry { |
| # CHECK-NEXT: Address: |
| # CHECK-NEXT: Access: -32736 |
| # CHECK-NEXT: Initial: 0x20000 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: Entry { |
| # CHECK-NEXT: Address: |
| # CHECK-NEXT: Access: -32728 |
| # CHECK-NEXT: Initial: 0x30000 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |
| |
| .text |
| ld $v0,%got_page(foo)($gp) |
| ld $v0,%got_page(bar)($gp) |
| |
| .rodata |
| foo: |
| .word 0 |
| bar: |
| .word 0 |