From: Ulrich Weigand Date: Sat, 12 Jul 2008 22:42:52 +0000 (+0000) Subject: * spu-tdep.c (spu_frame_unwind_cache): Do not error if X-Git-Tag: sid-snapshot-20080801~181 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cdc9523a4dd8e0eda4d3a801aeee9a2f1c7a24d3;p=external%2Fbinutils.git * spu-tdep.c (spu_frame_unwind_cache): Do not error if backchain is unreadable. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a1b64f8..9ca905b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2008-07-12 Ulrich Weigand + * spu-tdep.c (spu_frame_unwind_cache): Do not error if + backchain is unreadable. + +2008-07-12 Ulrich Weigand + * spu-linux-nat.c: Include "gdbthread.h". (spu_child_post_startup_inferior): Register main thread. (spu_child_post_attach): Likewise. diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index aaa9879..fe04959 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -888,15 +888,17 @@ spu_frame_unwind_cache (struct frame_info *this_frame, /* Otherwise, fall back to reading the backchain link. */ else { - CORE_ADDR reg, backchain; + CORE_ADDR reg; + LONGEST backchain; + int status; /* Get the backchain. */ reg = get_frame_register_unsigned (this_frame, SPU_SP_REGNUM); - backchain = read_memory_unsigned_integer (reg, 4); + status = safe_read_memory_integer (reg, 4, &backchain); /* A zero backchain terminates the frame chain. Also, sanity check against the local store size limit. */ - if (backchain != 0 && backchain < SPU_LS_SIZE) + if (status && backchain > 0 && backchain < SPU_LS_SIZE) { /* Assume the link register is saved into its slot. */ if (backchain + 16 < SPU_LS_SIZE)