hanchenye-llvm-project/lld/test/elf/X86_64/startGroupEndGroup.test

49 lines
2.1 KiB
Plaintext

# This tests functionality of --start-group, --end-group
# This link should fail with unresolve symbol
RUN: not lld -flavor gnu -target x86_64 %p/Inputs/group/1.o \
RUN: %p/Inputs/group/libfn.a %p/Inputs/group/libfn1.a -o x 2> %t.err
# Test group
RUN: lld -flavor gnu -target x86_64 %p/Inputs/group/1.o --start-group \
RUN: %p/Inputs/group/libfn.a %p/Inputs/group/libfn1.a --end-group -o %t1
# Mix object files in group
RUN: lld -flavor gnu -target x86_64 %p/Inputs/group/1.o --start-group \
RUN: %p/Inputs/group/fn.o %p/Inputs/group/fn2.o \
RUN: %p/Inputs/group/fn1.o --end-group -o %t2
# Mix Whole archive input, the group should not iterate the file libfn.a
RUN: lld -flavor gnu -target x86_64 %p/Inputs/group/1.o --start-group \
RUN: --whole-archive %p/Inputs/group/libfn.a --no-whole-archive \
RUN: %p/Inputs/group/libfn1.a --end-group -o %t3
# Defined symbols in a shared library.
RUN: lld -flavor gnu -target x86_64 %p/Inputs/group/1.o --start-group \
RUN: %p/Inputs/group/libfn2.so %p/Inputs/group/fn1.o %p/Inputs/group/fn.o \
RUN: --end-group -o %t4
# Test alias options too, as they are more widely used
# Test group
RUN: lld -flavor gnu -target x86_64 %p/Inputs/group/1.o '-(' \
RUN: %p/Inputs/group/libfn.a %p/Inputs/group/libfn1.a '-)' -o %t1.alias
# Mix object files in group
RUN: lld -flavor gnu -target x86_64 %p/Inputs/group/1.o '-(' \
RUN: %p/Inputs/group/fn.o %p/Inputs/group/fn2.o \
RUN: %p/Inputs/group/fn1.o '-)' -o %t2.alias
# Mix Whole archive input, the group should not iterate the file libfn.a
RUN: lld -flavor gnu -target x86_64 %p/Inputs/group/1.o '-(' \
RUN: --whole-archive %p/Inputs/group/libfn.a --no-whole-archive \
RUN: %p/Inputs/group/libfn1.a '-)' -o %t3.alias
RUN: llvm-nm %t1 | FileCheck -check-prefix=RESOLVEDEXTERNAL %s
RUN: llvm-nm %t2 | FileCheck -check-prefix=RESOLVEDEXTERNAL %s
RUN: llvm-nm %t3 | FileCheck -check-prefix=RESOLVEDEXTERNAL %s
RUN: llvm-nm %t1.alias | FileCheck -check-prefix=RESOLVEDEXTERNAL %s
RUN: llvm-nm %t2.alias | FileCheck -check-prefix=RESOLVEDEXTERNAL %s
RUN: llvm-nm %t3.alias | FileCheck -check-prefix=RESOLVEDEXTERNAL %s
RESOLVEDEXTERNAL: {{[0-9a-z]+}} T fn2