summaryrefslogtreecommitdiff
path: root/plugins/elf
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/elf')
-rw-r--r--plugins/elf/loading.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/plugins/elf/loading.c b/plugins/elf/loading.c
index bf79f13..181c864 100644
--- a/plugins/elf/loading.c
+++ b/plugins/elf/loading.c
@@ -720,7 +720,6 @@ GBinSymbol *g_elf_loading_build_plt_symbol(const GElfLoading *loading, uint64_t
const GBinContent *content; /* Contenu binaire à lire */
const char *raw_label; /* Première partie de nom */
GBinRoutine *routine; /* Routine à mettre en place */
- char *new_label; /* Nouvelle étiquette */
format = loading->format;
@@ -751,12 +750,21 @@ GBinSymbol *g_elf_loading_build_plt_symbol(const GElfLoading *loading, uint64_t
{
routine = g_binary_format_decode_routine(base, raw_label);
- raw_label = g_binary_routine_get_name(routine);
-
- new_label = strdup(raw_label);
- new_label = stradd(new_label, "@plt");
-
- g_binary_routine_set_name(routine, new_label);
+ /**
+ * L'ajout d'un suffixe "@plt" artificiel est ici supprimé.
+ *
+ * Si un tel ajout est facile sur des fonctions C classiques
+ * (via un appel à g_binary_routine_get_name(), une modification du résultat
+ * obtenu puis une mise à jour avec g_binary_routine_set_name()) le traitement
+ * des fonctions C++ s'avère plus laborieux.
+ *
+ * Par exemple, cerner le nom d'une fonction comportant des patrons requiert
+ * des opérations pour la mise à jour de ce nom ; et charge à l'utilisateur
+ * de procéder à un traitement tout aussi complexe s'il souhaite retrouver
+ * le nom d'origine, sans facilité apportée par Chrysalide.
+ *
+ * On garde en référence à ce titre la fonction _ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldIN8pittpatt5proto14DetectedObjectEE11TypeHandlerEEEvv.
+ */
result = G_BIN_SYMBOL(routine);