diff options
| author | Fangrui Song <maskray@google.com> | 2019-06-14 14:09:15 +0000 |
|---|---|---|
| committer | Fangrui Song <maskray@google.com> | 2019-06-14 14:09:15 +0000 |
| commit | e05ca381010d24e222027a9a985c7ce902f13671 (patch) | |
| tree | 1f4d935421b6ad535d9f4562b1482c10751e8f00 /lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp | |
| parent | a59bc6e5890ad63940a22976c9f16687c3e4ce8c (diff) | |
| download | bcm5719-llvm-e05ca381010d24e222027a9a985c7ce902f13671.tar.gz bcm5719-llvm-e05ca381010d24e222027a9a985c7ce902f13671.zip | |
[ELF] Don't emit dynamic relocations with weak undef in writable sections
In processRelocAux(), our handling of 1) link-time constant and 2) weak
undef is the same, so put them together to simplify the logic.
This moves the weak undef code around. The result is that: in a writable
section (or -z notext), we will no longer emit dynamic relocations for
weak undefined symbols.
The new behavior seems to match GNU linkers, and improves consistency
with the case of a readonly section.
The condition `!Config->Shared` was there probably because it is common
for a -shared link not to specify full dependencies. Keep it now but we
may revisit the decision in the future.
gABI says:
> The behavior of weak symbols in areas not specified by this document is
> implementation defined. Weak symbols are intended primarily for use in
> system software. Applications using weak symbols are unreliable since
> changes in the runtime environment might cause the execution to fail.
Reviewed By: ruiu
Differential Revision: https://reviews.llvm.org/D63003
llvm-svn: 363399
Diffstat (limited to 'lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp')
0 files changed, 0 insertions, 0 deletions

