CARP:
authorAndrew Cagney <cagney@redhat.com>
Mon, 30 Nov 1998 10:56:16 +0000 (10:56 +0000)
committerAndrew Cagney <cagney@redhat.com>
Mon, 30 Nov 1998 10:56:16 +0000 (10:56 +0000)
Cleanup FRAME_CHAIN_VALID. Replace all macro's with functions.

26 files changed:
gdb/ChangeLog
gdb/config/a29k/tm-vx29k.h
gdb/config/arc/tm-arc.h
gdb/config/d10v/tm-d10v.h
gdb/config/d30v/tm-d30v.h
gdb/config/h8300/tm-h8300.h
gdb/config/i386/tm-i386nw.h
gdb/config/i386/tm-i386v4.h
gdb/config/i960/tm-mon960.h
gdb/config/i960/tm-nindy960.h
gdb/config/i960/tm-vx960.h
gdb/config/m68k/tm-apollo68b.h
gdb/config/m68k/tm-m68kv4.h
gdb/config/m68k/tm-vx68.h
gdb/config/m88k/tm-delta88v4.h
gdb/config/mips/tm-mipsv4.h
gdb/config/sparc/tm-sparclite.h
gdb/d10v-tdep.c
gdb/d30v-tdep.c
gdb/doc/ChangeLog
gdb/doc/gdbint.texinfo
gdb/gould-tdep.c
gdb/hppa-tdep.c
gdb/i960-tdep.c
gdb/nindy-tdep.c
gdb/remote-vx29k.c

index 155ce629201eb17b5d212c9c0f94c32aaa3c550e..ce626292c2e497ecb5e0a9bc0051ae97911ba3dd 100644 (file)
@@ -1,3 +1,35 @@
+Mon Nov 30 11:18:48 1998  Andrew Cagney  <cagney@chook>
+
+       * frame.h (FRAME_CHAIN_VALID): Default to
+       default_frame_chain_valid.
+       * blockframe.c (default_frame_chain_valid): New function.
+       
+       * frame.h (FRAME_CHAIN_VALID_ALTERNATIVE): Delete references
+       * blockframe.c (alternate_frame_chain_valid): New function.
+       * config/mips/tm-mipsv4.h, config/m88k/tm-delta88v4.h,
+       config/m68k/tm-monitor.h, config/m68k/tm-m68kv4.h,
+       config/i386/tm-i386v4.h, config/i386/tm-i386nw.h,
+       config/h8300/tm-h8300.h: Update.
+
+       * blockframe.c (nonnull_frame_chain_valid): New function.
+       * config/m68k/tm-os68k.h, config/m68k/tm-vx68.h,
+       config/m68k/tm-apollo68b.h, config/i960/tm-vx960.h,
+       config/arc/tm-arc.h: Update FRAME_CHAIN_VALID.
+
+       * hppa-tdep.c (frame_chain_valid, hppa_frame_chain_valid),
+       remote-vx29k.c (get_fp_contents, vx29k_frame_chain_valid),
+       arm-tdep.c (frame_chain_valid, arm_frame_chain_valid): Rename
+       functions so that they are name space clean.
+       * config/pa/tm-hppa.h, config/a29k/tm-vx29k.h,
+       config/arm/tm-arm.h: Update FRAME_CHAIN_VALID.
+       
+       * gould-tdep.c (gould_frame_chain_valid), d30v-tdep.c
+       (d30v_frame_chain_valid), d10v-tdep.c (d10v_frame_chain_valid):
+       New functions.
+       * config/gould/tm-np1.h, config/gould/tm-pn.h,
+       config/d30v/tm-d30v.h, config/d10v/tm-d10v.h: Update
+       FRAME_CHAIN_VALID.
+
 Sun Nov 29 11:18:37 1998  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * z8k-tdep.c (z8k_addr_bits_remove), w65-tdep.c
index d85d9b2f0ce21e1ef5eeb0d90c84f026364311e8..487df82df864b5239ba86a654d12a1a0477f7643 100644 (file)
@@ -209,12 +209,8 @@ extern int get_longjmp_target PARAMS ((CORE_ADDR *));
         val = value_cast (builtin_type_int, val);                       \
   } while (0)
 
-#define SPECIAL_FRAME_CHAIN_FP get_fp_contents
-#undef FRAME_CHAIN_VALID
-#define FRAME_CHAIN_VALID(chain, thisframe) \
-  (SPECIAL_FRAME_CHAIN_FP (chain, thisframe))
-
-extern int SPECIAL_FRAME_CHAIN_FP ();
+extern int vx29k_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+#define FRAME_CHAIN_VALID(chain, thisframe) vx29k_frame_chain_valid (chain, thisframe)
 
 extern CORE_ADDR frame_saved_call_site ();
 
