diff options
| author | Fangrui Song <maskray@google.com> | 2019-08-13 05:08:46 +0000 |
|---|---|---|
| committer | Fangrui Song <maskray@google.com> | 2019-08-13 05:08:46 +0000 |
| commit | 892cdc73be231c0148ca092260644c30b1dd4e16 (patch) | |
| tree | abc2f18dd19debce91708854da1161ca5f0ce0bd | |
| parent | 70fdfed45f040bf27787a0fc4ebc8f483298bde3 (diff) | |
| download | bcm5719-llvm-892cdc73be231c0148ca092260644c30b1dd4e16.tar.gz bcm5719-llvm-892cdc73be231c0148ca092260644c30b1dd4e16.zip | |
[ELF][test] Add dynamic-list-preempt2.s
When producing a DSO, the isPreemptible property of a Defined with
default or protected visibility is affected by the --dynamic-list file,
but not by interposable symbols in other DSOs.
llvm-svn: 368649
| -rw-r--r-- | lld/test/ELF/dynamic-list-preempt2.s | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lld/test/ELF/dynamic-list-preempt2.s b/lld/test/ELF/dynamic-list-preempt2.s new file mode 100644 index 00000000000..16306d201d8 --- /dev/null +++ b/lld/test/ELF/dynamic-list-preempt2.s @@ -0,0 +1,29 @@ +# REQUIRES: x86 + +# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o +# RUN: ld.lld %t.o -shared -soname=t.so -o %t.so +# RUN: echo '{ foo; };' > %t.list +# RUN: ld.lld %t.o %t.so -shared --dynamic-list %t.list -o %t +# RUN: llvm-readelf --dyn-syms %t | FileCheck --check-prefix=SYM %s +# RUN: llvm-readobj -r %t | FileCheck --check-prefix=REL %s + +## foo and bar interpose symbols in another DSO, so both are exported, +## even if --dynamic-list specifies only foo. + +# SYM-DAG: bar +# SYM-DAG: foo + +## bar is not specified in --dynamic-list, so it is not preemptable when +## producing a DSO, and its PLT does not have an associated JUMP_SLOT. + +# REL: .rela.plt { +# REL-NEXT: R_X86_64_JUMP_SLOT foo 0x0 +# REL-NEXT: } + +.globl foo, bar +foo: +bar: + ret + +call foo@PLT +call bar@PLT |

