diff options
Diffstat (limited to 'src/analysis/disass/area.c')
-rw-r--r-- | src/analysis/disass/area.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/analysis/disass/area.c b/src/analysis/disass/area.c index b45e7fc..de2c742 100644 --- a/src/analysis/disass/area.c +++ b/src/analysis/disass/area.c @@ -554,6 +554,8 @@ bool load_code_from_mem_area(mem_area **list, size_t *count, size_t *index, cons diff = compute_vmpa_diff(&prev, &pos); + assert(diff == 4 || diff == 2); /* FIXME */ + init_mrange(&range, &prev, diff); g_arch_instruction_set_range(instr, &range); @@ -840,7 +842,7 @@ void fill_mem_area(mem_area **list, size_t *count, size_t *index, const GLoadedB copy_vmpa(&start, get_mrange_addr(&area->range)); advance_vmpa(&start, i); - if (area->exec && get_virt_addr(&start) % 2 == 0) + if (area->exec && get_virt_addr(&start) % 4/*2 - FIXME */ == 0) { refresh = load_code_from_mem_area(list, count, index, binary, ctx, &start, info); @@ -1396,6 +1398,8 @@ static bool insert_extra_symbol_into_mem_areas(mem_area **list, size_t *count, G /* Si le symbole est construit avec une localisation partielle, on complète ! */ if (get_phy_addr(&sym_pos) == VMPA_NO_PHYSICAL || get_virt_addr(&sym_pos) == VMPA_NO_VIRTUAL) { + assert(false); + diff = compute_vmpa_diff(&area_pos, &sym_pos); copy_vmpa(&sym_pos, &area_pos); |