index 043ead6103751272b9659afb1e6ac52865362bee..e964bef1645c87220ccd156703accbcaacd085e9 100644 (file)
@@ -265,7 +265,7 @@ extern void arc_software_single_step PARAMS ((unsigned int, int));
 
 /* FRAME_CHAIN_VALID returns zero if the given frame is the outermost one
    and has no caller.  */
-#define FRAME_CHAIN_VALID(chain, thisframe) ((chain) != 0)
+#define FRAME_CHAIN_VALID(chain, thisframe) nonnull_frame_chain_valid (chain, thisframe)
 
 /* A macro that tells us whether the function invocation represented
    by FI does not have a frame on the stack associated with it.  If it
index 1fc5052bc886f24b240aeaf0e1aeca29b2ad7e76..ef75bc5307f0963d077789043a73e6fe966db92b 100644 (file)
@@ -213,8 +213,8 @@ extern void d10v_init_extra_frame_info PARAMS (( int fromleaf, struct frame_info
   (FRAMELESS) = frameless_look_for_prologue(FI)
 
 #define FRAME_CHAIN(FRAME)       d10v_frame_chain(FRAME)
-#define FRAME_CHAIN_VALID(chain,frame) \
-      ((chain) != 0 && (frame) != 0 && (frame)->pc > IMEM_START)
+extern int d10v_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+#define FRAME_CHAIN_VALID(chain, thisframe) d10v_frame_chain_valid (chain, thisframe)
 #define FRAME_SAVED_PC(FRAME)    ((FRAME)->return_pc)   
 #define FRAME_ARGS_ADDRESS(fi)   (fi)->frame
 #define FRAME_LOCALS_ADDRESS(fi) (fi)->frame
index a9f6059f78a8db316250cea1df2f62a32730a76b..7a69ca36d90c549dad0f2cbf2312f5e1796c121e 100644 (file)
@@ -217,13 +217,8 @@ extern void d30v_init_extra_frame_info PARAMS (( int fromleaf, struct frame_info
   (FRAMELESS) = frameless_look_for_prologue(FI)
 
 #define FRAME_CHAIN(FRAME)       d30v_frame_chain(FRAME)
-#if 0
-#define FRAME_CHAIN_VALID(chain,fi)    \
-      ((chain) != 0 && (fi) != 0 && (fi)->return_pc != 0)
-#else
-#define FRAME_CHAIN_VALID(chain,fi)    \
-      ((chain) != 0 && (fi) != 0 && (fi)->frame <= chain)
-#endif
+extern int d30v_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+#define FRAME_CHAIN_VALID(chain, thisframe) d30v_frame_chain_valid (chain, thisframe)
 #define FRAME_SAVED_PC(FRAME)    ((FRAME)->return_pc)   
 #define FRAME_ARGS_ADDRESS(fi)   (fi)->frame
 #define FRAME_LOCALS_ADDRESS(fi) (fi)->frame
index bcdbb438fe0cbfe72699a6727c3db44299fe2c93..34b95cc1f056460ec5ed0180ae64770b0c1ba0a6 100644 (file)
@@ -201,7 +201,7 @@ CORE_ADDR h8300_frame_chain PARAMS ((struct frame_info *));
    the frame chain or following frames back into the startup code.
    See the comments in objfile.h */
 
-#define FRAME_CHAIN_VALID_ALTERNATE   
+#define FRAME_CHAIN_VALID(fp,fi) alternate_frame_chain_valid (fp, fi)
 
 /* Define other aspects of the stack frame.  */
 
index 43a1e1a1496c0a10c7a09fbcf6cdd2bce7e770e7..e5cdadecb4764025204dda96033e7a3453895df7 100644 (file)
@@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* Stop backtracing when we wander into main.  */
 
-#define FRAME_CHAIN_VALID_ALTERNATE
+#define FRAME_CHAIN_VALID(fp,fi) alternate_frame_chain_valid (fp, fi)
 
 
 /* Offsets (in target ints) into jmp_buf.  Not defined in any system header
index 0a1e56df6f258ddbe3258b1acc7f5a410dac3a35..eafff0178c073edbae5582ba9ccd2d03ed4206dd 100644 (file)
@@ -31,7 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* Use the alternate method of determining valid frame chains. */
 
