From 57f7e577fe83454d7028213df24ebde9a2495a50 Mon Sep 17 00:00:00 2001 From: Andrea Gussoni Date: Wed, 3 Jun 2026 15:06:06 +0200 Subject: [PATCH] DetectABI: name outlined stubs after symbols --- lib/EarlyFunctionAnalysis/DetectABI.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/EarlyFunctionAnalysis/DetectABI.cpp b/lib/EarlyFunctionAnalysis/DetectABI.cpp index 0e7575c9f..81222049f 100644 --- a/lib/EarlyFunctionAnalysis/DetectABI.cpp +++ b/lib/EarlyFunctionAnalysis/DetectABI.cpp @@ -33,7 +33,7 @@ #include "revng/InlineHelpers/InlineHelpers.h" #include "revng/InlineHelpers/LinkHelpersToInline.h" #include "revng/Model/Binary.h" -#include "revng/Model/NameBuilder.h" +#include "revng/Model/IRHelpers.h" #include "revng/Model/Pass/DeduplicateCollidingNames.h" #include "revng/Model/Register.h" #include "revng/Pipeline/Pipe.h" @@ -41,6 +41,7 @@ #include "revng/Pipes/Kinds.h" #include "revng/Pipes/ModelGlobal.h" #include "revng/Support/BasicBlockID.h" +#include "revng/Support/CommonOptions.h" #include "revng/Support/Debug.h" #include "revng/Support/IRBuilder.h" #include "revng/Support/IRHelpers.h" @@ -491,6 +492,16 @@ void DetectABI::analyzeABI() { PM.run(M); } + // When `--debug-names` is set, rename each outlined stub from the + // metaaddress-based identifier to its source-symbol name, using the same + // `llvmName` scheme as the rest of the pipeline. + if (DebugNames) { + for (auto &[Entry, OutlinedFn] : Functions) { + llvm::Function *F = OutlinedFn->Function.get(); + F->setName(llvmName(Binary->Functions().at(Entry))); + } + } + // Dump the whole module right after helper inlining, for debugging and // testing. The outlined stubs live in the module at this point, so a single // module dump captures them all. @@ -516,11 +527,10 @@ void DetectABI::analyzeABI() { } unsigned Runs = 0; - model::CNameBuilder NameBuilder = *Binary; while (not ToAnalyze.empty()) { model::Function &Function = *ToAnalyze.pop(); revng_log(Log, "Analyzing " << Function.Entry().toString()); - FixedPointTask.advance(NameBuilder.name(Function)); + FixedPointTask.advance(llvmName(Function)); OutlinedFunction &OutlinedFunction = *Functions.at(Function.Entry()); Changes Changes = analyzeFunctionABI(Function, OutlinedFunction,