* linux-thread-db.c (thread_db_mourn_inferior): Remove breakpoints
[deliverable/binutils-gdb.git] / gdb / trad-frame.c
index b9ee2e15e8ec81d19dabf4e4ca61c53fcf67a155..1e2707f8a781d1c6b879b2595e72a20bcc44da8e 100644 (file)
@@ -1,6 +1,6 @@
 /* Traditional frame unwind support, for GDB the GNU Debugger.
 
-   Copyright 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 #include "defs.h"
 #include "frame.h"
@@ -97,6 +97,15 @@ trad_frame_set_value (struct trad_frame_saved_reg this_saved_regs[],
   this_saved_regs[regnum].addr = val;
 }
 
+void
+trad_frame_set_reg_value (struct trad_frame_cache *this_trad_cache,
+                         int regnum, LONGEST val)
+{
+  /* External interface for users of trad_frame_cache
+     (who cannot access the prev_regs object directly).  */
+  trad_frame_set_value (this_trad_cache->prev_regs, regnum, val);
+}
+
 void
 trad_frame_set_reg_realreg (struct trad_frame_cache *this_trad_cache,
                            int regnum, int realreg)
@@ -126,7 +135,7 @@ trad_frame_get_prev_register (struct frame_info *next_frame,
                              struct trad_frame_saved_reg this_saved_regs[],
                              int regnum, int *optimizedp,
                              enum lval_type *lvalp, CORE_ADDR *addrp,
-                             int *realregp, void *bufferp)
+                             int *realregp, gdb_byte *bufferp)
 {
   struct gdbarch *gdbarch = get_frame_arch (next_frame);
   if (trad_frame_addr_p (this_saved_regs, regnum))
@@ -145,9 +154,13 @@ trad_frame_get_prev_register (struct frame_info *next_frame,
     }
   else if (trad_frame_realreg_p (this_saved_regs, regnum))
     {
+      *optimizedp = 0;
+      *lvalp = lval_register;
+      *addrp = 0;
+      *realregp = this_saved_regs[regnum].realreg;
       /* Ask the next frame to return the value of the register.  */
-      frame_register_unwind (next_frame, this_saved_regs[regnum].realreg,
-                            optimizedp, lvalp, addrp, realregp, bufferp);
+      if (bufferp)
+       frame_unwind_register (next_frame, (*realregp), bufferp);
     }
   else if (trad_frame_value_p (this_saved_regs, regnum))
     {
@@ -162,7 +175,7 @@ trad_frame_get_prev_register (struct frame_info *next_frame,
     }
   else
     {
-      error ("Register %s not available",
+      error (_("Register %s not available"),
             gdbarch_register_name (gdbarch, regnum));
     }
 }
@@ -172,7 +185,7 @@ trad_frame_get_register (struct trad_frame_cache *this_trad_cache,
                         struct frame_info *next_frame,
                         int regnum, int *optimizedp,
                         enum lval_type *lvalp, CORE_ADDR *addrp,
-                        int *realregp, void *bufferp)
+                        int *realregp, gdb_byte *bufferp)
 {
   trad_frame_get_prev_register (next_frame, this_trad_cache->prev_regs,
                                regnum, optimizedp, lvalp, addrp, realregp,
This page took 0.024782 seconds and 4 git commands to generate.