Add option --weak-unresolved-symbols to treat unresolved symbols as weak ref.
This patch adds option --weak-unresolved-symbols to treat unresolved symbols as weak references. This is helpful when we want the link to succeed with unresolved symbols and the dynamic loader to not complain at run-time. Option --warn-unresolved-symbols lets the link succeed but could fail at run-time with unresolved symbol warnings especially when the unresolved symbols have GOT entries and dynamic relocations against them, like when -fPIE is used.
This commit is contained in:
parent
65eb8c79be
commit
a100d66fb4
6 changed files with 69 additions and 5 deletions
|
@ -2920,6 +2920,13 @@ Symbol_table::sized_write_globals(const Stringpool* sympool,
|
|||
typename elfcpp::Elf_types<size>::Elf_Addr dynsym_value = sym_value;
|
||||
elfcpp::STB binding = sym->binding();
|
||||
|
||||
// If --weak-unresolved-symbols is set, change binding of unresolved
|
||||
// global symbols to STB_WEAK.
|
||||
if (parameters->options().weak_unresolved_symbols()
|
||||
&& binding == elfcpp::STB_GLOBAL
|
||||
&& sym->is_undefined())
|
||||
binding = elfcpp::STB_WEAK;
|
||||
|
||||
// If --no-gnu-unique is set, change STB_GNU_UNIQUE to STB_GLOBAL.
|
||||
if (binding == elfcpp::STB_GNU_UNIQUE
|
||||
&& !parameters->options().gnu_unique())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue