diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2008-08-08 09:28:16 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2008-08-08 09:28:16 (GMT) |
commit | 904476ddf621d9513bf90a3fa396d2e6c1ea2952 (patch) | |
tree | f8966baa2ea80d2c2068a85b24ead1e651d17dc9 /src/binary.c | |
parent | 0153acaaf41e97477f6c484a92c2dd46f5122300 (diff) |
Prepared to handle the DWARF debug format.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@15 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
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; |