# REQUIRES: loongarch # RUN: rm -rf %t && split-file %s %t # RUN: llvm-mc --filetype=obj --triple=loongarch32 %t/32.s -o %t/32.o # RUN: llvm-mc --filetype=obj --triple=loongarch64 %t/64.s -o %t/64.o # RUN: ld.lld -shared %t/32.o -o %t/32.so # RUN: llvm-nm %t/32.so | FileCheck --check-prefix=NM32 %s # RUN: llvm-readobj -r %t/32.so | FileCheck --check-prefix=RELOC32 %s # RUN: ld.lld -shared %t/64.o -o %t/64.so # RUN: llvm-nm %t/64.so | FileCheck --check-prefix=NM64 %s # RUN: llvm-readobj -r %t/64.so | FileCheck --check-prefix=RELOC64 %s ## R_LARCH_32 and R_LARCH_64 are absolute relocation types. ## In PIC mode, they create relative relocations if the symbol is non-preemptable. # NM32: 000301fc d b # NM64: 00030350 d b # RELOC32: .rela.dyn { # RELOC32-NEXT: 0x301FC R_LARCH_RELATIVE - 0x301FC # RELOC32-NEXT: 0x301F8 R_LARCH_32 a 0 # RELOC32-NEXT: } # RELOC64: .rela.dyn { # RELOC64-NEXT: 0x30350 R_LARCH_RELATIVE - 0x30350 # RELOC64-NEXT: 0x30348 R_LARCH_64 a 0 # RELOC64-NEXT: } #--- 32.s .globl a, b .hidden b .data .long a b: .long b #--- 64.s .globl a, b .hidden b .data .quad a b: .quad b