| # REQUIRES: mips |
| |
| # Check addend adjustment in case of generating a relocatable object |
| # if some input files have non-zero GP0 value. |
| |
| # We have to use GNU as and ld.bfd 2.28 to generate relocatable object |
| # files with non-zero GP0 value using the following command lines: |
| # |
| # as -mips32 -o test.o \ |
| # && ld.bfd -m elf32btsmip -r test.o -o mips-gp0-non-zero.o |
| # as -mips64 -o test.o \ |
| # && ld.bfd -m elf64btsmip -r test.o -o mips-n64-gp0-non-zero.o |
| |
| # Source code for mips-gp0-non-zero.o: |
| # .text |
| # .global __start |
| # __start: |
| # lw $t0,%call16(__start)($gp) |
| # foo: |
| # nop |
| # bar: |
| # nop |
| # |
| # .section .rodata, "a" |
| # v: |
| # .gpword foo |
| # .gpword bar |
| |
| # Source code for mips-n64-gp0-non-zero.o and mips-micro-gp0-non-zero.o: |
| # .text |
| # .global __start |
| # __start: |
| # foo: |
| # lui $gp,%hi(%neg(%gp_rel(foo))) |
| |
| # RUN: ld.lld -r -o %t-32.r %S/Inputs/mips-gp0-non-zero.o |
| # RUN: llvm-readobj -mips-reginfo %t-32.r | FileCheck --check-prefix=GPVAL %s |
| # RUN: llvm-objdump -s %t-32.r | FileCheck --check-prefix=ADDEND32 %s |
| |
| # RUN: ld.lld -r -o %t-64.r %S/Inputs/mips-n64-gp0-non-zero.o |
| # RUN: llvm-readobj -mips-options %t-64.r | FileCheck --check-prefix=GPVAL %s |
| # RUN: llvm-readobj -r %S/Inputs/mips-n64-gp0-non-zero.o %t-64.r \ |
| # RUN: | FileCheck --check-prefix=ADDEND64 %s |
| |
| # GPVAL: GP: 0x0 |
| |
| # ADDEND32: Contents of section .rodata: |
| # ADDEND32-NEXT: 0000 00007ff4 00007ff8 |
| # ^ 4+GP0 ^ 8+GP0 |
| |
| # ADDEND64: File: {{.*}}{{/|\\}}mips-n64-gp0-non-zero.o |
| # ADDEND64: .text 0xFFFFFFFFFFFF8011 |
| # ADDEND64: File: {{.*}}{{/|\\}}mips-non-zero-gp0.s.tmp-64.r |
| # ADDEND64: .text 0x0 |