-#define FRAME_CHAIN_VALID_ALTERNATE
+#define FRAME_CHAIN_VALID(fp,fi) alternate_frame_chain_valid (fp, fi)
 
 /* Offsets (in target ints) into jmp_buf.  Not defined in any system header
    file, so we have to step through setjmp/longjmp with a debugger and figure
index 3e7902ab8f9046dabd3956c27751011bc2bce3ef..e441e052b5a0fcff43778485739205e683967366 100644 (file)
@@ -24,6 +24,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "i960/tm-i960.h"
 
+/* forward declarations */
+#ifdef __STDC__
+struct frame_info;
+#endif
+
 /* redefined from tm-i960.h */
 /* Number of machine registers */
 #undef NUM_REGS 
@@ -51,10 +56,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
    since it differs between Nindy, Mon960 and VxWorks, the currently supported
    target types.  */
 
-#define        FRAME_CHAIN_VALID(chain, thisframe) \
-       mon960_frame_chain_valid (chain, thisframe)
-
-extern int mon960_frame_chain_valid();         /* See i960-tdep.c */
+extern int mon960_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+#define        FRAME_CHAIN_VALID(chain, thisframe) mon960_frame_chain_valid (chain, thisframe)
 
 /* Sequence of bytes for breakpoint instruction */
 
index 094781fb65d8c105a1cbabfec88a28d460d5bb18..d0c46c0a39f247712d5269afceae1ee9f91fa99e 100644 (file)
@@ -24,6 +24,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "i960/tm-i960.h"
 
+/* forward declarations */
+#ifdef __STDC__
+struct frame_info;
+#endif
+
 /* Override the standard gdb prompt when compiled for this target.  */
 
 #define        DEFAULT_PROMPT  "(gdb960) "
@@ -80,8 +85,8 @@ nindy_before_main_loop();             /* In remote-nindy.c */
    since it differs between NINDY and VxWorks, the two currently supported
    targets types.  */
 
-#define        FRAME_CHAIN_VALID(chain, thisframe) \
-       nindy_frame_chain_valid (chain, thisframe)
+extern int nindy_frame_chain_valid PARAMS ((CORE_ADDR, struct frame_info *));
+#define        FRAME_CHAIN_VALID(chain, thisframe) nindy_frame_chain_valid (chain, thisframe)
 
 extern int
 nindy_frame_chain_valid();             /* See nindy-tdep.c */
index 2d56b43f868e7318f9f2b2dfd831b4ca1cc9e0ff..17e28119b29c7d585a43e51758e4c6340859fbd7 100644 (file)
@@ -36,7 +36,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* We are guaranteed to have a zero frame pointer at bottom of stack, too. */
 
-#define FRAME_CHAIN_VALID(chain, thisframe) (chain != 0)
+#define FRAME_CHAIN_VALID(chain, thisframe) nonnull_frame_chain_valid (chain, thisframe)
 
 /* Breakpoint patching is handled at the target end in VxWorks.  */
 /* #define BREAKPOINT {0x00, 0x3e, 0x00, 0x66} */
index 760d4fc9a0a7be1c1b6d770f34651ecda0b7a65b..ee10410d3292d2d89edeac45c1134cd13fa14af7 100644 (file)
@@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "m68k/tm-m68k.h"
 
-#define FRAME_CHAIN_VALID(chain, thisframe) (chain != 0)
+#define FRAME_CHAIN_VALID(chain, thisframe) nonnull_frame_chain_valid (chain, thisframe)
 
 /* These are the jmp_buf registers I could guess. There are 13 registers
  * in the buffer. There are 8 data registers, 6 general address registers,
index 42f7d7fb6e93ed340917dadbfeabb4267d0e3e5c..67306073c80b41a79ac566c40fd43d00ae2cdaec 100644 (file)
@@ -30,7 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* Use the alternate method of determining valid frame chains. */
 
-#define FRAME_CHAIN_VALID_ALTERNATE
+#define FRAME_CHAIN_VALID(fp,fi) alternate_frame_chain_valid (fp, fi)
 
 #include "tm-sysv4.h"
 #include "m68k/tm-m68k.h"
index a194b9452e5b2ae58e94f687a7e7971c7209a62e..e601bda737c459b201133bc218360370573cf40b 100644 (file)
@@ -33,23 +33,22 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "m68k/tm-m68k.h"
 
-/* We are guaranteed to have a zero frame pointer at bottom of stack, too. */
-#undef FRAME_CHAIN
-#undef FRAME_CHAIN_VALID
-
 /* Takes the current frame-struct pointer and returns the chain-pointer
    to get to the calling frame.
 
    If our current frame pointer is zero, we're at the top; else read out
    the saved FP from memory pointed to by the current FP.  */
 
