mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-18 14:23:55 +00:00
Workaround lldb issue with main module base address
On FreeBSD lldb sometimes reloads the the main module's (executable's) symbols at the wrong address. Work around this for now by explicitly reloading at base_address=0 when it happens. A proper fix is needed but early testers have reported this issue so this workaround should allow them to make further progress. http://llvm.org/bugs/show_bug.cgi?id=17880
This commit is contained in:
parent
025a2301f8
commit
9151c81ccb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=258873
|
@ -454,6 +454,17 @@ DynamicLoaderPOSIXDYLD::LoadAllCurrentModules()
|
|||
const char *module_path = I->path.c_str();
|
||||
FileSpec file(module_path, false);
|
||||
ModuleSP module_sp = LoadModuleAtAddress(file, I->link_addr, I->base_addr);
|
||||
#ifdef __FreeBSD__ // llvm.org/pr17880
|
||||
if (module_sp == executable)
|
||||
{
|
||||
Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DYNAMIC_LOADER));
|
||||
if (log)
|
||||
log->Printf("DynamicLoaderPOSIXDYLD::%s reloading main module, ignoring rendezvous base addr %" PRIx64,
|
||||
__FUNCTION__, I->base_addr);
|
||||
ModuleSP module_sp = LoadModuleAtAddress(file, I->link_addr, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (module_sp.get())
|
||||
{
|
||||
module_list.Append(module_sp);
|
||||
|
|
Loading…
Reference in a new issue