diff options
Diffstat (limited to 'src/format/elf/symbols.c')
-rw-r--r-- | src/format/elf/symbols.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/format/elf/symbols.c b/src/format/elf/symbols.c index 03812f1..b57c601 100644 --- a/src/format/elf/symbols.c +++ b/src/format/elf/symbols.c @@ -252,10 +252,10 @@ static bool load_all_elf_basic_entry_points(GElfFormat *format) elf_dyn item_b; /* Second élément DYNAMIC */ const bin_t *content; /* Contenu binaire à lire */ off_t length; /* Taille totale du contenu */ + bool status; /* Bilan d'une opération */ off_t pos; /* Tête de lecture courante */ uint32_t virt_32; /* Adresse virtuelle sur 32b */ uint64_t virt_64; /* Adresse virtuelle sur 64b */ - bool status; /* Bilan d'une opération */ /* Point d'entrée principal éventuel */ @@ -308,8 +308,10 @@ static bool load_all_elf_basic_entry_points(GElfFormat *format) content = G_BIN_FORMAT(fmt)->content; length = G_BIN_FORMAT(fmt)->length; - if (!translate_address_into_offset_using_elf_programs(fmt, ELF_DYN(fmt, *ar, d_un.d_val), &pos)) - return; + status = g_exe_format_translate_address_into_offset(G_EXE_FORMAT(format), + ELF_DYN(fmt, *ar, d_un.d_val), + &pos); + if (!status) return; if ((pos + ELF_DYN(fmt, *sz, d_un.d_val)) < length) length = pos + ELF_DYN(fmt, *sz, d_un.d_val); @@ -373,7 +375,11 @@ static bool load_all_elf_basic_entry_points(GElfFormat *format) if (find_elf_dynamic_item_from_pheader(format, &dynamic, DT_PLTGOT, &item_a)) { - if (translate_address_into_offset_using_elf_programs(format, ELF_DYN(format, item_a, d_un.d_val), &pos)) + status = g_exe_format_translate_address_into_offset(G_EXE_FORMAT(format), + ELF_DYN(format, item_a, d_un.d_val), + &pos); + + if (status) { content = G_BIN_FORMAT(format)->content; length = G_BIN_FORMAT(format)->length; |