From: Yao Qi <qiyaoltc@gmail.com>
To: gdb-patches@sourceware.org
Subject: [PATCH] [ARM] minor opt in thumb_stack_frame_destroyed_p
Date: Fri, 15 Apr 2016 14:30:00 -0000 [thread overview]
Message-ID: <1460730578-28723-1-git-send-email-yao.qi@linaro.org> (raw)
thumb_stack_frame_destroyed_p scans the instructions from PC to the
end of the function, but if PC is far from the end of pc, we don't
have to scan, because PC should be in epilogue if it is still
far from the end of the function. The criterion I use here is 16
bytes, which is more than 4 instructions.
Regression tested on aarch64-linux with mutli-arch debug. I'll push
it in.
gdb:
2016-04-15 Yao Qi <yao.qi@linaro.org>
* arm-tdep.c (thumb_stack_frame_destroyed_p): Return zero if
PC is far from the end of function.
---
gdb/ChangeLog | 5 +++++
gdb/arm-tdep.c | 8 ++++++++
2 files changed, 13 insertions(+)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 09937a9..e85023e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-15 Yao Qi <yao.qi@linaro.org>
+
+ * arm-tdep.c (thumb_stack_frame_destroyed_p): Return zero if
+ PC is far from the end of function.
+
2016-04-14 Pedro Alves <palves@redhat.com>
* cli/cli-cmds.c (alias_usage_error): New function.
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index fb698a4..02e66e5 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -3135,6 +3135,14 @@ thumb_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
if (!find_pc_partial_function (pc, NULL, &func_start, &func_end))
return 0;
+ if (func_end - pc > 4 * 4)
+ {
+ /* There shouldn't be more than four instructions in epilogue.
+ If PC is still 16 bytes away from FUNC_END, it isn't in
+ epilogue. */
+ return 0;
+ }
+
/* The epilogue is a sequence of instructions along the following lines:
- add stack frame size to SP or FP
--
1.9.1
next reply other threads:[~2016-04-15 14:30 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-15 14:30 Yao Qi [this message]
2016-04-15 16:24 ` Pedro Alves
2016-04-18 7:53 ` Yao Qi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1460730578-28723-1-git-send-email-yao.qi@linaro.org \
--to=qiyaoltc@gmail.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox