summaryrefslogtreecommitdiff
path: root/plugins/arm/v7/link.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-01-08 22:29:47 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-01-08 22:29:47 (GMT)
commit2ed3c9274c8dafb660bc25743a1aac7c72c12965 (patch)
treee3f20c5ebfe947163442144aba29a1d62462ac7d /plugins/arm/v7/link.c
parent8f77fd4f0a73a92087b185af0b45d70607268107 (diff)
Marked the ARMv7 branch instructions with the LR register as return points.
Diffstat (limited to 'plugins/arm/v7/link.c')
-rw-r--r--plugins/arm/v7/link.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/plugins/arm/v7/link.c b/plugins/arm/v7/link.c
index 4a63890..e30b0c1 100644
--- a/plugins/arm/v7/link.c
+++ b/plugins/arm/v7/link.c
@@ -62,7 +62,17 @@ void handle_armv7_conditional_branch_from_register(GArchInstruction *instr, GArc
g_arch_instruction_set_flag(instr, AIF_RETURN_POINT);
else
- g_arch_instruction_set_flag(instr, AIF_RETURN_POINT); /* FIXME : jump inconnu ! */
+ {
+ /**
+ * On fait un saut mais on ne sait pas vers où !
+ *
+ * Dans tous les cas, le flot d'exécution ne continue pas naturellement
+ * vers l'instruction suivante, donc on marque le branchement comme
+ * étant un point de retour.
+ */
+ g_arch_instruction_set_flag(instr, AIF_RETURN_POINT);
+
+ }
g_object_unref(G_OBJECT(reg));