mirror of
https://github.com/radareorg/radare2.git
synced 2026-05-29 08:29:51 +09:00
Address user review
This commit is contained in:
@@ -528,47 +528,48 @@ static bool cb_archbits_getter(RCore *core, RConfigNode *node) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool core_arch_set_endian_reload(RCore *core, ut32 endian) {
|
||||||
|
if (core->anal->arch->cfg && core->anal->arch->cfg->endian == endian) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
r_core_esil_unload_arch (core);
|
||||||
|
bool ret = r_arch_set_endian (core->anal->arch, endian);
|
||||||
|
r_core_esil_load_arch (core);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void core_config_set_bigendian(RCore *core, bool is_big) {
|
||||||
|
RConfigNode *be = r_config_node_get (core->config, "cfg.bigendian");
|
||||||
|
if (be) {
|
||||||
|
free (be->value);
|
||||||
|
be->value = strdup (is_big? "true": "false");
|
||||||
|
be->i_value = is_big;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool cb_archendian(void *user, void *data) {
|
static bool cb_archendian(void *user, void *data) {
|
||||||
RCore *core = user;
|
RCore *core = user;
|
||||||
RConfigNode *node = data;
|
RConfigNode *node = data;
|
||||||
R_RETURN_VAL_IF_FAIL (node && core && core->anal && core->anal->arch, false);
|
if (!node || !node->value || !core || !core->anal || !core->anal->arch) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ut32 endian;
|
||||||
|
bool is_big = false;
|
||||||
if (!strcmp (node->value, "big") || !strcmp (node->value, "bigswap")) {
|
if (!strcmp (node->value, "big") || !strcmp (node->value, "bigswap")) {
|
||||||
r_core_esil_unload_arch (core);
|
endian = R_SYS_ENDIAN_BIG;
|
||||||
r_arch_set_endian (core->anal->arch, R_SYS_ENDIAN_BIG);
|
is_big = true;
|
||||||
RConfigNode *be = r_config_node_get (core->config, "cfg.bigendian");
|
} else if (!strcmp (node->value, "little") || !strcmp (node->value, "littleswap")) {
|
||||||
if (be) {
|
endian = R_SYS_ENDIAN_LITTLE;
|
||||||
free (be->value);
|
} else if (!strcmp (node->value, "middle")) {
|
||||||
be->value = strdup ("true");
|
endian = R_SYS_ENDIAN_MIDDLE;
|
||||||
be->i_value = 1;
|
} else {
|
||||||
}
|
return false;
|
||||||
r_core_esil_load_arch (core);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
if (!strcmp (node->value, "little") || !strcmp (node->value, "littleswap")) {
|
if (!core_arch_set_endian_reload (core, endian)) {
|
||||||
r_core_esil_unload_arch (core);
|
return false;
|
||||||
r_arch_set_endian (core->anal->arch, R_SYS_ENDIAN_LITTLE);
|
|
||||||
RConfigNode *be = r_config_node_get (core->config, "cfg.bigendian");
|
|
||||||
if (be) {
|
|
||||||
free (be->value);
|
|
||||||
be->value = strdup ("false");
|
|
||||||
be->i_value = 0;
|
|
||||||
}
|
|
||||||
r_core_esil_load_arch (core);
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
if (!strcmp (node->value, "middle")) {
|
core_config_set_bigendian (core, is_big);
|
||||||
r_core_esil_unload_arch (core);
|
return true;
|
||||||
r_arch_set_endian (core->anal->arch, R_SYS_ENDIAN_MIDDLE);
|
|
||||||
RConfigNode *be = r_config_node_get (core->config, "cfg.bigendian");
|
|
||||||
if (be) {
|
|
||||||
free (be->value);
|
|
||||||
be->value = strdup ("false");
|
|
||||||
be->i_value = 0;
|
|
||||||
}
|
|
||||||
r_core_esil_load_arch (core);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool cb_analrecont(void *user, void *data) {
|
static bool cb_analrecont(void *user, void *data) {
|
||||||
@@ -1433,14 +1434,14 @@ static bool cb_bigendian(void *user, void *data) {
|
|||||||
core->dbg->bp->endian = isbig;
|
core->dbg->bp->endian = isbig;
|
||||||
}
|
}
|
||||||
core->rasm->config->endian = endianType;
|
core->rasm->config->endian = endianType;
|
||||||
r_core_esil_unload_arch (core);
|
if (!core_arch_set_endian_reload (core, endianType)) {
|
||||||
r_arch_set_endian (core->anal->arch, endianType);
|
return false;
|
||||||
|
}
|
||||||
RConfigNode *ae = r_config_node_get (core->config, "arch.endian");
|
RConfigNode *ae = r_config_node_get (core->config, "arch.endian");
|
||||||
if (ae) {
|
if (ae) {
|
||||||
free (ae->value);
|
free (ae->value);
|
||||||
ae->value = strdup (node->i_value? "big": "little");
|
ae->value = strdup (node->i_value? "big": "little");
|
||||||
}
|
}
|
||||||
r_core_esil_load_arch (core);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2466,25 +2467,15 @@ static void core_esil_set_cmd(char **dst, const char *cmd) {
|
|||||||
*dst = R_STR_ISNOTEMPTY (cmd)? strdup (cmd): NULL;
|
*dst = R_STR_ISNOTEMPTY (cmd)? strdup (cmd): NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void legacy_esil_set_cmd(REsil *esil, char **dst, const char *cmd) {
|
|
||||||
if (esil) {
|
|
||||||
esil->cmd = r_core_esil_cmd;
|
|
||||||
core_esil_set_cmd (dst, cmd);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static REsil *core_legacy_esil(RCore *core) {
|
|
||||||
return R_UNWRAP3 (core, anal, esil);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool cb_cmd_esil_ioer(void *user, void *data) {
|
static bool cb_cmd_esil_ioer(void *user, void *data) {
|
||||||
RCore *core = user;
|
RCore *core = user;
|
||||||
RConfigNode *node = data;
|
RConfigNode *node = data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.ioer, node->value);
|
core_esil_set_cmd (&core->esil.cmds.ioer, node->value);
|
||||||
REsil *esil = core_legacy_esil (core);
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
legacy_esil_set_cmd (esil, &esil->cmd_ioer, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
core_esil_set_cmd (&esil->cmd_ioer, node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -2495,9 +2486,10 @@ static bool cb_cmd_esil_todo(void *user, void *data) {
|
|||||||
RConfigNode *node = (RConfigNode *)data;
|
RConfigNode *node = (RConfigNode *)data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.todo, node->value);
|
core_esil_set_cmd (&core->esil.cmds.todo, node->value);
|
||||||
REsil *esil = core_legacy_esil (core);
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
legacy_esil_set_cmd (esil, &esil->cmd_todo, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
core_esil_set_cmd (&esil->cmd_todo, node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -2508,9 +2500,10 @@ static bool cb_cmd_esil_intr(void *user, void *data) {
|
|||||||
RConfigNode *node = (RConfigNode *)data;
|
RConfigNode *node = (RConfigNode *)data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.intr, node->value);
|
core_esil_set_cmd (&core->esil.cmds.intr, node->value);
|
||||||
REsil *esil = core_legacy_esil (core);
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
legacy_esil_set_cmd (esil, &esil->cmd_intr, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
core_esil_set_cmd (&esil->cmd_intr, node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -2521,9 +2514,11 @@ static bool cb_mdevrange(void *user, void *data) {
|
|||||||
RConfigNode *node = data;
|
RConfigNode *node = data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.mdev_range, node->value);
|
core_esil_set_cmd (&core->esil.cmds.mdev_range, node->value);
|
||||||
REsil *esil = core_legacy_esil (core);
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
core_esil_set_cmd (&esil->mdev_range, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
free (esil->mdev_range);
|
||||||
|
esil->mdev_range = strdup (node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -2544,9 +2539,10 @@ static bool cb_cmd_esil_step(void *user, void *data) {
|
|||||||
RConfigNode *node = data;
|
RConfigNode *node = data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.step, node->value);
|
core_esil_set_cmd (&core->esil.cmds.step, node->value);
|
||||||
REsil *esil = core_legacy_esil (core);
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
legacy_esil_set_cmd (esil, &esil->cmd_step, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
core_esil_set_cmd (&esil->cmd_step, node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -2557,9 +2553,10 @@ static bool cb_cmd_esil_step_out(void *user, void *data) {
|
|||||||
RConfigNode *node = data;
|
RConfigNode *node = data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.step_out, node->value);
|
core_esil_set_cmd (&core->esil.cmds.step_out, node->value);
|
||||||
REsil *esil = core_legacy_esil (core);
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
legacy_esil_set_cmd (esil, &esil->cmd_step_out, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
core_esil_set_cmd (&esil->cmd_step_out, node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -2570,9 +2567,10 @@ static bool cb_cmd_esil_mdev(void *user, void *data) {
|
|||||||
RConfigNode *node = data;
|
RConfigNode *node = data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.mdev, node->value);
|
core_esil_set_cmd (&core->esil.cmds.mdev, node->value);
|
||||||
REsil *esil = core_legacy_esil (core);
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
legacy_esil_set_cmd (esil, &esil->cmd_mdev, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
core_esil_set_cmd (&esil->cmd_mdev, node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -2583,10 +2581,12 @@ static bool cb_cmd_esil_trap(void *user, void *data) {
|
|||||||
RConfigNode *node = (RConfigNode *)data;
|
RConfigNode *node = (RConfigNode *)data;
|
||||||
if (core) {
|
if (core) {
|
||||||
core_esil_set_cmd (&core->esil.cmds.trap, node->value);
|
core_esil_set_cmd (&core->esil.cmds.trap, node->value);
|
||||||
legacy_esil_set_cmd (&core->esil.esil, &core->esil.esil.cmd_trap, node->value);
|
core->esil.esil.cmd = r_core_esil_cmd;
|
||||||
REsil *esil = core_legacy_esil (core);
|
core_esil_set_cmd (&core->esil.esil.cmd_trap, node->value);
|
||||||
|
REsil *esil = R_UNWRAP3 (core, anal, esil);
|
||||||
if (esil) {
|
if (esil) {
|
||||||
legacy_esil_set_cmd (esil, &esil->cmd_trap, node->value);
|
esil->cmd = r_core_esil_cmd;
|
||||||
|
core_esil_set_cmd (&esil->cmd_trap, node->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -2790,9 +2790,6 @@ R_API void r_core_fini(RCore *c) {
|
|||||||
c->libstore = NULL;
|
c->libstore = NULL;
|
||||||
r_lib_free (c->lib);
|
r_lib_free (c->lib);
|
||||||
r_event_free (c->ev);
|
r_event_free (c->ev);
|
||||||
/*
|
|
||||||
r_unref (c->anal->config);
|
|
||||||
*/
|
|
||||||
r_core_esil_fini (&c->esil);
|
r_core_esil_fini (&c->esil);
|
||||||
if (c->anal->esil) {
|
if (c->anal->esil) {
|
||||||
c->anal->esil->anal = NULL;
|
c->anal->esil->anal = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user