[llvm] big archive recognition by the llvm-symbolizer (PR #150401)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 20 23:07:44 PDT 2025
================
@@ -616,27 +649,27 @@ Expected<ObjectFile *> LLVMSymbolizer::getOrCreateObjectFromArchive(
RequestedTriple.setArch(Triple::getArchTypeForLLVMName(ArchName));
if (ObjArch != RequestedTriple.getArch())
continue;
+
ArchiveCacheKey CacheKey{ArchivePath.str(), MemberName.str(),
ArchName.str()};
- auto I = ObjectForArchivePathAndArch.find(CacheKey);
- if (I != ObjectForArchivePathAndArch.end())
- return I->second.get();
-
- auto CachedObj = std::unique_ptr<ObjectFile>(Obj);
- auto NewEntry =
- ObjectForArchivePathAndArch.emplace(CacheKey, std::move(CachedObj));
+ Expected<ObjectFile *> Res = findOrCacheObject(
+ CacheKey,
+ [O = std::unique_ptr<ObjectFile>(
+ Obj)]() mutable -> Expected<std::unique_ptr<ObjectFile>> {
+ return std::move(O);
+ },
+ ArchivePath.str());
Binary.release();
- BinaryForPath.find(ArchivePath.str())
- ->second.pushEvictor([this, Iter = NewEntry.first]() {
- ObjectForArchivePathAndArch.erase(Iter);
- });
- return NewEntry.first->second.get();
+ return Res;
}
}
}
if (Err)
return std::move(Err);
- return errorCodeToError(object_error::arch_not_found);
+ return createStringError(std::errc::invalid_argument,
+ "No matching member '%s' with arch '%s' in '%s'",
----------------
midhuncodes7 wrote:
addressed
https://github.com/llvm/llvm-project/pull/150401
More information about the llvm-commits
mailing list