2019-06-11 20:59:30 +08:00
|
|
|
# REQUIRES: x86
|
|
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
|
2019-08-19 22:30:12 +08:00
|
|
|
# RUN: not ld.lld -pie %t.o -o /dev/null 2>&1 | FileCheck --check-prefixes=CHECK,PIE %s
|
|
|
|
# RUN: not ld.lld -shared %t.o -o /dev/null 2>&1 | FileCheck --check-prefixes=CHECK,SHARED %s
|
2019-06-11 20:59:30 +08:00
|
|
|
|
|
|
|
## Check we don't create dynamic relocations in a writable section,
|
|
|
|
## if the number of bits is smaller than the wordsize.
|
|
|
|
|
|
|
|
.globl hidden
|
|
|
|
.hidden hidden
|
|
|
|
local:
|
|
|
|
hidden:
|
|
|
|
|
|
|
|
# CHECK: error: relocation R_X86_64_8 cannot be used against local symbol; recompile with -fPIC
|
|
|
|
# CHECK-NEXT: >>> defined in {{.*}}.o
|
|
|
|
# CHECK-NEXT: >>> referenced by {{.*}}.o:(.data+0x0)
|
|
|
|
# CHECK: error: relocation R_X86_64_16 cannot be used against local symbol; recompile with -fPIC
|
|
|
|
# CHECK: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
|
2019-08-19 22:30:12 +08:00
|
|
|
|
|
|
|
# PIE: error: cannot preempt symbol: hidden
|
|
|
|
# SHARED: error: relocation R_X86_64_32 cannot be used against symbol hidden; recompile with -fPIC
|
2019-06-11 20:59:30 +08:00
|
|
|
|
|
|
|
.data
|
|
|
|
.byte local # R_X86_64_8
|
|
|
|
.short local # R_X86_64_16
|
|
|
|
.long local # R_X86_64_32
|
|
|
|
|
|
|
|
.long hidden # R_X86_64_32
|