# REQUIRES: riscv
# RUN: llvm-mc -filetype=obj -triple=riscv64 %s -o %t.o
# RUN: llvm-readobj -r %t.o | FileCheck --check-prefix=RELOC %s

# RUN: ld.lld -e absolute %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefixes=CHECK,PC %s
# RUN: llvm-readelf -x .data %t | FileCheck --check-prefixes=HEX %s

# RUN: ld.lld -e absolute %t.o -o %t --export-dynamic
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefixes=CHECK,PLT %s
# RUN: llvm-readelf -x .data %t | FileCheck --check-prefixes=HEX %s

.weak target
.global absolute, relative, branch

## Absolute relocations are resolved to 0.
# RELOC:      0x0 R_RISCV_HI20 target 0x1
# RELOC-NEXT: 0x4 R_RISCV_LO12_I target 0x1

# CHECK-LABEL: <absolute>:
# CHECK-NEXT:  lui t0, 0
# CHECK-NEXT:  addi t0, t0, 1
absolute:
  lui t0, %hi(target+1)
  addi t0, t0, %lo(target+1)

## Currently, PC-relative relocations are resolved to 0.
# RELOC-NEXT: 0x8 R_RISCV_PCREL_HI20 target 0x0
# RELOC-NEXT: 0xC R_RISCV_PCREL_LO12_I .Lpcrel_hi0 0x0
# RELOC-NEXT: 0x10 R_RISCV_PCREL_HI20 target 0x2
# RELOC-NEXT: 0x14 R_RISCV_PCREL_LO12_S .Lpcrel_hi1 0x0

## 1048559 should be -0x11.
# CHECK-LABEL: <relative>:
# CHECK-NEXT:  11{{...}}: auipc a1, 1048559
# PC-NEXT:     addi a1, a1, -352
# PLT-NEXT:    addi a1, a1, -792
# CHECK-LABEL: <.Lpcrel_hi1>:
# CHECK-NEXT:  11{{...}}: auipc t1, 1048559
# PC-NEXT:     sd a2, -358(t1)
# PLT-NEXT:    sd a2, -798(t1)
relative:
  la a1, target
  sd a2, target+2, t1

## Branch relocations
## If .dynsym does not exist, an undefined weak symbol is non-preemptible.
## Treat them as PC relative relocations.
# RELOC:      0x18 R_RISCV_CALL target 0x0
# RELOC-NEXT: 0x20 R_RISCV_JAL target 0x0

# PC-LABEL:    <branch>:
# PC-NEXT:     auipc ra, 1048559
# PC-NEXT:     jalr -368(ra)
# PC-NEXT:     j 0x0

## If .dynsym exists, an undefined weak symbol is preemptible.
## We create a PLT entry and redirect the reference to it.
# PLT-LABEL:   <branch>:
# PLT-NEXT:    auipc ra, 0
# PLT-NEXT:    jalr 56(ra)
# PLT-NEXT:    j 0x0
branch:
  call target
  jal x0, target

## Absolute relocations are resolved to 0.
# RELOC:      0x0 R_RISCV_64 target 0x3
# RELOC-NEXT: 0x8 R_RISCV_32 target 0x4
# HEX:      section '.data':
# HEX-NEXT: 03000000 00000000 04000000
.data
.p2align 3
.quad target+3
.long target+4

# PC-NOT:      .plt:
# PLT:         .plt:
