* alpha-mdebug-tdep.c (alpha_mdebug_frame_p): Reject prologues.

(alpha_mdebug_frame_unwind_cache): Don't call the heuristic unwinder.
        (alpha_mdebug_frame_this_id): Likewise.
        (alpha_mdebug_frame_prev_register): Likewise.
        (alpha_mdebug_frame_base_address): Likewise.
        (alpha_mdebug_frame_locals_address): Likewise.
        (alpha_mdebug_frame_args_address): Likewise.
        (struct alpha_mdebug_unwind_cache): Remove in_prologue_cache.
        * alpha-tdep.c (alpha_heuristic_proc_start): Use get_pc_function_start.
        (alpha_heuristic_frame_unwind_cache): Make static; add missing
        loop increment.
        (alpha_heuristic_frame_this_id): Make static.
        (alpha_heuristic_frame_prev_register): Likewise.
        (alpha_heuristic_frame_base_address): Likewise.
        * alpha-tdep.h: Update.
This commit is contained in:
Richard Henderson 2003-05-31 00:27:46 +00:00
parent 86f1d0fbb5
commit fbe586aede
4 changed files with 85 additions and 110 deletions

View File

@ -1,3 +1,21 @@
2003-05-30 Richard Henderson <rth@redhat.com>
* alpha-mdebug-tdep.c (alpha_mdebug_frame_p): Reject prologues.
(alpha_mdebug_frame_unwind_cache): Don't call the heuristic unwinder.
(alpha_mdebug_frame_this_id): Likewise.
(alpha_mdebug_frame_prev_register): Likewise.
(alpha_mdebug_frame_base_address): Likewise.
(alpha_mdebug_frame_locals_address): Likewise.
(alpha_mdebug_frame_args_address): Likewise.
(struct alpha_mdebug_unwind_cache): Remove in_prologue_cache.
* alpha-tdep.c (alpha_heuristic_proc_start): Use get_pc_function_start.
(alpha_heuristic_frame_unwind_cache): Make static; add missing
loop increment.
(alpha_heuristic_frame_this_id): Make static.
(alpha_heuristic_frame_prev_register): Likewise.
(alpha_heuristic_frame_base_address): Likewise.
* alpha-tdep.h: Update.
2003-05-30 Mark Kettenis <kettenis@gnu.org> 2003-05-30 Mark Kettenis <kettenis@gnu.org>
* i386-tdep.h (i386bsd_sigcontext_addr): Remove prototype. * i386-tdep.h (i386bsd_sigcontext_addr): Remove prototype.
@ -674,10 +692,10 @@
2003-05-15 David Carlton <carlton@bactrian.org> 2003-05-15 David Carlton <carlton@bactrian.org>
Committed by Elena Zannoni <ezannoni@redhat.com> Committed by Elena Zannoni <ezannoni@redhat.com>
* symtab.c (lookup_symbol_aux): Delete calls to * symtab.c (lookup_symbol_aux): Delete calls to
lookup_symbol_aux_minsyms. lookup_symbol_aux_minsyms.
(lookup_symbol_aux_minsyms): Comment out function and (lookup_symbol_aux_minsyms): Comment out function and
prototype. Delete lookup by mangled name. prototype. Delete lookup by mangled name.
2003-05-14 Kevin Buettner <kevinb@redhat.com> 2003-05-14 Kevin Buettner <kevinb@redhat.com>
@ -1543,7 +1561,7 @@
2003-04-18 Jim Blandy <jimb@redhat.com> 2003-04-18 Jim Blandy <jimb@redhat.com>
* s390-tdep.c (s390_frame_align): New function. * s390-tdep.c (s390_frame_align): New function.
(s390_gdbarch_init): Register it with the gdbarch object. (s390_gdbarch_init): Register it with the gdbarch object.
2003-04-17 Richard Henderson <rth@redhat.com> 2003-04-17 Richard Henderson <rth@redhat.com>
@ -1558,7 +1576,7 @@
2003-04-17 Elena Zannoni <ezannoni@redhat.com> 2003-04-17 Elena Zannoni <ezannoni@redhat.com>
* values.c (value_being_returned): Don't fetch the return * values.c (value_being_returned): Don't fetch the return
value if the return type is void. value if the return type is void.
2003-04-17 Jeff Johnston <jjohnstn@redhat.com> 2003-04-17 Jeff Johnston <jjohnstn@redhat.com>
@ -2083,7 +2101,7 @@
2003-04-08 Elena Zannoni <ezannoni@redhat.com> 2003-04-08 Elena Zannoni <ezannoni@redhat.com>
* infrun.c (stop_soon): Rename from stop_soon_quietly. * infrun.c (stop_soon): Rename from stop_soon_quietly.
(struct inferior_status): Rename stop_soon_quietly field to stop_soon. (struct inferior_status): Rename stop_soon_quietly field to stop_soon.
(clear_proceed_status): Rename stop_soon_quietly to stop_soon. (clear_proceed_status): Rename stop_soon_quietly to stop_soon.
(start_remote): Ditto. (start_remote): Ditto.
@ -2092,7 +2110,7 @@
(restore_inferior_status): Ditto. (restore_inferior_status): Ditto.
* infcmd.c (attach_command): Ditto. * infcmd.c (attach_command): Ditto.
* fork-child.c (startup_inferior): Ditto. * fork-child.c (startup_inferior): Ditto.
* inferior.h (stop_soon): Rename from stop_soon_quietly. * inferior.h (stop_soon): Rename from stop_soon_quietly.
* alpha-tdep.c (heuristic_proc_start): Ditto. * alpha-tdep.c (heuristic_proc_start): Ditto.
* mips-tdep.c (heuristic_proc_start): Ditto. * mips-tdep.c (heuristic_proc_start): Ditto.
* solib-svr4.c (svr4_solib_create_inferior_hook): Ditto. * solib-svr4.c (svr4_solib_create_inferior_hook): Ditto.
@ -2126,11 +2144,11 @@
2003-04-07 Elena Zannoni <ezannoni@redhat.com> 2003-04-07 Elena Zannoni <ezannoni@redhat.com>
* disasm.c (dump_insns): Move variables inside loop, or they will * disasm.c (dump_insns): Move variables inside loop, or they will
be freed more than once, causing wild memory corruptions. be freed more than once, causing wild memory corruptions.
(gdb_disassembly): Look for the substring "-thread", (gdb_disassembly): Look for the substring "-thread",
instead of "-threads" in the target name, to make sure to find instead of "-threads" in the target name, to make sure to find
the 'multi-thread' target. Also, make sure we do the right thing the 'multi-thread' target. Also, make sure we do the right thing
with the "core" target. with the "core" target.
2003-04-07 Kevin Buettner <kevinb@redhat.com> 2003-04-07 Kevin Buettner <kevinb@redhat.com>
@ -2291,9 +2309,9 @@
2003-04-04 Elena Zannoni <ezannoni@redhat.com> 2003-04-04 Elena Zannoni <ezannoni@redhat.com>
* x86-64-tdep.c (x86_64_push_arguments): Handle correctly the * x86-64-tdep.c (x86_64_push_arguments): Handle correctly the
signed integer case. signed integer case.
(classify_argument): Handle enumerations and references. (classify_argument): Handle enumerations and references.
2003-04-04 Andrew Cagney <cagney@redhat.com> 2003-04-04 Andrew Cagney <cagney@redhat.com>
@ -2331,15 +2349,15 @@
* language.c (language_demangle): New function. * language.c (language_demangle): New function.
(unk_lang_demangle): Likewise. (unk_lang_demangle): Likewise.
(unknown_language_defn, auto_language_defn, local_language_defn): (unknown_language_defn, auto_language_defn, local_language_defn):
Add ukn_lang_demangle. Add ukn_lang_demangle.
* ada-lang.c (ada_language_defn): Add NULL for la_demangle element. * ada-lang.c (ada_language_defn): Add NULL for la_demangle element.
* f-lang.c, m2-lang.c, p-lang.c, scm-lang.c: Likewise. * f-lang.c, m2-lang.c, p-lang.c, scm-lang.c: Likewise.
* c-lang.c (c_language_defn, asm_language_defn): Likewise. * c-lang.c (c_language_defn, asm_language_defn): Likewise.
(cplus_language_defn): Add cplus_demangle for la_demangle element. (cplus_language_defn): Add cplus_demangle for la_demangle element.
* jv-lang.c (java_demangle): New function * jv-lang.c (java_demangle): New function
(java_language_defn): Use it for la_demangle element. (java_language_defn): Use it for la_demangle element.
* objc-lang.c (objc_demangle): Add options argument * objc-lang.c (objc_demangle): Add options argument
(objc_language_defn): Use objc_demangle for la_demangle element. (objc_language_defn): Use objc_demangle for la_demangle element.
* maint.c (maintenance_demangle): Replace switch with * maint.c (maintenance_demangle): Replace switch with
call to language_demangle. call to language_demangle.
* utils.c (fprintf_symbol_filtered): Likewise. * utils.c (fprintf_symbol_filtered): Likewise.
@ -2573,7 +2591,7 @@
2003-03-30 Andrew Cagney <cagney@redhat.com> 2003-03-30 Andrew Cagney <cagney@redhat.com>
2002-11-10 Klee Dienes <kdienes@apple.com> 2002-11-10 Klee Dienes <kdienes@apple.com>
* value.h (struct value): Update comment. * value.h (struct value): Update comment.
2003-03-30 Andrew Cagney <cagney@redhat.com> 2003-03-30 Andrew Cagney <cagney@redhat.com>
@ -2732,7 +2750,7 @@
2003-03-28 Bob Rossi <bob_rossi@cox.net> 2003-03-28 Bob Rossi <bob_rossi@cox.net>
* MAINTAINERS (write after approval): Add myself. * MAINTAINERS (write after approval): Add myself.
2003-03-27 Theodore A. Roth <troth@openavr.org> 2003-03-27 Theodore A. Roth <troth@openavr.org>
@ -3361,12 +3379,12 @@
2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com> 2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com>
* MAINTAINERS (write after approval): Alphabetically * MAINTAINERS (write after approval): Alphabetically
listing corrected. listing corrected.
2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com> 2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com>
* MAINTAINERS (write after approval): Add myself. * MAINTAINERS (write after approval): Add myself.
2003-03-12 Andrew Cagney <cagney@redhat.com> 2003-03-12 Andrew Cagney <cagney@redhat.com>
@ -4288,7 +4306,7 @@
2003-02-20 Adam Fedor <fedor@gnu.org> 2003-02-20 Adam Fedor <fedor@gnu.org>
* objc-lang.h (find_methods): Remove declaration. * objc-lang.h (find_methods): Remove declaration.
* objc-lang.c (find_methods): Make static. * objc-lang.c (find_methods): Make static.
2003-02-20 Christopher Faylor <cgf@redhat.com> 2003-02-20 Christopher Faylor <cgf@redhat.com>
@ -4484,10 +4502,10 @@
2003-02-18 Elena Zannoni <ezannoni@redhat.com> 2003-02-18 Elena Zannoni <ezannoni@redhat.com>
From Jim Ingham <jingham@apple.com>: From Jim Ingham <jingham@apple.com>:
* dbxread.c (process_one_symbol): Use last_function_start rather * dbxread.c (process_one_symbol): Use last_function_start rather
than function_start_offset to find the real beginning of the than function_start_offset to find the real beginning of the
current function. The latter is just the text section offset on current function. The latter is just the text section offset on
some systems, the former is always the real function start. some systems, the former is always the real function start.
2003-02-17 Andrew Cagney <cagney@redhat.com> 2003-02-17 Andrew Cagney <cagney@redhat.com>
@ -4502,7 +4520,7 @@
2003-02-14 Elena Zannoni <ezannoni@redhat.com> 2003-02-14 Elena Zannoni <ezannoni@redhat.com>
From Brian Ford <ford@vss.fsi.com> From Brian Ford <ford@vss.fsi.com>
* cli/cli-decode.c (lookup_cmd_composition) [TUI]: Properly * cli/cli-decode.c (lookup_cmd_composition) [TUI]: Properly
conditionalize tui_active test. conditionalize tui_active test.
@ -4540,8 +4558,8 @@
2003-02-12 Jason Molenda (jmolenda@apple.com) 2003-02-12 Jason Molenda (jmolenda@apple.com)
* symmisc.c (print_objfile_statistics): Include information about * symmisc.c (print_objfile_statistics): Include information about
the number of psymtabs and symtabs in each object file. the number of psymtabs and symtabs in each object file.
2003-02-13 Keith R Seitz <keiths@redhat.com> 2003-02-13 Keith R Seitz <keiths@redhat.com>
@ -4665,9 +4683,9 @@
(threads_continue_all_with_signals): Ditto. (threads_continue_all_with_signals): Ditto.
2003-02-05 Jim Ingham <jingham@apple.com> 2003-02-05 Jim Ingham <jingham@apple.com>
Keith Seitz <keiths@redhat.com> Keith Seitz <keiths@redhat.com>
Elena Zannoni <ezannoni@redhat.com> Elena Zannoni <ezannoni@redhat.com>
Andrew Cagney <ac131313@redhat.com> Andrew Cagney <ac131313@redhat.com>
* Makefile.in (SUBDIR_CLI_OBS): Add "cli-interp.o". * Makefile.in (SUBDIR_CLI_OBS): Add "cli-interp.o".
(SUBDIR_CLI_SRCS): Add "cli/cli-interp.c". (SUBDIR_CLI_SRCS): Add "cli/cli-interp.c".
@ -4926,11 +4944,11 @@
From Kevin Buettner <kevinb@redhat.com>: From Kevin Buettner <kevinb@redhat.com>:
* ui-out.h (make_cleanup_ui_out_table_begin_end): New function. * ui-out.h (make_cleanup_ui_out_table_begin_end): New function.
* ui-out.c (make_cleanup_ui_out_table_begin_end) * ui-out.c (make_cleanup_ui_out_table_begin_end)
(do_cleanup_table_end): New functions. (do_cleanup_table_end): New functions.
* breakpoint.c (print_it_typical, print_one_breakpoint, mention): * breakpoint.c (print_it_typical, print_one_breakpoint, mention):
Use cleanups to invoke_ui_out_tuple_end(). Use cleanups to invoke_ui_out_tuple_end().
(breakpoint_1): Use cleanup to invoke ui_out_table_end(). (breakpoint_1): Use cleanup to invoke ui_out_table_end().
* cli/cli-setshow.c (cmd_show_list): Use * cli/cli-setshow.c (cmd_show_list): Use
make_cleanup_ui_out_tuple_begin_end. make_cleanup_ui_out_tuple_begin_end.
@ -4967,8 +4985,8 @@
2003-02-01 Andrew Cagney <ac131313@redhat.com> 2003-02-01 Andrew Cagney <ac131313@redhat.com>
From 2002-11-09 Jason Molenda (jason-cl@molenda.com) From 2002-11-09 Jason Molenda (jason-cl@molenda.com)
* stack.c (print_frame_info_base): Output complete FRAME tuple * stack.c (print_frame_info_base): Output complete FRAME tuple
for synthesized frames. for synthesized frames.
2003-02-02 Andrew Cagney <ac131313@redhat.com> 2003-02-02 Andrew Cagney <ac131313@redhat.com>

