diff options
Diffstat (limited to 'src/binary.c')
-rw-r--r-- | src/binary.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/binary.c b/src/binary.c index 73960ac..9c0fefb 100644 --- a/src/binary.c +++ b/src/binary.c @@ -35,9 +35,16 @@ #include "arch/processor.h" -#include "format/elf/format_elf.h" +#include "format/dbg_format.h" +#include "format/exe_format.h" +#include "format/elf/e_elf.h" +#include "format/dwarf/d_dwarf.h" + + + +extern bool find_line_info(const uint8_t *content, off_t *size); /* Charge en mémoire le contenu d'un fichier. */ @@ -107,11 +114,12 @@ uint8_t *map_binary_file(const char *filename, size_t *length) void fill_snippet(GtkSnippet *snippet) { - size_t length; + off_t length; uint8_t *bin_data; int ret; - + exe_format *format; + dbg_format *dformat; asm_processor *proc; asm_instr *instr; @@ -140,10 +148,20 @@ void fill_snippet(GtkSnippet *snippet) printf(" ~~ bin_data ~~ :: %p (%d)\n", bin_data, length); - if (bin_data != NULL) - find_text_data(bin_data, &pos, &len, &base); + if (bin_data == NULL) return; + + + format = load_elf(bin_data, length); + dformat = load_dwarf(bin_data, length, format); + + find_exe_section(format, ".text", &pos, &len, &base); + + + /*find_line_info(bin_data, &len);*/ + printf("Exiting...\n"); + exit(0); offset = base; |