From c9cb7d2462d9e849cd6bc80889637ce2b7b31706 Mon Sep 17 00:00:00 2001 From: Jason Molenda Date: Tue, 16 Apr 2013 21:42:58 +0000 Subject: [PATCH] Add warning messages for the cases where the inferior process shared cache differs from lldb's own shared cache, and where the inferior process shared cache does not match up with the on-disk shared cache file. Simplify the code where lldb gets its own shared cache uuid a little bit. llvm-svn: 179633 --- .../Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp index 7ec1b48b0c32..fd651048e4f4 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1395,6 +1395,10 @@ ObjectFileMachO::ParseSymtab (bool minimize) if (lldb_shared_cache.IsValid() && process_shared_cache.IsValid() && lldb_shared_cache != process_shared_cache) { use_lldb_cache = false; + ModuleSP module_sp (GetModule()); + if (module_sp) + module_sp->ReportWarning ("shared cache in process does not match lldb's own shared cache, startup will be slow."); + } PlatformSP platform_sp (target.GetPlatform()); @@ -1722,6 +1726,9 @@ ObjectFileMachO::ParseSymtab (bool minimize) // The on-disk dyld_shared_cache file is not the same as the one in this // process' memory, don't use it. uuid_match = false; + ModuleSP module_sp (GetModule()); + if (module_sp) + module_sp->ReportWarning ("process shared cache does not match on-disk dyld_shared_cache file, some symbol names will be missing."); } } @@ -4035,12 +4042,10 @@ ObjectFileMachO::GetLLDBSharedCacheUUID () uint8_t *dyld_all_image_infos_address = dyld_get_all_image_infos(); if (dyld_all_image_infos_address) { - uint32_t version; - memcpy (&version, dyld_all_image_infos_address, 4); - if (version >= 13) + uint32_t *version = (uint32_t*) dyld_all_image_infos_address; // version + if (*version >= 13) { - uint8_t *sharedCacheUUID_address = 0; - sharedCacheUUID_address = dyld_all_image_infos_address + 84; // sharedCacheUUID + uuid_t *sharedCacheUUID_address = (uuid_t*) dyld_all_image_infos_address + 84; // sharedCacheUUID uuid.SetBytes (sharedCacheUUID_address); } }