summaryrefslogtreecommitdiff
path: root/plugins/readelf/strtab.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/readelf/strtab.c')
-rw-r--r--plugins/readelf/strtab.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/plugins/readelf/strtab.c b/plugins/readelf/strtab.c
index c94deed..9e625fd 100644
--- a/plugins/readelf/strtab.c
+++ b/plugins/readelf/strtab.c
@@ -33,13 +33,14 @@
/* Affiche les chaînes présentes dans une zone de données. */
-static void parse_elf_string_table(GElfFormat *, const GBinContent *, const mrange_t *, GtkStatusStack *);
+static void parse_elf_string_table(GElfFormat *, GPreloadInfo *, const GBinContent *, const mrange_t *, GtkStatusStack *);
/******************************************************************************
* *
* Paramètres : format = description de l'exécutable à compléter. *
+* info = informations à constituer en avance de phase. *
* content = contenu binaire à analyser. *
* range = espace à couvrir pendant l'analyse. *
* status = barre de statut à tenir informée. *
@@ -52,7 +53,7 @@ static void parse_elf_string_table(GElfFormat *, const GBinContent *, const mran
* *
******************************************************************************/
-static void parse_elf_string_table(GElfFormat *format, const GBinContent *content, const mrange_t *range, GtkStatusStack *status)
+static void parse_elf_string_table(GElfFormat *format, GPreloadInfo *info, const GBinContent *content, const mrange_t *range, GtkStatusStack *status)
{
phys_t length; /* Taille de la couverture */
vmpa2t pos; /* Tête de lecture */
@@ -94,6 +95,9 @@ static void parse_elf_string_table(GElfFormat *format, const GBinContent *conten
g_raw_instruction_mark_as_string(G_RAW_INSTRUCTION(instr), true);
+ g_preload_info_add_instruction(info, instr);
+
+ g_object_ref(G_OBJECT(instr));
ADD_STR_AS_SYM(format, symbol, instr);
/* Jointure avec la chaîne précédente ? */
@@ -126,6 +130,7 @@ static void parse_elf_string_table(GElfFormat *format, const GBinContent *conten
/******************************************************************************
* *
* Paramètres : format = description de l'exécutable à compléter. *
+* info = informations à constituer en avance de phase. *
* status = barre de statut à tenir informée. *
* *
* Description : Affiche les chaînes liées aux sections ELF. *
@@ -136,7 +141,7 @@ static void parse_elf_string_table(GElfFormat *format, const GBinContent *conten
* *
******************************************************************************/
-void show_elf_section_string_table(GElfFormat *format, GtkStatusStack *status)
+void show_elf_section_string_table(GElfFormat *format, GPreloadInfo *info, GtkStatusStack *status)
{
GBinContent *content; /* Contenu binaire à lire */
mrange_t range; /* Espace à parcourir */
@@ -147,17 +152,17 @@ void show_elf_section_string_table(GElfFormat *format, GtkStatusStack *status)
found = find_elf_section_range_by_name(format, ".interp", &range);
if (found)
- parse_elf_string_table(format, content, &range, status);
+ parse_elf_string_table(format, info, content, &range, status);
found = find_elf_section_range_by_name(format, ".shstrtab", &range);
if (found)
- parse_elf_string_table(format, content, &range, status);
+ parse_elf_string_table(format, info, content, &range, status);
found = find_elf_section_range_by_name(format, ".strtab", &range);
if (found)
- parse_elf_string_table(format, content, &range, status);
+ parse_elf_string_table(format, info, content, &range, status);
g_object_unref(G_OBJECT(content));