summaryrefslogtreecommitdiff
path: root/src/binary.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/binary.c')
-rw-r--r--src/binary.c28
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;