# REQUIRES: x86 ## Test R_X86_64_32 relocations in x32 (ILP32) mode. ## In x32, R_X86_64_32 is the pointer-sized absolute relocation. # RUN: rm -rf %t && split-file %s %t && cd %t # RUN: llvm-mc -filetype=obj -triple=x86_64-gnux32 a.s -o a.o # RUN: ld.lld -shared a.o -o a.so # RUN: llvm-readelf -r a.so | FileCheck %s ## Non-resolved non-preemptible R_X86_64_32 get R_X86_64_RELATIVE. # CHECK: Relocation section '.rela.dyn' at offset {{.*}} contains 2 entries: # CHECK: R_X86_64_RELATIVE # CHECK-NEXT: {{.*}} R_X86_64_32 {{.*}} und + 0 ## R_X86_64_64 is not a supported dynamic relocation in x32 mode. # RUN: llvm-mc -filetype=obj -triple=x86_64-gnux32 b.s -o b.o # RUN: not ld.lld -shared b.o -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR # ERR: error: relocation R_X86_64_64 cannot be used against symbol 'und'; recompile with -fPIC # ERR-NEXT: >>> defined in b.o # ERR-NEXT: >>> referenced by b.o:(.data+0x0) #--- a.s .globl hid .hidden hid .data hid: .long und .long hid #--- b.s .data .quad und