blob: 01fd3b7a5c56cc060807790dca1e879f39d901fe [file] [edit]
# 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