forked from OSchip/llvm-project
45 lines
1.2 KiB
ArmAsm
45 lines
1.2 KiB
ArmAsm
# REQUIRES: x86
|
|
# RUN: split-file %s %t
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/a.s -o %t/a.o
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/b.s -o %t/b.o
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/c.s -o %t/c.o
|
|
# RUN: ld.lld -shared -soname=b -Ttext=0 %t/b.o -o %t/b.so
|
|
|
|
# RUN: ld.lld %t/a.o %t/b.so -o %t1
|
|
# RUN: llvm-readelf -r -s %t1 | FileCheck %s
|
|
|
|
## In %t/b.so, foo has st_value==0 and its section alignment is 0x400. The
|
|
## alignment of the copy relocated foo is thus 0x400.
|
|
# CHECK: R_X86_64_COPY {{.*}} foo + 0
|
|
# CHECK: 0000000000203400 4 OBJECT GLOBAL DEFAULT [[#]] foo
|
|
|
|
## Error if attempting to copy relocate a SHN_ABS symbol (even if st_size is non-zero).
|
|
# RUN: ld.lld -shared -soname=c %t/c.o -o %t/c.so
|
|
# RUN: llvm-readelf -s %t/c.so | FileCheck %s --check-prefix=ABSADDR
|
|
# RUN: not ld.lld %t/a.o %t/c.so -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR
|
|
|
|
# ABSADDR: 0000000000000000 4 OBJECT GLOBAL DEFAULT ABS foo
|
|
# ERR: error: cannot create a copy relocation for symbol foo
|
|
|
|
#--- a.s
|
|
.text
|
|
.globl _start
|
|
_start:
|
|
movl $5, foo
|
|
|
|
#--- b.s
|
|
.data
|
|
.balign 0x400
|
|
.type foo,@object
|
|
.globl foo
|
|
foo:
|
|
.long 0
|
|
.size foo, 4
|
|
|
|
#--- c.s
|
|
.data
|
|
.globl foo
|
|
.type foo,@object
|
|
foo = 0x0
|
|
.size foo, 4
|