# REQUIRES: x86 # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o # 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 ## 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 # PIE: error: cannot preempt symbol: hidden # SHARED: error: relocation R_X86_64_32 cannot be used against symbol hidden; recompile with -fPIC .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