llvm-project/lld
George Rimar aad84e2ee2 [ELF] - Resolve references properly when using .symver directive
This is PR28414. 
Previously LLD was unable to link following:
(failed with undefined symbol bar)

```
Version script:
SOME_VERSION { global: *; };

.global _start
.global bar
.symver _start, bar@@SOME_VERSION
_start:
  jmp bar
```

Manual has next description:
//
.symver name, name2@@nodename
In this case, the symbol name must exist and be defined within the file being assembled. It is similar to name2@nodename. 
**The difference is name2@@nodename will also be used to resolve references to name2 by the linker**
https://sourceware.org/binutils/docs/as/Symver.html
//

Patch implements that. If we have name@@ver symbol and name is undefined, 
name@@ver is used to resolve references to name.

Differential revision: https://reviews.llvm.org/D33680

llvm-svn: 306813
2017-06-30 10:19:54 +00:00
..
COFF Remove unused declarations 2017-06-30 00:34:35 +00:00
ELF [ELF] - Resolve references properly when using .symver directive 2017-06-30 10:19:54 +00:00
cmake/modules [lld][cmake] Fix BUILD_SHARED_LIBS installation 2017-01-24 10:41:02 +00:00
docs Update documentation to reflection disuse of external cvtres. 2017-06-17 02:26:27 +00:00
include/lld Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
lib Tweak to match change in LLVM API, in r306315. 2017-06-26 18:43:26 +00:00
test [ELF] - Resolve references properly when using .symver directive 2017-06-30 10:19:54 +00:00
tools/lld Accept not only lld-link but also LLD-LINK, for example. 2017-04-12 18:29:52 +00:00
unittests Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
.arcconfig Upgrade all the .arcconfigs to https. 2016-07-14 13:15:37 +00:00
.clang-format
.gitignore
CMakeLists.txt Dummy commit to trigger CMake reconfiguration and unbreak Sphinx build 2017-05-04 08:32:33 +00:00
CODE_OWNERS.TXT
LICENSE.TXT Update copyright year to 2016. 2016-03-30 22:40:59 +00:00
README.md Test commit 2017-06-24 21:16:41 +00:00

README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.