| // REQUIRES: x86 |
| // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o |
| // RUN: llvm-readobj --dyn-symbols %p/Inputs/version-undef-sym.so | FileCheck %s |
| |
| |
| // Inputs/version-undef-sym.so consists of the assembly file |
| // |
| // .global bar |
| // bar: |
| // .weak abc1 |
| // .weak abc2 |
| // .weak abc3 |
| // .weak abc4 |
| // .weak abc5 |
| // |
| // linked into a shared library with the version script |
| // |
| // VER_1 { |
| // global: |
| // bar; |
| // }; |
| // |
| // Assuming we can reproduce the desired property (a few undefined symbols |
| // before bar) we should create it with lld itself once it supports that. |
| |
| |
| // Show that the input .so has undefined symbols before bar. That is what would |
| // get our version parsing out of sync. |
| |
| // CHECK: Section: Undefined |
| // CHECK: Section: Undefined |
| // CHECK: Section: Undefined |
| // CHECK: Section: Undefined |
| // CHECK: Section: Undefined |
| // CHECK: Name: bar |
| |
| // But now we can successfully find bar. |
| // RUN: ld.lld %t.o %p/Inputs/version-undef-sym.so -o /dev/null |
| |
| .global _start |
| _start: |
| call bar@plt |