[ELF] Make SyntheticSection parameter order match InputSection
[llvm-project.git] / lld / test / ELF / wrap-drop-shared-original.s
blobf3784aa97279641c6bc3fafd486ac7f97650cdc3
1 ## If the original of a wrapped symbol becomes unreferenced after wrapping, it
2 ## should be dropped from the dynamic symbol table even if defined in a shared
3 ## library.
5 # REQUIRES: x86
7 # RUN: rm -rf %t && split-file %s %t
8 # RUN: llvm-mc -filetype=obj -triple=x86_64-elf %t/original.s -o %t/original.o
9 # RUN: llvm-mc -filetype=obj -triple=x86_64-elf %t/wrapped.s -o %t/wrapped.o
10 # RUN: llvm-mc -filetype=obj -triple=x86_64-elf %t/ref.s -o %t/ref.o
11 # RUN: ld.lld -shared -o %t/liboriginal.so -soname liboriginal.so %t/original.o
12 # RUN: ld.lld -shared -o %t/liboriginal-and-wrapped.so \
13 # RUN: -soname liboriginal-and-wrapped.so %t/original.o %t/wrapped.o
14 # RUN: ld.lld -shared -o %t/libref-with-original.so %t/ref.o \
15 # RUN: --as-needed %t/liboriginal.so --wrap foo
16 # RUN: llvm-readelf --dynamic --dyn-syms %t/libref-with-original.so | \
17 # RUN: FileCheck --check-prefix=ORIGINAL %s
18 # RUN: ld.lld -shared -o %t/libref-with-original-and-wrapped.so %t/ref.o \
19 # RUN: --as-needed %t/liboriginal-and-wrapped.so --wrap foo
20 # RUN: llvm-readelf --dynamic --dyn-syms %t/libref-with-original-and-wrapped.so | \
21 # RUN: FileCheck --check-prefix=ORIGINAL-AND-WRAPPED %s
23 # ORIGINAL-NOT: (NEEDED) Shared library: [liboriginal.so]
24 # ORIGINAL: Symbol table '.dynsym' contains 3 entries:
25 # ORIGINAL: NOTYPE LOCAL DEFAULT UND
26 # ORIGINAL-NEXT: NOTYPE GLOBAL DEFAULT UND __wrap_foo
27 # ORIGINAL-NEXT: NOTYPE GLOBAL DEFAULT 6 ref
29 # ORIGINAL-AND-WRAPPED: (NEEDED) Shared library: [liboriginal-and-wrapped.so]
30 # ORIGINAL-AND-WRAPPED: Symbol table '.dynsym' contains 3 entries:
31 # ORIGINAL-AND-WRAPPED: NOTYPE LOCAL DEFAULT UND
32 # ORIGINAL-AND-WRAPPED-NEXT: NOTYPE GLOBAL DEFAULT UND __wrap_foo
33 # ORIGINAL-AND-WRAPPED-NEXT: NOTYPE GLOBAL DEFAULT 6 ref
35 #--- original.s
36 .globl foo
37 foo:
38 retq
40 #--- wrapped.s
41 .globl __wrap_foo
42 __wrap_foo:
43 retq
45 #--- ref.s
46 .globl ref
47 ref:
48 jmp foo@plt