From f24743073cce6436fff3d14b987a78c33ce753aa Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Tue, 18 Feb 2025 16:53:33 -0500 Subject: [SharedCache] Fix un-updated symbols list There was a second BeginBulkModifySymbols after rebasing the new processing symbols commit --- view/sharedcache/core/SharedCache.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'view/sharedcache/core/SharedCache.cpp') diff --git a/view/sharedcache/core/SharedCache.cpp b/view/sharedcache/core/SharedCache.cpp index f4141e67..3eaf9330 100644 --- a/view/sharedcache/core/SharedCache.cpp +++ b/view/sharedcache/core/SharedCache.cpp @@ -2357,11 +2357,11 @@ void SharedCache::ProcessSymbols(std::shared_ptr file, cons if ((nlist.n_desc & N_ARM_THUMB_DEF) == N_ARM_THUMB_DEF) symbolAddress++; - Ref sym = new Symbol(symbolType.value(), symbolName, symbolAddress, GlobalBinding); + Ref sym = new Symbol(symbolType.value(), symbolName, symbolAddress, nullptr, GlobalBinding); symbolList.emplace_back(sym); } - auto symListPtr = std::make_shared>>(symbolList); + auto symListPtr = std::make_shared>>(std::move(symbolList)); m_modifiedState->symbolInfos.emplace(header.textBase, symListPtr); } @@ -2376,18 +2376,18 @@ void SharedCache::ApplySymbol(Ref view, Ref typeLib, Re func = view->AddFunctionForAnalysis(targetPlatform, symbolAddress); } - if (!typeLib) + if (typeLib) { - // No type library just define the symbol. - view->DefineAutoSymbol(symbol); - return; + auto type = m_dscView->ImportTypeLibraryObject(typeLib, {symbol->GetFullName()}); + if (type) + view->DefineAutoSymbolAndVariableOrFunction(view->GetDefaultPlatform(), symbol, type); + else + view->DefineAutoSymbol(symbol); } - - auto type = m_dscView->ImportTypeLibraryObject(typeLib, {symbol->GetFullName()}); - if (type) - view->DefineAutoSymbolAndVariableOrFunction(view->GetDefaultPlatform(), symbol, type); else + { view->DefineAutoSymbol(symbol); + } if (!func) func = view->GetAnalysisFunction(view->GetDefaultPlatform(), symbolAddress); @@ -2707,7 +2707,6 @@ void SharedCache::InitializeHeader( } } - view->BeginBulkModifySymbols(); if (header.symtab.symoff != 0 && header.linkeditPresent && vm->AddressIsMapped(header.linkeditSegment.vmaddr)) { // Mach-O View symtab processing with -- cgit v1.3.1