OSDN Git Service

Make Sparc/Solaris work again.
authorkevinb <kevinb>
Tue, 18 Feb 2003 22:46:14 +0000 (22:46 +0000)
committerkevinb <kevinb>
Tue, 18 Feb 2003 22:46:14 +0000 (22:46 +0000)
gdb/ChangeLog
gdb/config/sparc/tm-sparc.h
gdb/sparc-tdep.c

index 715d1fc..6c8205e 100644 (file)
@@ -1,3 +1,8 @@
+2003-02-18  Kevin Buettner  <kevinb@redhat.com>
+
+       * sparc-tdep.c (sparc_frame_chain): Adjust return value.
+       * config/sparc/tm-sparc.h (init_frame_pc_noop): Declare.
+
 2003-02-18  Andrew Cagney  <cagney@redhat.com>
 
        * symtab.h (struct objfile): Add opaque declaration.
index 05495ed..a323387 100644 (file)
@@ -511,6 +511,10 @@ extern void sparc_print_extra_frame_info (struct frame_info *);
 
 /* INIT_EXTRA_FRAME_INFO needs the PC to detect flat frames.  */
 
+/* NOTE: cagney/2002-12-08: Add local declaration of
+   init_frame_pc_noop() because it isn't possible to include
+   "arch-utils.h" here.  */
+extern CORE_ADDR init_frame_pc_noop (int fromleaf, struct frame_info *prev);
 #define        DEPRECATED_INIT_FRAME_PC(FROMLEAF, PREV)        (init_frame_pc_noop (FROMLEAF, PREV))
 #define DEPRECATED_INIT_FRAME_PC_FIRST(FROMLEAF, PREV) \
   ((FROMLEAF) ? SAVED_PC_AFTER_CALL ((PREV)->next) : \
index 3fe4dfc..16e68a1 100644 (file)
@@ -431,8 +431,20 @@ sparc_frame_chain (struct frame_info *frame)
 {
   /* Value that will cause FRAME_CHAIN_VALID to not worry about the chain
      value.  If it really is zero, we detect it later in
-     sparc_init_prev_frame.  */
-  return (CORE_ADDR) 1;
+     sparc_init_prev_frame.
+     
+     Note:  kevinb/2003-02-18:  The constant 1 used to be returned
+     here, but, after some recent changes to frame_chain_valid(),
+     this value is no longer suitable for causing frame_chain_valid()
+     to "not worry about the chain value."  The constant ~0 (i.e,
+     0xfff...) causes the failing test in frame_chain_valid() to
+     succeed thus preserving the "not worry" property.  I had considered
+     using something like ``get_frame_base (frame) + 1''.  However, I think
+     a constant value is better, because when debugging this problem,
+     I knew that something funny was going on as soon as I saw the
+     constant 1 being used as the frame chain elsewhere in GDB.  */
+
+  return ~ (CORE_ADDR) 0;
 }
 
 CORE_ADDR