diff options
| -rw-r--r-- | lld/ELF/Driver.cpp | 6 | ||||
| -rw-r--r-- | lld/test/ELF/Inputs/wrap-with-archive.s | 5 | ||||
| -rw-r--r-- | lld/test/ELF/wrap-with-archive.s | 13 |
3 files changed, 21 insertions, 3 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index 51daa81edc8..13b6119e2dc 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -1550,6 +1550,9 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &Args) { Out::ElfHeader = make<OutputSection>("", 0, SHF_ALLOC); Out::ElfHeader->Size = sizeof(typename ELFT::Ehdr); + // Create wrapped symbols for -wrap option. + std::vector<WrappedSymbol> Wrapped = addWrappedSymbols<ELFT>(Args); + // We need to create some reserved symbols such as _end. Create them. if (!Config->Relocatable) addReservedSymbols(); @@ -1562,9 +1565,6 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &Args) { if (!Config->Relocatable) Symtab->scanVersionScript(); - // Create wrapped symbols for -wrap option. - std::vector<WrappedSymbol> Wrapped = addWrappedSymbols<ELFT>(Args); - // Do link-time optimization if given files are LLVM bitcode files. // This compiles bitcode files into real object files. // diff --git a/lld/test/ELF/Inputs/wrap-with-archive.s b/lld/test/ELF/Inputs/wrap-with-archive.s new file mode 100644 index 00000000000..93aaddc8806 --- /dev/null +++ b/lld/test/ELF/Inputs/wrap-with-archive.s @@ -0,0 +1,5 @@ +.global __executable_start +.global __wrap_get_executable_start + +__wrap_get_executable_start: + movabs $__executable_start,%rdx diff --git a/lld/test/ELF/wrap-with-archive.s b/lld/test/ELF/wrap-with-archive.s new file mode 100644 index 00000000000..1bfbdcef30d --- /dev/null +++ b/lld/test/ELF/wrap-with-archive.s @@ -0,0 +1,13 @@ +// REQUIRES: x86 +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/wrap-with-archive.s -o %t2 +// RUN: llvm-ar rcs %t3 %t2 +// RUN: ld.lld -o %t4 %t %t3 -wrap get_executable_start + +// Regression test for https://bugs.llvm.org/show_bug.cgi?id=40134 + +.global get_executable_start +.global _start + +_start: + jmp get_executable_start |