+#undef FRAME_CHAIN
 #define FRAME_CHAIN(thisframe) ((thisframe)->frame? read_memory_integer ((thisframe)->frame, 4): 0)
 
 /* If the chain pointer is zero (either because the saved value fetched
    by FRAME_CHAIN was zero, or because the current FP was zero so FRAME_CHAIN
    never fetched anything), we are at the top of the stack.  */
+/* We are guaranteed to have a zero frame pointer at bottom of stack, too. */
 
-#define FRAME_CHAIN_VALID(chain, thisframe) (chain != 0)
+#undef FRAME_CHAIN_VALID
+#define FRAME_CHAIN_VALID(chain, thisframe) nonnull_frame_chain_valid (chain, thisframe)
 
 /* FIXME, Longjmp information stolen from Sun-3 config.  Dunno if right.  */
 /* Offsets (in target ints) into jmp_buf.  Not defined by Sun, but at least
index 7acdd5f435e437c5bf957b4016c85cae305921f3..112a4a6d65b1eae8c8dbf24084ff31f016d85b1d 100644 (file)
@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "tm-sysv4.h"
 
 /* If we don't define this, backtraces go on forever.  */
-#define FRAME_CHAIN_VALID_ALTERNATE 1
+#define FRAME_CHAIN_VALID(fp,fi) alternate_frame_chain_valid (fp, fi)
 
 #define IN_SIGTRAMP(pc, name) ((name) && (STREQ ("signalhandler", (name)) \
                                           || STREQ("sigacthandler", (name))))
index 1a4a070b2aa71c855c3a4e47bbaa0ab0573fd01a..dd7aaa16d9bdafd303b87ef21b270e2750072a5f 100644 (file)
@@ -39,7 +39,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define SIGFRAME_FPREGSAVE_OFF (SIGFRAME_BASE + 40 + 36 * 4)
 
 /* Use the alternate method of determining valid frame chains. */
-#define FRAME_CHAIN_VALID_ALTERNATE
+#define FRAME_CHAIN_VALID(fp,fi) alternate_frame_chain_valid (fp, fi)
 
 /* Convert a DWARF register number to a gdb REGNUM.  */
 #define DWARF_REG_TO_REGNUM(num) ((num) < 32 ? (num) : (num)+FP0_REGNUM-32)
index 525d15f38479845ef5407888a74532cb4167e409..d841f89c356738286aafb7b3d1630a9dbee5cb24 100644 (file)
@@ -38,7 +38,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #define DECR_PC_AFTER_HW_BREAK 4
 
-#define FRAME_CHAIN_VALID_ALTERNATE
+#define FRAME_CHAIN_VALID(fp,fi) alternate_frame_chain_valid (fp, fi)
 
 #undef NUM_REGS 
 #define NUM_REGS 80 
index d0f2e80d92216e03ca9dcd2082ee6e768ebc7f58..f4b52f62295bb13dd6115dacbffad9fb195c1e21 100644 (file)
@@ -36,6 +36,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 void d10v_frame_find_saved_regs PARAMS ((struct frame_info *fi,
                                         struct frame_saved_regs *fsr));
 
+int
+d10v_frame_chain_valid (chain, frame)
+     CORE_ADDR chain;
+     struct frame_info *frame;      /* not used here */
+{
+  return ((chain) != 0 && (frame) != 0 && (frame)->pc > IMEM_START);
+}
+
+
 /* Should we use EXTRACT_STRUCT_VALUE_ADDRESS instead of
    EXTRACT_RETURN_VALUE?  GCC_P is true if compiled with gcc
    and TYPE is the type (which is known to be struct, union or array).
index 1add1db54ec527cfed4178216a33fdb02464a1d5..2cdb25d2c965a5f63936c44e5d76e00949cc15cf 100644 (file)
@@ -92,6 +92,19 @@ static void print_flags_command PARAMS ((char *, int));
 #define EXTRACT_IMM26(op)      ((((op)&0x0ff00000) >> 2) | ((op)&0x0003ffff))
 #define EXTRACT_IMM32(opl, opr)        ((EXTRACT_UIMM6(opl) << 26)|EXTRACT_IMM26(opr))
 
+
+int
+d30v_frame_chain_valid (chain, fi)
+     CORE_ADDR chain;
+     struct frame_info *fi;      /* not used here */
+{
+#if 0
+  return ((chain) != 0 && (fi) != 0 && (fi)->return_pc != 0);
+#else
+  return ((chain) != 0 && (fi) != 0 && (fi)->frame <= chain);
+#endif
+}
+
 /* Discard from the stack the innermost frame, restoring all saved
    registers.  */
 