View File

@ -174,7 +174,6 @@ struct alpha_mdebug_unwind_cache
alpha_extra_func_info_t proc_desc; alpha_extra_func_info_t proc_desc;
CORE_ADDR vfp; CORE_ADDR vfp;
CORE_ADDR *saved_regs; CORE_ADDR *saved_regs;
void *in_prologue_cache;
}; };
/* Extract all of the information about the frame from PROC_DESC /* Extract all of the information about the frame from PROC_DESC
@ -205,21 +204,6 @@ alpha_mdebug_frame_unwind_cache (struct frame_info *next_frame,
info->proc_desc = proc_desc; info->proc_desc = proc_desc;
gdb_assert (proc_desc != NULL); gdb_assert (proc_desc != NULL);
/* If we're in the prologue, the PDR for this frame is not yet valid. */
/* ??? We could have said "no" in alpha_mdebug_frame_p, and we'd
walk down the list of unwinders and try the heuristic unwinder
and things would have been fine. However, since we have the PDR,
we know how to skip the search for the start of the procedure,
and all the uncertainty involved there. So instead, arrange for
us to defer to the heuristic unwinder directly. */
if (alpha_mdebug_in_prologue (pc, proc_desc))
{
alpha_heuristic_frame_unwind_cache (next_frame,
&info->in_prologue_cache,
PROC_LOW_ADDR (proc_desc));
return info;
}
info->saved_regs = frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS); info->saved_regs = frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS);
/* The VFP of the frame is at FRAME_REG+FRAME_OFFSET. */ /* The VFP of the frame is at FRAME_REG+FRAME_OFFSET. */
@ -275,12 +259,7 @@ alpha_mdebug_frame_this_id (struct frame_info *next_frame,
struct alpha_mdebug_unwind_cache *info struct alpha_mdebug_unwind_cache *info
= alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache); = alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache);
/* If we're in the prologue, defer to the heuristic unwinder. */ *this_id = frame_id_build (info->vfp, frame_func_unwind (next_frame));
if (info->in_prologue_cache)
alpha_heuristic_frame_this_id (next_frame, &info->in_prologue_cache,
this_id);
else
*this_id = frame_id_build (info->vfp, frame_func_unwind (next_frame));
} }
/* Retrieve the value of REGNUM in FRAME. Don't give up! */ /* Retrieve the value of REGNUM in FRAME. Don't give up! */
@ -295,16 +274,6 @@ alpha_mdebug_frame_prev_register (struct frame_info *next_frame,
struct alpha_mdebug_unwind_cache *info struct alpha_mdebug_unwind_cache *info
= alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache); = alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache);
/* If we're in the prologue, defer to the heuristic unwinder. */
if (info->in_prologue_cache)
{
alpha_heuristic_frame_prev_register (next_frame,
&info->in_prologue_cache,
regnum, optimizedp, lvalp,
addrp, realnump, bufferp);
return;
}
/* The PC of the previous frame is stored in the link register of /* The PC of the previous frame is stored in the link register of
the current frame. Frob regnum so that we pull the value from the current frame. Frob regnum so that we pull the value from
the correct place. */ the correct place. */
@ -359,6 +328,11 @@ alpha_mdebug_frame_p (CORE_ADDR pc)
if (proc_desc == NULL) if (proc_desc == NULL)
return NULL; return NULL;
/* If we're in the prologue, the PDR for this frame is not yet valid.
Say no here and we'll fall back on the heuristic unwinder. */
if (alpha_mdebug_in_prologue (pc, proc_desc))
return NULL;
return &alpha_mdebug_frame_unwind; return &alpha_mdebug_frame_unwind;
} }
@ -369,11 +343,7 @@ alpha_mdebug_frame_base_address (struct frame_info *next_frame,
struct alpha_mdebug_unwind_cache *info struct alpha_mdebug_unwind_cache *info
= alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache); = alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache);
if (info->in_prologue_cache) return info->vfp;
return alpha_heuristic_frame_base_address (next_frame,
&info->in_prologue_cache);
else
return info->vfp;
} }
static CORE_ADDR static CORE_ADDR
@ -382,15 +352,8 @@ alpha_mdebug_frame_locals_address (struct frame_info *next_frame,
{ {
struct alpha_mdebug_unwind_cache *info struct alpha_mdebug_unwind_cache *info
= alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache); = alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache);
CORE_ADDR vfp;
if (info->in_prologue_cache) return info->vfp - PROC_LOCALOFF (info->proc_desc);
vfp = alpha_heuristic_frame_base_address (next_frame,
&info->in_prologue_cache);
else
vfp = info->vfp;
return vfp - PROC_LOCALOFF (info->proc_desc);
} }
static CORE_ADDR static CORE_ADDR
@ -399,15 +362,8 @@ alpha_mdebug_frame_args_address (struct frame_info *next_frame,
{ {
struct alpha_mdebug_unwind_cache *info struct alpha_mdebug_unwind_cache *info
= alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache); = alpha_mdebug_frame_unwind_cache (next_frame, this_prologue_cache);
CORE_ADDR vfp;
if (info->in_prologue_cache) return info->vfp - ALPHA_NUM_ARG_REGS * 8;
vfp = alpha_heuristic_frame_base_address (next_frame,
&info->in_prologue_cache);
else
vfp = info->vfp;
return vfp - ALPHA_NUM_ARG_REGS * 8;
} }
static const struct frame_base alpha_mdebug_frame_base = { static const struct frame_base alpha_mdebug_frame_base = {

View File

@ -666,10 +666,18 @@ alpha_heuristic_proc_start (CORE_ADDR pc)
CORE_ADDR last_non_nop = pc; CORE_ADDR last_non_nop = pc;
CORE_ADDR fence = pc - heuristic_fence_post; CORE_ADDR fence = pc - heuristic_fence_post;
CORE_ADDR orig_pc = pc; CORE_ADDR orig_pc = pc;
CORE_ADDR func;
if (pc == 0) if (pc == 0)
return 0; return 0;
/* First see if we can find the start of the function from minimal
symbol information. This can succeed with a binary that doesn't
have debug info, but hasn't been stripped. */
func = get_pc_function_start (pc);
if (func)
return func;
if (heuristic_fence_post == UINT_MAX if (heuristic_fence_post == UINT_MAX
|| fence < tdep->vm_min_address) || fence < tdep->vm_min_address)
fence = tdep->vm_min_address; fence = tdep->vm_min_address;
@ -725,7 +733,7 @@ Otherwise, you told GDB there was a function where there isn't one, or\n\
return 0; return 0;
} }
struct alpha_heuristic_unwind_cache * static struct alpha_heuristic_unwind_cache *
alpha_heuristic_frame_unwind_cache (struct frame_info *next_frame, alpha_heuristic_frame_unwind_cache (struct frame_info *next_frame,
void **this_prologue_cache, void **this_prologue_cache,
CORE_ADDR start_pc) CORE_ADDR start_pc)
@ -882,7 +890,7 @@ alpha_heuristic_frame_unwind_cache (struct frame_info *next_frame,
/* Given a GDB frame, determine the address of the calling function's /* Given a GDB frame, determine the address of the calling function's
frame. This will be used to create a new GDB frame struct. */ frame. This will be used to create a new GDB frame struct. */
void static void
alpha_heuristic_frame_this_id (struct frame_info *next_frame, alpha_heuristic_frame_this_id (struct frame_info *next_frame,
void **this_prologue_cache, void **this_prologue_cache,
struct frame_id *this_id) struct frame_id *this_id)
@ -890,12 +898,17 @@ alpha_heuristic_frame_this_id (struct frame_info *next_frame,
struct alpha_heuristic_unwind_cache *info struct alpha_heuristic_unwind_cache *info
= alpha_heuristic_frame_unwind_cache (next_frame, this_prologue_cache, 0); = alpha_heuristic_frame_unwind_cache (next_frame, this_prologue_cache, 0);
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
if (inside_entry_file (info->start_pc))
return;
*this_id = frame_id_build (info->vfp, info->start_pc); *this_id = frame_id_build (info->vfp, info->start_pc);
} }
/* Retrieve the value of REGNUM in FRAME. Don't give up! */ /* Retrieve the value of REGNUM in FRAME. Don't give up! */
void static void
alpha_heuristic_frame_prev_register (struct frame_info *next_frame, alpha_heuristic_frame_prev_register (struct frame_info *next_frame,
void **this_prologue_cache, void **this_prologue_cache,
int regnum, int *optimizedp, int regnum, int *optimizedp,
@ -954,7 +967,7 @@ alpha_heuristic_frame_p (CORE_ADDR pc)
return &alpha_heuristic_frame_unwind; return &alpha_heuristic_frame_unwind;
} }
CORE_ADDR static CORE_ADDR
alpha_heuristic_frame_base_address (struct frame_info *next_frame, alpha_heuristic_frame_base_address (struct frame_info *next_frame,
void **this_prologue_cache) void **this_prologue_cache)
{ {

View File

@ -99,19 +99,7 @@ struct gdbarch_tdep
extern unsigned int alpha_read_insn (CORE_ADDR pc); extern unsigned int alpha_read_insn (CORE_ADDR pc);
extern void alpha_software_single_step (enum target_signal, int); extern void alpha_software_single_step (enum target_signal, int);
/* Let other files poke at the heuristic unwinder. */
extern CORE_ADDR alpha_after_prologue (CORE_ADDR pc); extern CORE_ADDR alpha_after_prologue (CORE_ADDR pc);
extern struct alpha_heuristic_unwind_cache *
alpha_heuristic_frame_unwind_cache (struct frame_info *, void **, CORE_ADDR);
extern void alpha_heuristic_frame_this_id (struct frame_info *, void **,
struct frame_id *);
extern void alpha_heuristic_frame_prev_register (struct frame_info *,
void **, int, int *,
enum lval_type *,
CORE_ADDR *, int *, void *);
extern CORE_ADDR alpha_heuristic_frame_base_address (struct frame_info *,
void **);
extern void alpha_mdebug_init_abi (struct gdbarch_info, struct gdbarch *); extern void alpha_mdebug_init_abi (struct gdbarch_info, struct gdbarch *);