Use the internal RVector in mach0.vapa ##bin

This commit is contained in:
pancake 2023-06-29 11:30:35 +02:00 committed by GitHub
parent 56c3f083b2
commit 433b283e65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 26 deletions

View File

@ -46,8 +46,8 @@ typedef enum {
#define R_FIXUP_EVENT_MASK_ALL (R_FIXUP_EVENT_MASK_BIND_ALL | R_FIXUP_EVENT_MASK_REBASE_ALL)
struct section_t {
ut64 offset;
ut64 addr;
ut64 offset; // paddr R2_590
ut64 addr; // vaddr
ut64 size;
ut64 vsize;
ut32 align;

View File

@ -1,4 +1,4 @@
/* radare - LGPL - Copyright 2015-2022 - inisider, pancake */
/* radare - LGPL - Copyright 2015-2023 - inisider, pancake */
#include "../../i/private.h"
#include "mach0_classes.h"
@ -130,25 +130,24 @@ static bool is_thumb(RBinFile *bf) {
static mach0_ut va2pa(mach0_ut p, ut32 *offset, ut32 *left, RBinFile *bf) {
r_return_val_if_fail (bf && bf->o && bf->o->bin_obj, 0);
mach0_ut addr, r;
RListIter *iter = NULL;
RBinSection *s = NULL;
mach0_ut r = 0;
RBinObject *obj = bf->o;
if (offset) {
*offset = 0;
}
if (left) {
*left = 0;
}
struct MACH0_(obj_t) *bin = (struct MACH0_(obj_t)*) obj->bin_obj;
if (bin->va2pa) {
return bin->va2pa (p, offset, left, bf);
}
RList *sctns = r_bin_plugin_mach.sections (bf);
if (!sctns) {
// retain just for debug
// eprintf ("there is no sections\n");
return 0;
}
addr = p;
r_list_foreach (sctns, iter, s) {
mach0_ut addr = p;
RList *sections = MACH0_(get_segments) (bf, bin);
RListIter *iter;
RBinSection *s;
r_list_foreach (sections, iter, s) {
if (addr >= s->vaddr && addr < s->vaddr + s->vsize) {
if (offset) {
*offset = addr - s->vaddr;
@ -157,18 +156,11 @@ static mach0_ut va2pa(mach0_ut p, ut32 *offset, ut32 *left, RBinFile *bf) {
*left = s->vsize - (addr - s->vaddr);
}
r = (s->paddr - obj->boffset + (addr - s->vaddr));
return r;
break;
}
}
if (offset) {
*offset = 0;
}
if (left) {
*left = 0;
}
return 0;
r_list_free (sections);
return r;
}
static void copy_sym_name_with_namespace(char *class_name, char *read_name, RBinSymbol *sym) {