This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] gdb: xtensa: fix frame initialization when PC is invalid
- From: Max Filippov <jcmvbkbc at gmail dot com>
- To: gdb-patches at sourceware dot org
- Cc: Maxim Grigoriev <maxim2405 at gmail dot com>, Woody LaRue <larue at cadence dot com>, Marc Gauthier <marc at cadence dot com>, Max Filippov <jcmvbkbc at gmail dot com>
- Date: Mon, 28 Mar 2016 02:32:36 +0300
- Subject: [PATCH] gdb: xtensa: fix frame initialization when PC is invalid
- Authentication-results: sourceware.org; auth=none
When gdb is used on core dump and PC is not pointing to a readable
memory read_memory_integer call in the xtensa_frame_cache throws an
error, making register inspection/backtracing impossible in that thread.
Put read_memory_integer into TRY/CATCH block and in case an error is
caught initialize result to something different than ENTRY opcode.
2016-03-27 Max Filippov <jcmvbkbc@gmail.com>
gdb/
* xtensa-tdep.c (xtensa_frame_cache): Put read_memory_integer
into TRY/CATCH block.
---
gdb/xtensa-tdep.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c
index 9e87fa5..f37476e 100644
--- a/gdb/xtensa-tdep.c
+++ b/gdb/xtensa-tdep.c
@@ -1293,7 +1293,12 @@ xtensa_frame_cache (struct frame_info *this_frame, void **this_cache)
ws = get_frame_register_unsigned (this_frame,
gdbarch_tdep (gdbarch)->ws_regnum);
- op1 = read_memory_integer (pc, 1, byte_order);
+ TRY
+ op1 = read_memory_integer (pc, 1, byte_order);
+ CATCH (e, RETURN_MASK_ERROR)
+ op1 = 0;
+ END_CATCH
+
if (XTENSA_IS_ENTRY (gdbarch, op1))
{
int callinc = CALLINC (ps);
--
2.1.4