forked from OSchip/llvm-project
Split linkerscript.s into small test files.
linkerscript.s is the first test file for linker script, and at the moment it contains all tests for linker scripts. Now that test file doesn't make sense. linkerscript2.s was just badly named. Renamed searchdir.s. llvm-svn: 289148
This commit is contained in:
parent
54c683f9e7
commit
89ccd0f31c
|
@ -0,0 +1,42 @@
|
|||
# REQUIRES: x86, shell
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
||||
|
||||
# RUN: echo "ENTRY(_label)" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# The entry symbol should not cause an undefined error.
|
||||
# RUN: echo "ENTRY(_wrong_label)" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t
|
||||
# RUN: ld.lld --entry=abc -o %t2 %t
|
||||
|
||||
# -e has precedence over linker script's ENTRY.
|
||||
# RUN: echo "ENTRY(_label)" > %t.script
|
||||
# RUN: ld.lld -e _start -o %t2 %t.script %t
|
||||
# RUN: llvm-readobj -file-headers -symbols %t2 | \
|
||||
# RUN: FileCheck -check-prefix=OVERLOAD %s
|
||||
|
||||
# OVERLOAD: Entry: [[ENTRY:0x[0-9A-F]+]]
|
||||
# OVERLOAD: Name: _start
|
||||
# OVERLOAD-NEXT: Value: [[ENTRY]]
|
||||
|
||||
# The entry symbol can be a linker-script-defined symbol.
|
||||
# RUN: echo "ENTRY(foo); foo = 1;" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t
|
||||
# RUN: llvm-readobj -file-headers -symbols %t2 | \
|
||||
# RUN: FileCheck -check-prefix=SCRIPT %s
|
||||
|
||||
# SCRIPT: Entry: 0x1
|
||||
|
||||
# RUN: echo "ENTRY(no_such_symbol);" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t 2>&1 | \
|
||||
# RUN: FileCheck -check-prefix=MISSING %s
|
||||
|
||||
# MISSING: warning: cannot find entry symbol no_such_symbol
|
||||
|
||||
.globl _start, _label
|
||||
_start:
|
||||
ret
|
||||
_label:
|
||||
ret
|
|
@ -0,0 +1,56 @@
|
|||
# REQUIRES: x86, shell
|
||||
|
||||
# RUN: mkdir -p %t.dir
|
||||
# RUN: rm -f %t.dir/libxyz.a
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
|
||||
# RUN: %p/Inputs/libsearch-st.s -o %t2.o
|
||||
# RUN: llvm-ar rcs %t.dir/libxyz.a %t2.o
|
||||
|
||||
# RUN: echo "GROUP(\"%t\")" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "INPUT(\"%t\")" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" libxyz.a )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script -L%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" =libxyz.a )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script --sysroot=%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" -lxyz )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script -L%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" libxyz.a )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script -L%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" /libxyz.a )" > %t.script
|
||||
# RUN: echo "GROUP(\"%t\" /libxyz.a )" > %t.dir/xyz.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: not ld.lld -o %t2 %t.script --sysroot=%t.dir 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.dir/xyz.script --sysroot=%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t.script2\")" > %t.script1
|
||||
# RUN: echo "GROUP(\"%t\")" > %t.script2
|
||||
# RUN: ld.lld -o %t2 %t.script1
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(AS_NEEDED(\"%t\"))" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
ret
|
|
@ -5,98 +5,18 @@
|
|||
# REQUIRES: shell
|
||||
|
||||
# REQUIRES: x86
|
||||
# RUN: mkdir -p %t.dir
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
|
||||
# RUN: %p/Inputs/libsearch-st.s -o %t2.o
|
||||
# RUN: rm -f %t.dir/libxyz.a
|
||||
# RUN: llvm-ar rcs %t.dir/libxyz.a %t2.o
|
||||
|
||||
# RUN: echo "EXTERN( undef undef2 )" > %t.script
|
||||
# RUN: ld.lld %t -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\")" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "INPUT(\"%t\")" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" libxyz.a )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script -L%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" =libxyz.a )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script --sysroot=%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" -lxyz )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script -L%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" libxyz.a )" > %t.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.script -L%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t\" /libxyz.a )" > %t.script
|
||||
# RUN: echo "GROUP(\"%t\" /libxyz.a )" > %t.dir/xyz.script
|
||||
# RUN: not ld.lld -o %t2 %t.script 2>/dev/null
|
||||
# RUN: not ld.lld -o %t2 %t.script --sysroot=%t.dir 2>/dev/null
|
||||
# RUN: ld.lld -o %t2 %t.dir/xyz.script --sysroot=%t.dir
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(\"%t.script2\")" > %t.script1
|
||||
# RUN: echo "GROUP(\"%t\")" > %t.script2
|
||||
# RUN: ld.lld -o %t2 %t.script1
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "ENTRY(_label)" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# The entry symbol should not cause an undefined error.
|
||||
# RUN: echo "ENTRY(_wrong_label)" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t
|
||||
# RUN: ld.lld --entry=abc -o %t2 %t
|
||||
|
||||
# -e has precedence over linker script's ENTRY.
|
||||
# RUN: echo "ENTRY(_label)" > %t.script
|
||||
# RUN: ld.lld -e _start -o %t2 %t.script %t
|
||||
# RUN: llvm-readobj -file-headers -symbols %t2 | \
|
||||
# RUN: FileCheck -check-prefix=ENTRY-OVERLOAD %s
|
||||
|
||||
# ENTRY-OVERLOAD: Entry: [[ENTRY:0x[0-9A-F]+]]
|
||||
# ENTRY-OVERLOAD: Name: _start
|
||||
# ENTRY-OVERLOAD-NEXT: Value: [[ENTRY]]
|
||||
|
||||
# The entry symbol can be a linker-script-defined symbol.
|
||||
# RUN: echo "ENTRY(foo); foo = 1;" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t
|
||||
# RUN: llvm-readobj -file-headers -symbols %t2 | \
|
||||
# RUN: FileCheck -check-prefix=ENTRY-SCRIPT %s
|
||||
|
||||
# ENTRY-SCRIPT: Entry: 0x1
|
||||
|
||||
# RUN: echo "ENTRY(no_such_symbol);" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script %t 2>&1 | \
|
||||
# RUN: FileCheck -check-prefix=ENTRY-MISSING %s
|
||||
|
||||
# ENTRY-MISSING: warning: cannot find entry symbol no_such_symbol
|
||||
|
||||
# RUN: echo "OUTPUT_FORMAT(elf64-x86-64) /*/*/ GROUP(\"%t\" )" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: echo "GROUP(AS_NEEDED(\"%t\"))" > %t.script
|
||||
# RUN: ld.lld -o %t2 %t.script
|
||||
# RUN: llvm-readobj %t2 > /dev/null
|
||||
|
||||
# RUN: rm -f %t.out
|
||||
# RUN: echo "OUTPUT(\"%t.out\")" > %t.script
|
||||
# RUN: ld.lld %t.script %t
|
||||
|
@ -127,7 +47,6 @@
|
|||
|
||||
.globl _start, _label
|
||||
_start:
|
||||
mov $60, %rax
|
||||
mov $42, %rdi
|
||||
ret
|
||||
_label:
|
||||
syscall
|
||||
ret
|
||||
|
|
|
@ -2,9 +2,8 @@
|
|||
# implemented in Python, and the Cygwin implementations of the Unix utilities.
|
||||
# Avoid running these tests on Windows for now by requiring a real shell.
|
||||
|
||||
# REQUIRES: shell
|
||||
# REQUIRES: x86, shell
|
||||
|
||||
# REQUIRES: x86
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-freebsd %s -o %t
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-freebsd \
|
||||
# RUN: %p/Inputs/libsearch-dyn.s -o %tdyn.o
|
Loading…
Reference in New Issue