From aa7e6d80ad22da8005fc1eae249b6e9fd3eac4f3 Mon Sep 17 00:00:00 2001 From: wargio Date: Sat, 6 Jan 2024 14:39:31 +0800 Subject: [PATCH] Remove hidden static in run_basic_block_analysis --- librz/analysis/analysis.c | 1 + librz/analysis/fcn.c | 9 ++++----- librz/include/rz_analysis.h | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/librz/analysis/analysis.c b/librz/analysis/analysis.c index 603d14546f..4b80a007ad 100644 --- a/librz/analysis/analysis.c +++ b/librz/analysis/analysis.c @@ -139,6 +139,7 @@ RZ_API RzAnalysis *rz_analysis_new(void) { analysis->hash = rz_hash_new(); analysis->debug_info = rz_analysis_debug_info_new(); analysis->cmpval = UT64_MAX; + analysis->lea_jmptbl_ip = UT64_MAX; return analysis; } diff --git a/librz/analysis/fcn.c b/librz/analysis/fcn.c index 57c09bf971..e5c8567a0a 100644 --- a/librz/analysis/fcn.c +++ b/librz/analysis/fcn.c @@ -643,7 +643,6 @@ static RzAnalysisBBEndCause run_basic_block_analysis(RzAnalysisTaskItem *item, R gotoBeach(RZ_ANALYSIS_RET_ERROR); } } - static ut64 lea_jmptbl_ip = UT64_MAX; ut64 last_reg_mov_lea_val = UT64_MAX; bool last_is_reg_mov_lea = false; bool last_is_push = false; @@ -986,7 +985,7 @@ static RzAnalysisBBEndCause run_basic_block_analysis(RzAnalysisTaskItem *item, R ? rz_analysis_walkthrough_jmptbl(analysis, fcn, bb, ¶ms) : rz_analysis_walkthrough_casetbl(analysis, fcn, bb, ¶ms); if (ret) { - lea_jmptbl_ip = jmp_aop.addr; + analysis->lea_jmptbl_ip = jmp_aop.addr; } } } @@ -1267,7 +1266,7 @@ static RzAnalysisBBEndCause run_basic_block_analysis(RzAnalysisTaskItem *item, R gotoBeach(RZ_ANALYSIS_RET_END); } // switch statement - if (analysis->opt.jmptbl && lea_jmptbl_ip != op.addr) { + if (analysis->opt.jmptbl && analysis->lea_jmptbl_ip != op.addr) { RzAnalysisJmpTableParams params = { .jmp_address = op.addr, .entry_size = analysis->bits >> 3, @@ -1361,8 +1360,8 @@ static RzAnalysisBBEndCause run_basic_block_analysis(RzAnalysisTaskItem *item, R } } } - if (lea_jmptbl_ip == op.addr) { - lea_jmptbl_ip = UT64_MAX; + if (analysis->lea_jmptbl_ip == op.addr) { + analysis->lea_jmptbl_ip = UT64_MAX; } if (analysis->opt.ijmp) { if (continue_after_jump) { diff --git a/librz/include/rz_analysis.h b/librz/include/rz_analysis.h index 3bdf209ec1..02a7e89dca 100644 --- a/librz/include/rz_analysis.h +++ b/librz/include/rz_analysis.h @@ -534,6 +534,7 @@ typedef struct rz_analysis_t { RzHash *hash; RzAnalysisDebugInfo *debug_info; ///< store all debug info parsed from DWARF, etc.. ut64 cmpval; ///< last compare value for jump table. + ut64 lea_jmptbl_ip; ///< jump table x86 lea ip } RzAnalysis; typedef enum rz_analysis_addr_hint_type_t {