Add method Module::IsLoadedInTarget, and then in the MacOS X dynamic loader, after we

have initialized our shared library state, discard all the modules that didn't make
it into the running process.

llvm-svn: 136755
This commit is contained in:
Jim Ingham
2011-08-03 01:03:17 +00:00
parent e716ae02a9
commit b53cb271ca
3 changed files with 67 additions and 0 deletions

View File

@@ -690,6 +690,29 @@ Module::IsExecutable ()
return GetObjectFile()->IsExecutable();
}
bool
Module::IsLoadedInTarget (Target *target)
{
ObjectFile *obj_file = GetObjectFile();
if (obj_file)
{
SectionList *sections = obj_file->GetSectionList();
if (sections != NULL)
{
size_t num_sections = sections->GetSize();
bool loaded = false;
for (size_t sect_idx = 0; sect_idx < num_sections; sect_idx++)
{
SectionSP section_sp = sections->GetSectionAtIndex(sect_idx);
if (section_sp->GetLoadBaseAddress(target) != LLDB_INVALID_ADDRESS)
{
return true;
}
}
}
}
return false;
}
bool
Module::SetArchitecture (const ArchSpec &new_arch)
{