[Lldb-commits] [lldb] 89ed21a - Recognize namespaced all_image_infos symbol name from dyld
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Fri Sep 10 16:59:35 PDT 2021
Author: Jason Molenda
Date: 2021-09-10T16:56:48-07:00
New Revision: 89ed21a8f864b1c33a95ed127d073842adc2fcd0
URL: https://github.com/llvm/llvm-project/commit/89ed21a8f864b1c33a95ed127d073842adc2fcd0
DIFF: https://github.com/llvm/llvm-project/commit/89ed21a8f864b1c33a95ed127d073842adc2fcd0.diff
LOG: Recognize namespaced all_image_infos symbol name from dyld
In macOS 12, the symbol name for the dyld_all_image_infos struct
in dyld has a namespace qualifier. Search for it without qualification,
then with qualification when doing a by-name search. (lldb will
only search for it by name when loading a user process Mach-O corefile)
rdar://76270013
Added:
Modified:
lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
Removed:
################################################################################
diff --git a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
index 91b1682ad001..a14e45c16c5c 100644
--- a/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
+++ b/lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
@@ -251,6 +251,7 @@ bool DynamicLoaderMacOSXDYLD::ReadDYLDInfoFromMemoryAndSetNotificationCallback(
std::lock_guard<std::recursive_mutex> baseclass_guard(GetMutex());
DataExtractor data; // Load command data
static ConstString g_dyld_all_image_infos("dyld_all_image_infos");
+ static ConstString g_new_dyld_all_image_infos("dyld4::dyld_all_image_infos");
if (ReadMachHeader(addr, &m_dyld.header, &data)) {
if (m_dyld.header.filetype == llvm::MachO::MH_DYLINKER) {
m_dyld.address = addr;
@@ -268,6 +269,10 @@ bool DynamicLoaderMacOSXDYLD::ReadDYLDInfoFromMemoryAndSetNotificationCallback(
dyld_module_sp.get()) {
const Symbol *symbol = dyld_module_sp->FindFirstSymbolWithNameAndType(
g_dyld_all_image_infos, eSymbolTypeData);
+ if (!symbol) {
+ symbol = dyld_module_sp->FindFirstSymbolWithNameAndType(
+ g_new_dyld_all_image_infos, eSymbolTypeData);
+ }
if (symbol)
m_dyld_all_image_infos_addr = symbol->GetLoadAddress(&target);
}
More information about the lldb-commits
mailing list