From 90a2b565094599070f6132223c260980c2a5def5 Mon Sep 17 00:00:00 2001 From: Khairul Azhar Kasmiran Date: Thu, 2 Jul 2026 11:11:28 +0800 Subject: [PATCH] Fix `tn- ` (#6585) --- librz/arch/analysis.c | 6 +++--- librz/core/cmd/cmd_type.c | 1 + librz/include/rz_analysis.h | 2 +- test/db/cmd/noreturn | 5 ++++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/librz/arch/analysis.c b/librz/arch/analysis.c index 2494b32c59..b7e73f9f06 100644 --- a/librz/arch/analysis.c +++ b/librz/arch/analysis.c @@ -1139,7 +1139,7 @@ RZ_API bool rz_analysis_noreturn_add(RzAnalysis *analysis, const char *name, ut6 return true; } -RZ_API bool rz_analysis_noreturn_drop(RzAnalysis *analysis, const char *expr) { +RZ_API void rz_analysis_noreturn_drop(RzAnalysis *analysis, const char *expr) { Sdb *NDB = analysis->sdb_noret; expr = rz_str_trim_head_ro(expr); const char *fcnname = NULL; @@ -1149,14 +1149,14 @@ RZ_API bool rz_analysis_noreturn_drop(RzAnalysis *analysis, const char *expr) { RzAnalysisFunction *fcn = rz_analysis_get_fcn_in(analysis, n, -1); if (!fcn) { // eprintf ("can't find function at 0x%"PFMT64x"\n", n); - return false; + return; } fcnname = fcn->name; } else { fcnname = expr; } sdb_noret_func_unset(NDB, fcnname); - return false; + return; } static bool rz_analysis_is_noreturn(RzAnalysis *analysis, const char *name) { diff --git a/librz/core/cmd/cmd_type.c b/librz/core/cmd/cmd_type.c index a10c30cd22..fcdae8c17c 100644 --- a/librz/core/cmd/cmd_type.c +++ b/librz/core/cmd/cmd_type.c @@ -581,6 +581,7 @@ RZ_IPI RzCmdStatus rz_type_noreturn_del_handler(RzCore *core, int argc, const ch RzTypeDB *typedb = rz_analysis_get_type_db(core->analysis); for (int i = 1; i < argc; i++) { rz_type_func_noreturn_drop(typedb, argv[i]); + rz_analysis_noreturn_drop(core->analysis, argv[i]); } return RZ_CMD_STATUS_OK; } diff --git a/librz/include/rz_analysis.h b/librz/include/rz_analysis.h index 69b85e3060..f6782431f7 100644 --- a/librz/include/rz_analysis.h +++ b/librz/include/rz_analysis.h @@ -2053,7 +2053,7 @@ RZ_API bool rz_analysis_has_valid_limits(RZ_NONNULL RzAnalysis *analysis); /* no-return stuff */ RZ_API bool rz_analysis_noreturn_add(RzAnalysis *analysis, const char *name, ut64 addr); -RZ_API bool rz_analysis_noreturn_drop(RzAnalysis *analysis, const char *expr); +RZ_API void rz_analysis_noreturn_drop(RzAnalysis *analysis, const char *expr); RZ_API bool rz_analysis_noreturn_at_addr(RzAnalysis *analysis, ut64 addr); RZ_API bool rz_analysis_noreturn_at(RzAnalysis *analysis, ut64 addr); RZ_API RzList /**/ *rz_analysis_noreturn_functions(RzAnalysis *analysis); diff --git a/test/db/cmd/noreturn b/test/db/cmd/noreturn index d213ad59ca..7f27e1a1a4 100644 --- a/test/db/cmd/noreturn +++ b/test/db/cmd/noreturn @@ -24,10 +24,13 @@ size: 33 EOF RUN -NAME=tn 0x00048550 +NAME=tn- 0x08048550 FILE=bins/elf/analysis/hello-objc-linux CMDS=<