summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/arm/v7/fetch.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/plugins/arm/v7/fetch.c b/plugins/arm/v7/fetch.c
index 18c5ce3..20918c5 100644
--- a/plugins/arm/v7/fetch.c
+++ b/plugins/arm/v7/fetch.c
@@ -29,6 +29,7 @@
#include <i18n.h>
+#include <arch/processor.h>
#include <arch/raw.h>
#include <format/format.h>
#include <format/preload.h>
@@ -424,7 +425,19 @@ void help_fetching_with_instruction_ldr_literal_with_orig(GArchInstruction *inst
if (!g_exe_format_translate_offset_into_vmpa(format, val_offset, &loaded_addr))
{
- assert(0);
+ /**
+ * Ce cas de figure correspond à la situation où une instruction "ldr"
+ * tente de charger une valeur qui se trouve sur un segment qui n'est
+ * pas chargé en mémoire par exemple.
+ *
+ * Dans la pratique, on pourrait parfois retrouver la valeur ciblée,
+ * mais effectivement cette donnée n'est pas disponible au moment de
+ * l'exécution.
+ */
+
+ g_arch_processor_add_error(proc, APE_DISASSEMBLY, get_mrange_addr(range),
+ _("Unable to load a value which is not addressable"));
+
g_object_unref(G_OBJECT(op));
g_arch_instruction_unlock_operands(instr);
return;