diff --git a/librz/arch/analysis.c b/librz/arch/analysis.c index b7e73f9f06..74c117739e 100644 --- a/librz/arch/analysis.c +++ b/librz/arch/analysis.c @@ -1143,8 +1143,8 @@ 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; - if (!strncmp(expr, "0x", 2)) { - ut64 n = rz_num_math(NULL, expr); + ut64 n = analysis->coreb.core ? analysis->coreb.numGet(analysis->coreb.core, expr) : rz_num_math(NULL, expr); + if (n) { sdb_noret_addr_unset(NDB, n); RzAnalysisFunction *fcn = rz_analysis_get_fcn_in(analysis, n, -1); if (!fcn) { @@ -1156,7 +1156,6 @@ RZ_API void rz_analysis_noreturn_drop(RzAnalysis *analysis, const char *expr) { fcnname = expr; } sdb_noret_func_unset(NDB, fcnname); - return; } static bool rz_analysis_is_noreturn(RzAnalysis *analysis, const char *name) { diff --git a/test/db/cmd/noreturn b/test/db/cmd/noreturn index 7f27e1a1a4..a7c5494c7b 100644 --- a/test/db/cmd/noreturn +++ b/test/db/cmd/noreturn @@ -11,6 +11,20 @@ size: 33 EOF RUN +NAME=tn- symbol +FILE=bins/elf/analysis/hello-objc-linux +CMDS=<