Give preempting symbols precedence over linker script.
llvm-svn: 289212
This commit is contained in:
parent
0546e845c0
commit
6239ce6889
|
@ -423,8 +423,12 @@ void SymbolTable<ELFT>::addShared(SharedFile<ELFT> *F, StringRef Name,
|
|||
std::tie(S, WasInserted) =
|
||||
insert(Name, Sym.getType(), STV_DEFAULT, /*CanOmitFromDynSym*/ true, F);
|
||||
// Make sure we preempt DSO symbols with default visibility.
|
||||
if (Sym.getVisibility() == STV_DEFAULT)
|
||||
if (Sym.getVisibility() == STV_DEFAULT) {
|
||||
S->ExportDynamic = true;
|
||||
// Exporting preempting symbols takes precedence over linker scripts.
|
||||
if (S->VersionId == VER_NDX_LOCAL)
|
||||
S->VersionId = VER_NDX_GLOBAL;
|
||||
}
|
||||
if (WasInserted || isa<Undefined>(S->body())) {
|
||||
replaceBody<SharedSymbol<ELFT>>(S, F, Name, Sym, Verdef);
|
||||
if (!S->isWeak())
|
||||
|
|
|
@ -19,6 +19,15 @@
|
|||
# CHECK-NEXT: Section: Undefined (0x0)
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: bar
|
||||
# CHECK-NEXT: Value:
|
||||
# CHECK-NEXT: Size:
|
||||
# CHECK-NEXT: Binding: Global
|
||||
# CHECK-NEXT: Type:
|
||||
# CHECK-NEXT: Other:
|
||||
# CHECK-NEXT: Section: .text
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: Symbol {
|
||||
# CHECK-NEXT: Name: bar2
|
||||
# CHECK-NEXT: Value:
|
||||
# CHECK-NEXT: Size:
|
||||
|
|
Loading…
Reference in New Issue