[PATCH] D33680: [ELF] - Resolve references properly when using .symver directive
George Rimar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue May 30 08:45:32 PDT 2017
grimar created this revision.
Herald added a subscriber: emaste.
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 at 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.
If name is defined then multiple definition error is emited, that is consistent with what bfd do.
https://reviews.llvm.org/D33680
Files:
ELF/SymbolTable.cpp
ELF/SymbolTable.h
ELF/Symbols.cpp
test/ELF/version-script-symver-err.s
test/ELF/version-script-symver.s
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33680.100714.patch
Type: text/x-patch
Size: 3605 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170530/d858212e/attachment.bin>
More information about the llvm-commits
mailing list