Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove hidden static in run_basic_block_analysis
Browse files Browse the repository at this point in the history
wargio committed Jan 6, 2024
1 parent d3ce55d commit 9442171
Showing 3 changed files with 6 additions and 5 deletions.
1 change: 1 addition & 0 deletions librz/analysis/analysis.c
Original file line number Diff line number Diff line change
@@ -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;
}

9 changes: 4 additions & 5 deletions librz/analysis/fcn.c
Original file line number Diff line number Diff line change
@@ -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, &params)
: rz_analysis_walkthrough_casetbl(analysis, fcn, bb, &params);
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) {
1 change: 1 addition & 0 deletions librz/include/rz_analysis.h
Original file line number Diff line number Diff line change
@@ -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 {

0 comments on commit 9442171

Please sign in to comment.