index ebc0663075b7b856f3df0291800152a39ac8dfd2..5111e56c4acf3f3cade25f982713e042c4cc555f 100644 (file)
@@ -1,3 +1,7 @@
+Mon Nov 30 11:32:21 1998  Andrew Cagney  <cagney@chook>
+
+       * gdbint.texinfo (FRAME_CHAIN_VALID_ALTERNATE): 
+
 Sat Nov 28 13:45:53 1998  Andrew Cagney  <cagney@b1.cygnus.com>
 
        * gdbint.texinfo (INNER_THAN): Update, now takes parameters.
index 1c5da1bcdc4528547f3e44ce954f691e4b23a7fa..ff099dd58bb85a2f6f5b8c313ee680bc132d98f1 100644 (file)
@@ -1261,19 +1261,16 @@ address and produce the nominal address of the caller's frame.
 Presently only defined for HP PA.
 
 @item FRAME_CHAIN_VALID(chain,thisframe)
+
 Define this to be an expression that returns zero if the given frame is
-an outermost frame, with no caller, and nonzero otherwise.  The default
-definition is nonzero if the chain pointer is nonzero and given frame's
-PC is not inside the startup file (such as @file{crt0.o}).  The
-alternate default definition (which is used if
-FRAME_CHAIN_VALID_ALTERNATE is defined) is nonzero if the chain pointer
-is nonzero and the given frame's PC is not in @code{main()} or a known
+an outermost frame, with no caller, and nonzero otherwise.  Three common
+definitions are available. @code{default_frame_chain_valid} (the
+default) is nonzero if the chain pointer is nonzero and given frame's PC
+is not inside the startup file (such as @file{crt0.o}).
+@code{alternate_frame_chain_valid} is nonzero if the chain pointer is
+nonzero and the given frame's PC is not in @code{main()} or a known
 entry point function (such as @code{_start()}).
 
-@item FRAME_CHAIN_VALID_ALTERNATE
-Define this in order to use the alternate default definition of
-@code{FRAME_CHAIN_VALID}.
-
 @item FRAME_FIND_SAVED_REGS
 stack.c
 
index 736ab4790a507afc5392a6d08cb1c6bc9393944d..8cd2ee51e8583e3638b0724b73eb1d671b5ed3f3 100644 (file)
@@ -33,6 +33,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 /* Number of elements in the opcode table.  */
 #define NOPCODES (sizeof gld_opcodes / sizeof gld_opcodes[0])
 
+int
+gould_frame_chain_valid (chain, fi)
+     CORE_ADDR chain;
+     struct frame_info *fi;      /* not used here */
+{
+  return (chain != 0 && chain != (thisframe)->frame);
+}
+
 /* Both gcc and cc return small structs in registers (i.e. in GDB
    terminology, small structs don't use the struct return convention).  */
 int
index 2b11f91818d5d8e4a156f07f7278be7d46df707a..03215cedc34a1fe651034b4728a6da1bba23b5a1 100644 (file)
@@ -1185,7 +1185,7 @@ frame_chain (frame)
    was compiled with gcc. */
 
 int
-frame_chain_valid (chain, thisframe)
+hppa_frame_chain_valid (chain, thisframe)
      CORE_ADDR chain;
      struct frame_info *thisframe;
 {
index c2625c0b6afbcf5ffe15d8782e7512b3f798a721..f87d6bbfe474ef3fda27f30e90df6cfd888d785c 100644 (file)
@@ -791,7 +791,7 @@ next_insn (memaddr, pword1, pword2)
 
 int
 mon960_frame_chain_valid (chain, curframe)
-    unsigned int chain;
+    CORE_ADDR chain;
     struct frame_info *curframe;
 {
        struct symbol *sym;
index 3fccd4f867f1494c2c33d35e48a5e7fe07539486..2e0b10c6a94f6e3eb440d893f5ac93ed7cef7275 100644 (file)
@@ -34,7 +34,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 int
 nindy_frame_chain_valid (chain, curframe)
-    unsigned int chain;
+    CORE_ADDR chain;
     struct frame_info *curframe;
 {
        struct symbol *sym;
index 02554aaa31c4f9f8a8f6d79b7f2a1bda5d3b40e2..e6fc2c79495ddc73e286ba219bb428ce94f3647f 100644 (file)
@@ -176,7 +176,7 @@ vx_write_register (regno)
           contents when FRAME_CHAIN_VALID is invoked. */
 
 int
-get_fp_contents (chain, thisframe)
+vx29k_frame_chain_valid (chain, thisframe)
      CORE_ADDR chain;
      struct frame_info *thisframe;      /* not used here */
 {