| # REQUIRES: ppc |
| |
| # RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t.o |
| # RUN: llvm-readobj -r %t.o | FileCheck --check-prefix=RELOCS %s |
| # RUN: ld.lld -shared %t.o -o %t.so |
| # RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck %s |
| ## Check LD->LE relaxation does not affect R_PPC64_GOT_DTPREL16*. |
| # RUN: ld.lld %t.o -o %t |
| # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s |
| |
| # RUN: llvm-mc -filetype=obj -triple=powerpc64 %s -o %t.o |
| # RUN: llvm-readobj -r %t.o | FileCheck --check-prefix=RELOCS %s |
| # RUN: ld.lld -shared %t.o -o %t.so |
| # RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck %s |
| # RUN: ld.lld %t.o -o %t |
| # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s |
| |
| # RELOCS: .rela.text { |
| # RELOCS-NEXT: R_PPC64_GOT_DTPREL16_HA i 0x0 |
| # RELOCS-NEXT: R_PPC64_GOT_DTPREL16_LO_DS i 0x0 |
| # RELOCS-NEXT: R_PPC64_GOT_DTPREL16_HI j 0x0 |
| # RELOCS-NEXT: R_PPC64_GOT_DTPREL16_DS j 0x0 |
| # RELOCS-NEXT: } |
| |
| ## ha(i@got@dtprel) = (&.got[0] - (.got+0x8000) + 0x8000 >> 16) & 0xffff = 0 |
| ## lo(i@got@dtprel) = &.got[0] - (.got+0x8000) & 0xffff = -32768 |
| ## hi(j@got@dtprel) = (&.got[1] - (.got+0x8000) >> 16) & 0xffff = -1 |
| ## j@got@dtprel = &.got[1] - (.got+0x8000) = -32760 |
| # CHECK: addis 3, 2, 0 |
| # CHECK-NEXT: ld 3, -32768(3) |
| # CHECK-NEXT: addis 3, 2, -1 |
| # CHECK-NEXT: addi 3, 2, -32760 |
| |
| addis 3, 2, i@got@dtprel@ha |
| ld 3, i@got@dtprel@l(3) |
| addis 3, 2, j@got@dtprel@h |
| addi 3, 2, j@got@dtprel |
| |
| .section .tbss,"awT",@nobits |
| .p2align 2 |
| i: |
| .long 0 |
| j: |
| .long 0 |