@@ -2348,7 +2348,11 @@ void SharedCache::ProcessSymbols(std::shared_ptr<MMappedFileAccessor> file, cons
23482348 if ((nlist.n_desc & N_ARM_THUMB_DEF) == N_ARM_THUMB_DEF)
23492349 symbolAddress++;
23502350
2351- Ref<Symbol> sym = new Symbol (symbolType.value (), symbolName, symbolAddress, nullptr , GlobalBinding);
2351+ QualifiedName demangledName = {};
2352+ std::string shortName = symbolName;
2353+ if (DemangleLLVM (symbolName, demangledName, true ))
2354+ shortName = demangledName.GetString ();
2355+ Ref<Symbol> sym = new Symbol (symbolType.value (), shortName, shortName, symbolName, symbolAddress, nullptr );
23522356 symbolList.emplace_back (sym);
23532357 }
23542358
@@ -3300,7 +3304,13 @@ void Deserialize(DeserializationContext& context, std::string_view name,
33003304 std::string symbolName = symbol_array[0 ].GetString ();
33013305 uint64_t address = symbol_array[1 ].GetUint64 ();
33023306 BNSymbolType type = (BNSymbolType)symbol_array[2 ].GetUint ();
3303- symbols.insert ({address, new Symbol (type, symbolName, address)});
3307+
3308+ QualifiedName demangledName = {};
3309+ std::string shortName = symbolName;
3310+ if (DemangleLLVM (symbolName, demangledName, true ))
3311+ shortName = demangledName.GetString ();
3312+ Ref<Symbol> sym = new Symbol (type, shortName, shortName, symbolName, address, nullptr );
3313+ symbols.insert ({address, sym});
33043314 }
33053315 value[pair[0 ].GetUint64 ()] = std::make_shared<std::unordered_map<uint64_t , Ref<Symbol>>>(std::move (symbols));
33063316 }
@@ -3321,7 +3331,13 @@ void Deserialize(DeserializationContext& context, std::string_view name,
33213331 std::string symbolName = symbol_array[0 ].GetString ();
33223332 uint64_t address = symbol_array[1 ].GetUint64 ();
33233333 BNSymbolType type = (BNSymbolType)symbol_array[2 ].GetUint ();
3324- symbols.push_back (new Symbol (type, symbolName, address));
3334+
3335+ QualifiedName demangledName = {};
3336+ std::string shortName = symbolName;
3337+ if (DemangleLLVM (symbolName, demangledName, true ))
3338+ shortName = demangledName.GetString ();
3339+ Ref<Symbol> sym = new Symbol (type, shortName, shortName, symbolName, address, nullptr );
3340+ symbols.emplace_back (sym);
33253341 }
33263342 value[pair[0 ].GetUint64 ()] = std::make_shared<std::vector<Ref<Symbol>>>(std::move (symbols));
33273343 }
0 commit comments