* gdbarch.sh (PROLOGUE_FRAMELESS_P): Delete.
gdbarch.h, gdbarch.c: Re-generate.
* cris-tdep.c (cris_gdbarch_init): Do not set prologue_frameless_p
to generic_prologue_frameless_p.
* arch-utils.h (generic_prologue_frameless_p): Delete declaration.
* arch-utils.c (generic_prologue_frameless_p): Delete function.
+2004-02-12 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (PROLOGUE_FRAMELESS_P): Delete.
+ gdbarch.h, gdbarch.c: Re-generate.
+ * cris-tdep.c (cris_gdbarch_init): Do not set prologue_frameless_p
+ to generic_prologue_frameless_p.
+ * arch-utils.h (generic_prologue_frameless_p): Delete declaration.
+ * arch-utils.c (generic_prologue_frameless_p): Delete function.
+
2004-02-11 Daniel Jacobowitz <drow@mvista.com>
* mips-linux-tdep.c: Include "frame.h".
*rem_len = gdb_len;
}
-int
-generic_prologue_frameless_p (CORE_ADDR ip)
-{
- return ip == SKIP_PROLOGUE (ip);
-}
-
/* Helper functions for INNER_THAN */
int
/* Typical remote_translate_xfer_address */
extern gdbarch_remote_translate_xfer_address_ftype generic_remote_translate_xfer_address;
-/* Generic implementation of prologue_frameless_p. Just calls
- SKIP_PROLOG and checks the return value to see if it actually
- changed. */
-extern gdbarch_prologue_frameless_p_ftype generic_prologue_frameless_p;
-
/* The only possible cases for inner_than. */
extern int core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs);
extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs);
if (func_start)
{
func_start += FUNCTION_START_OFFSET;
- /* This is faster, since only care whether there *is* a
- prologue, not how long it is. */
- return PROLOGUE_FRAMELESS_P (func_start);
+ /* NOTE: cagney/2004-02-09: Eliminated per-architecture
+ PROLOGUE_FRAMELESS_P call as architectures with custom
+ implementations had all been deleted. Eventually even this
+ function can go - GDB no longer tries to differentiate
+ between framed, frameless and stackless functions. They are
+ all now considered equally evil :-^. */
+ /* If skipping the prologue ends up skips nothing, there must be
+ no prologue and hence no code creating a frame. There for
+ the function is "frameless" :-/. */
+ return func_start == SKIP_PROLOGUE (func_start);
}
else if (get_frame_pc (frame) == 0)
/* A frame with a zero PC is usually created by dereferencing a
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, cris_frame_init_saved_regs);
set_gdbarch_deprecated_init_extra_frame_info (gdbarch, cris_init_extra_frame_info);
set_gdbarch_skip_prologue (gdbarch, cris_skip_prologue);
- set_gdbarch_prologue_frameless_p (gdbarch, generic_prologue_frameless_p);
/* The stack grows downward. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
gdbarch_deprecated_frame_init_saved_regs_ftype *deprecated_frame_init_saved_regs;
gdbarch_deprecated_init_extra_frame_info_ftype *deprecated_init_extra_frame_info;
gdbarch_skip_prologue_ftype *skip_prologue;
- gdbarch_prologue_frameless_p_ftype *prologue_frameless_p;
gdbarch_inner_than_ftype *inner_than;
gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc;
gdbarch_adjust_breakpoint_address_ftype *adjust_breakpoint_address;
0, /* deprecated_frame_init_saved_regs */
0, /* deprecated_init_extra_frame_info */
0, /* skip_prologue */
- 0, /* prologue_frameless_p */
0, /* inner_than */
0, /* breakpoint_from_pc */
0, /* adjust_breakpoint_address */
current_gdbarch->extract_return_value = legacy_extract_return_value;
current_gdbarch->store_return_value = legacy_store_return_value;
current_gdbarch->use_struct_convention = generic_use_struct_convention;
- current_gdbarch->prologue_frameless_p = generic_prologue_frameless_p;
current_gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint;
current_gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint;
current_gdbarch->remote_translate_xfer_address = generic_remote_translate_xfer_address;
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
&& (current_gdbarch->skip_prologue == 0))
fprintf_unfiltered (log, "\n\tskip_prologue");
- /* Skip verify of prologue_frameless_p, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
&& (current_gdbarch->inner_than == 0))
fprintf_unfiltered (log, "\n\tinner_than");
fprintf_unfiltered (file,
"gdbarch_dump: print_vector_info = 0x%08lx\n",
(long) current_gdbarch->print_vector_info);
-#ifdef PROLOGUE_FRAMELESS_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "PROLOGUE_FRAMELESS_P(ip)",
- XSTRING (PROLOGUE_FRAMELESS_P (ip)));
- fprintf_unfiltered (file,
- "gdbarch_dump: PROLOGUE_FRAMELESS_P = <0x%08lx>\n",
- (long) current_gdbarch->prologue_frameless_p
- /*PROLOGUE_FRAMELESS_P ()*/);
-#endif
#ifdef PS_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: PS_REGNUM # %s\n",
gdbarch->skip_prologue = skip_prologue;
}
-int
-gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip)
-{
- gdb_assert (gdbarch != NULL);
- gdb_assert (gdbarch->prologue_frameless_p != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_prologue_frameless_p called\n");
- return gdbarch->prologue_frameless_p (ip);
-}
-
-void
-set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch,
- gdbarch_prologue_frameless_p_ftype prologue_frameless_p)
-{
- gdbarch->prologue_frameless_p = prologue_frameless_p;
-}
-
int
gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs)
{
#define SKIP_PROLOGUE(ip) (gdbarch_skip_prologue (current_gdbarch, ip))
#endif
-typedef int (gdbarch_prologue_frameless_p_ftype) (CORE_ADDR ip);
-extern int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip);
-extern void set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, gdbarch_prologue_frameless_p_ftype *prologue_frameless_p);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PROLOGUE_FRAMELESS_P)
-#error "Non multi-arch definition of PROLOGUE_FRAMELESS_P"
-#endif
-#if !defined (PROLOGUE_FRAMELESS_P)
-#define PROLOGUE_FRAMELESS_P(ip) (gdbarch_prologue_frameless_p (current_gdbarch, ip))
-#endif
-
typedef int (gdbarch_inner_than_ftype) (CORE_ADDR lhs, CORE_ADDR rhs);
extern int gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs);
extern void set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch_inner_than_ftype *inner_than);
F:2:DEPRECATED_INIT_EXTRA_FRAME_INFO:void:deprecated_init_extra_frame_info:int fromleaf, struct frame_info *frame:fromleaf, frame
#
f:2:SKIP_PROLOGUE:CORE_ADDR:skip_prologue:CORE_ADDR ip:ip::0:0
-f:2:PROLOGUE_FRAMELESS_P:int:prologue_frameless_p:CORE_ADDR ip:ip::0:generic_prologue_frameless_p::0
f:2:INNER_THAN:int:inner_than:CORE_ADDR lhs, CORE_ADDR rhs:lhs, rhs::0:0
f::BREAKPOINT_FROM_PC:const unsigned char *:breakpoint_from_pc:CORE_ADDR *pcptr, int *lenptr:pcptr, lenptr:::0:
M:2:ADJUST_BREAKPOINT_ADDRESS:CORE_ADDR:adjust_breakpoint_address:CORE_ADDR bpaddr:bpaddr