[llvm] [GSYM] Add support for querying merged functions in llvm-gsymutil (PR #120991)
Greg Clayton via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 6 10:35:14 PST 2025
================
@@ -342,6 +342,41 @@ llvm::Expected<LookupResult> GsymReader::lookup(uint64_t Addr) const {
return ExpectedData.takeError();
}
+llvm::Expected<std::vector<LookupResult>>
+GsymReader::lookupAll(uint64_t Addr) const {
+ std::vector<LookupResult> Results;
+
+ // First perform a lookup to get the primary function info result
+ auto MainResult = lookup(Addr);
+ if (!MainResult)
+ return MainResult.takeError();
+
+ // Add the main result as the first entry
+ Results.push_back(std::move(*MainResult));
+
+ // Now process any merged functions data that was found during the lookup
+ if (MainResult->MergedFunctionsData) {
+ // Get data extractors for each merged function
+ auto ExpectedMergedFuncExtractors =
+ MergedFunctionsInfo::getFuncsDataExtractors(
+ *MainResult->MergedFunctionsData);
+ if (!ExpectedMergedFuncExtractors)
+ return ExpectedMergedFuncExtractors.takeError();
+
+ // Process each merged function data
+ for (DataExtractor &MergedData : *ExpectedMergedFuncExtractors) {
+ if (auto FI = FunctionInfo::lookup(MergedData, *this,
+ MainResult->FuncRange.start(), Addr)) {
+ Results.push_back(std::move(*FI));
+ } else {
+ return FI.takeError();
+ }
+ }
----------------
clayborg wrote:
Change as needed per above comments.
https://github.com/llvm/llvm-project/pull/120991
More information about the llvm-commits
mailing list