blob: 08b7aed6a9228a5d16fdfdb61e66120a1726847a [file] [log] [blame]
# 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