diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2015-10-15 19:18:31 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2015-10-15 19:18:31 (GMT) |
commit | 83dccba3a9b6c18d6fe7b6f30794a16336803962 (patch) | |
tree | 982e6ec5d7eae20020315936cbfbd9494bc9111e /src/analysis/disass/area.c | |
parent | c9449c389834c580196527c4e1cb010a701e7a32 (diff) |
Detected loops as introduced in the book "Compilers: Principles, Techniques, and Tools".
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@596 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
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); |