[MCJIT] Make MCJIT honor symbol visibility settings when populating the global

symbol table.

Patch by Anthony Pesch. Thanks Anthony!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220245 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Lang Hames
2014-10-20 23:39:54 +00:00
parent a37862e2de
commit 32aaaeaa05
10 changed files with 62 additions and 7 deletions

View File

@@ -205,10 +205,14 @@ RuntimeDyldImpl::loadObject(std::unique_ptr<ObjectImage> Obj) {
bool IsCode = SI->isText();
unsigned SectionID =
findOrEmitSection(*Obj, *SI, IsCode, LocalSections);
// Add the symbol to the local symbol table for this module.
LocalSymbols[Name.data()] = SymbolLoc(SectionID, SectOffset);
DEBUG(dbgs() << "\tOffset: " << format("%p", (uintptr_t)SectOffset)
<< " flags: " << Flags << " SID: " << SectionID);
GlobalSymbolTable[Name] = SymbolLoc(SectionID, SectOffset);
// If exported, add to the global symbol table for other modules to also link in.
if (Flags & SymbolRef::SF_Exported) {
GlobalSymbolTable[Name] = SymbolLoc(SectionID, SectOffset);
}
}
}
DEBUG(dbgs() << "\tType: " << SymType << " Name: " << Name << "\n");