mirror of
https://github.com/radareorg/radare2.git
synced 2025-03-02 11:16:15 +00:00
Fix r2 -B .. sets bin.laddr and honors va=2
This commit is contained in:
parent
2eefd8908e
commit
3cfeec1d4e
@ -196,6 +196,7 @@ int main(int argc, char **argv, char **envp) {
|
||||
RList *cmds = r_list_new ();
|
||||
RList *evals = r_list_new ();
|
||||
int cmdfilei = 0;
|
||||
int va = 1; // set va = 0 to load physical offsets from rbin
|
||||
|
||||
r_sys_set_environ (envp);
|
||||
|
||||
@ -256,7 +257,10 @@ int main(int argc, char **argv, char **envp) {
|
||||
do_analysis = R_TRUE;
|
||||
break;
|
||||
case 'b': asmbits = optarg; break;
|
||||
case 'B': baddr = r_num_math (r.num, optarg); break;
|
||||
case 'B':
|
||||
baddr = r_num_math (r.num, optarg);
|
||||
va = 2;
|
||||
break;
|
||||
case 'c': r_list_append (cmds, optarg); break;
|
||||
case 'C':
|
||||
do_connect = R_TRUE;
|
||||
@ -350,7 +354,10 @@ int main(int argc, char **argv, char **envp) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r_config_set_i (r.config, "bin.baddr", baddr);
|
||||
if (va == 2) {
|
||||
r_config_set_i (r.config, "bin.laddr", baddr);
|
||||
}
|
||||
// TODO: set io.va = 2 if -B
|
||||
|
||||
if (debug) {
|
||||
r_config_set (r.config, "search.in", "raw"); // implicit?
|
||||
|
@ -5,7 +5,6 @@
|
||||
#define STR(x) (x)?(x):""
|
||||
// XXX - this may lead to conflicts with set by name
|
||||
static int r_core_bin_set_cur (RCore *core, RBinFile *binfile);
|
||||
//static int r_core_bin_set_env (RCore *r, RBinFile *binfile);
|
||||
|
||||
static ut64 rva (RBin *bin, int va, ut64 paddr, ut64 vaddr, ut64 baddr, ut64 laddr) {
|
||||
switch (va) {
|
||||
|
@ -349,7 +349,7 @@ R_API int r_io_map_count (RIO *io);
|
||||
|
||||
/* io/section.c */
|
||||
R_API void r_io_section_init(RIO *io);
|
||||
R_API void r_io_section_add(RIO *io, ut64 offset, ut64 vaddr, ut64 size, ut64 vsize, int rwx, const char *name, ut32 bin_id, int fd);
|
||||
R_API RIOSection *r_io_section_add(RIO *io, ut64 offset, ut64 vaddr, ut64 size, ut64 vsize, int rwx, const char *name, ut32 bin_id, int fd);
|
||||
R_API RIOSection *r_io_section_get_name(RIO *io, const char *name);
|
||||
R_API RIOSection *r_io_section_get_i(RIO *io, int idx);
|
||||
R_API RIOSection *r_io_section_getv(RIO *io, ut64 vaddr);
|
||||
|
@ -27,7 +27,7 @@ R_API RIOSection *r_io_section_get_name(RIO *io, const char *name) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
R_API void r_io_section_add(RIO *io, ut64 offset, ut64 vaddr, ut64 size, ut64 vsize, int rwx, const char *name, ut32 bin_id, int fd) {
|
||||
R_API RIOSection *r_io_section_add(RIO *io, ut64 offset, ut64 vaddr, ut64 size, ut64 vsize, int rwx, const char *name, ut32 bin_id, int fd) {
|
||||
int update = 0;
|
||||
RIOSection *s;
|
||||
if (size==0 || size>0xf0000000) {
|
||||
@ -54,6 +54,7 @@ R_API void r_io_section_add(RIO *io, ut64 offset, ut64 vaddr, ut64 size, ut64 vs
|
||||
else *s->name = '\0';
|
||||
r_list_append (io->sections, s);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
R_API RIOSection *r_io_section_get_i(RIO *io, int idx) {
|
||||
@ -73,6 +74,7 @@ R_API int r_io_section_rm(RIO *io, int idx) {
|
||||
R_API void r_io_section_clear(RIO *io) {
|
||||
r_list_free (io->sections);
|
||||
io->sections = r_list_new ();
|
||||
io->sections->free = free;
|
||||
}
|
||||
|
||||
// TODO: implement as callback
|
||||
|
Loading…
x
Reference in New Issue
Block a user