# REQUIRES: x86 # RUN: rm -rf %t && split-file %s %t # RUN: llvm-mc -filetype=obj -triple=x86_64 %t/1.s -o %t/1.o # RUN: llvm-mc -filetype=obj -triple=x86_64 %t/2.s -o %t/2.o # RUN: ld.lld -shared -soname=t2 %t/2.o -o %t/2.so # RUN: ld.lld %t/1.o %t/2.so -o %t/1 # RUN: llvm-readelf -S -r --dyn-syms %t/1 | FileCheck %s # RUN: ld.lld --gc-sections -pie %t/1.o %t/2.so -o %t/1 # RUN: llvm-readelf -S -r --dyn-syms %t/1 | FileCheck %s # CHECK: [[#BSS:]]] .bss # CHECK: R_X86_64_COPY [[#%x,]] a1 + 0 # CHECK-NEXT: R_X86_64_GLOB_DAT [[#%x,]] b1 + 0 # CHECK-NEXT: R_X86_64_COPY [[#%x,]] b1 + 0 # CHECK-NEXT: R_X86_64_GLOB_DAT [[#%x,]] a2 + 0 # CHECK: Value Size Type Bind Vis Ndx Name # CHECK: [[#%x,ADDR:]] 1 OBJECT GLOBAL DEFAULT [[#BSS]] a1 # CHECK-NEXT: {{0*}}[[#ADDR+1]] 1 OBJECT WEAK DEFAULT [[#BSS]] b1 # CHECK-NEXT: {{0*}}[[#ADDR+1]] 1 OBJECT GLOBAL DEFAULT [[#BSS]] b2 # CHECK-NEXT: {{0*}}[[#ADDR]] 1 OBJECT WEAK DEFAULT [[#BSS]] a2 # CHECK-NEXT: {{0*}}[[#ADDR+1]] 1 OBJECT GLOBAL DEFAULT [[#BSS]] b3 #--- 1.s .global _start _start: movl $5, a1 mov $b1 - ., %eax mov $b2 - ., %eax ## Test that a copy relocated alias may have GOT entry. .weak a2, b1 movq a2@gotpcrel(%rip), %rax movq b1@gotpcrel(%rip), %rcx #--- 2.s .data .globl a1, b3 .weak a2, b1, b2 .type a1, @object .type a2, @object a1: a2: .byte 1 .size a1, 1 .size a2, 1 .type b1, @object .type b2, @object .type b3, @object b1: b2: b3: .byte 2 .size b1, 1 .size b2, 1 .size b3, 1