diff options
author | nobody <> | 2003-02-02 23:00:07 +0000 |
---|---|---|
committer | nobody <> | 2003-02-02 23:00:07 +0000 |
commit | cddd45abf62af6ed70c8c67601a9f09da0a939b0 (patch) | |
tree | c8d60358c712fe334d27b9e65723fcea6351e33f /gdb/frame.h | |
parent | 812e900cfcaad5c1a17d6728e204cbf34d4eb557 (diff) | |
download | fsf-binutils-gdb-cddd45abf62af6ed70c8c67601a9f09da0a939b0.zip fsf-binutils-gdb-cddd45abf62af6ed70c8c67601a9f09da0a939b0.tar.gz fsf-binutils-gdb-cddd45abf62af6ed70c8c67601a9f09da0a939b0.tar.bz2 |
This commit was manufactured by cvs2svn to create branchinterps-20030202-branchpoint
'interps-20030202-branch'.
Sprout from cagney-unwind-20030108-branch 2003-01-09 20:50:26 UTC nobody 'This commit was manufactured by cvs2svn to create branch 'cagney-'
Cherrypick from master 2003-02-02 23:00:06 UTC Alan Modra <amodra@gmail.com> 'daily update':
ChangeLog
Makefile.in
Makefile.tpl
bfd/ChangeLog
bfd/Makefile.am
bfd/Makefile.in
bfd/aclocal.m4
bfd/archures.c
bfd/bfd-in2.h
bfd/bfd.c
bfd/coffcode.h
bfd/config.bfd
bfd/cpu-sh.c
bfd/elf-bfd.h
bfd/elf.c
bfd/elf32-i386.c
bfd/elf32-mips.c
bfd/elf32-ppc.c
bfd/elf32-s390.c
bfd/elf32-sh.c
bfd/elf32-sh64-com.c
bfd/elf32-sh64.c
bfd/elf32-sh64.h
bfd/elf32-sparc.c
bfd/elf64-alpha.c
bfd/elf64-mips.c
bfd/elf64-mmix.c
bfd/elf64-ppc.c
bfd/elf64-s390.c
bfd/elf64-sparc.c
bfd/elfn32-mips.c
bfd/elfxx-ia64.c
bfd/elfxx-mips.c
bfd/elfxx-mips.h
bfd/elfxx-target.h
bfd/libbfd.h
bfd/opncls.c
bfd/po/SRC-POTFILES.in
bfd/reloc.c
bfd/version.h
config.if
configure
configure.in
gdb/ChangeLog
gdb/ChangeLog-2002
gdb/MAINTAINERS
gdb/Makefile.in
gdb/NEWS
gdb/README
gdb/acinclude.m4
gdb/aclocal.m4
gdb/ada-valprint.c
gdb/alpha-nat.c
gdb/alpha-tdep.c
gdb/alpha-tdep.h
gdb/ax-gdb.c
gdb/blockframe.c
gdb/breakpoint.c
gdb/breakpoint.h
gdb/buildsym.c
gdb/c-exp.y
gdb/c-valprint.c
gdb/charset.c
gdb/cli/cli-decode.h
gdb/cli/cli-script.c
gdb/complaints.c
gdb/complaints.h
gdb/config.in
gdb/config/alpha/nm-linux.h
gdb/config/djgpp/fnchange.lst
gdb/config/h8500/tm-h8500.h
gdb/config/i386/tm-ptx.h
gdb/config/i386/tm-symmetry.h
gdb/config/i386/xm-i386sco.h
gdb/config/m68k/nm-apollo68b.h
gdb/config/m68k/tm-sun3.h
gdb/config/nm-lynx.h
gdb/config/ns32k/nm-nbsd.h
gdb/config/pa/tm-hppa.h
gdb/config/pa/tm-hppa64.h
gdb/config/sparc/tm-sp64.h
gdb/config/sparc/tm-sparc.h
gdb/configure
gdb/configure.host
gdb/configure.in
gdb/configure.tgt
gdb/corefile.c
gdb/corelow.c
gdb/cp-valprint.c
gdb/cris-tdep.c
gdb/d10v-tdep.c
gdb/dbxread.c
gdb/defs.h
gdb/demangle.c
gdb/disasm.c
gdb/doc/ChangeLog
gdb/doc/gdb.texinfo
gdb/doc/gdbint.texinfo
gdb/doc/stabs.texinfo
gdb/dummy-frame.c
gdb/dummy-frame.h
gdb/dve3900-rom.c
gdb/dwarf2cfi.c
gdb/dwarf2read.c
gdb/dwarfread.c
gdb/elfread.c
gdb/eval.c
gdb/exec.c
gdb/expprint.c
gdb/expression.h
gdb/f-exp.y
gdb/f-typeprint.c
gdb/f-valprint.c
gdb/findvar.c
gdb/frame-unwind.c
gdb/frame-unwind.h
gdb/frame.c
gdb/frame.h
gdb/gcore.c
gdb/gdb-stabs.h
gdb/gdb_dirent.h
gdb/gdb_indent.sh
gdb/gdb_mbuild.sh
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/gdbcore.h
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/gnu-v2-abi.c
gdb/hppa-tdep.c
gdb/hppab-nat.c
gdb/hppah-nat.c
gdb/hpread.c
gdb/hpux-thread.c
gdb/i386v-nat.c
gdb/infcmd.c
gdb/inferior.h
gdb/infrun.c
gdb/inftarg.c
gdb/irix4-nat.c
gdb/jv-typeprint.c
gdb/language.c
gdb/language.h
gdb/lin-lwp.c
gdb/linespec.c
gdb/lynx-nat.c
gdb/m32r-tdep.c
gdb/m68klinux-nat.c
gdb/main.c
gdb/maint.c
gdb/mdebugread.c
gdb/mi/ChangeLog
gdb/mi/gdbmi.texinfo
gdb/mi/mi-cmd-env.c
gdb/mi/mi-cmd-var.c
gdb/mi/mi-main.c
gdb/mips-nat.c
gdb/mips-tdep.c
gdb/mipsv4-nat.c
gdb/mn10200-tdep.c
gdb/monitor.c
gdb/monitor.h
gdb/objc-exp.y
gdb/objfiles.c
gdb/objfiles.h
gdb/ocd.c
gdb/parse.c
gdb/proc-utils.h
gdb/procfs.c
gdb/remote-e7000.c
gdb/remote-mips.c
gdb/remote-sds.c
gdb/remote-sim.c
gdb/remote-vx.c
gdb/rom68k-rom.c
gdb/rs6000-nat.c
gdb/scm-lang.c
gdb/scm-lang.h
gdb/sentinel-frame.c
gdb/sentinel-frame.h
gdb/ser-go32.c
gdb/sh-tdep.c
gdb/solib-svr4.c
gdb/solib.c
gdb/somread.c
gdb/somsolib.c
gdb/somsolib.h
gdb/source.c
gdb/sparc-tdep.c
gdb/stabsread.c
gdb/stabsread.h
gdb/stack.c
gdb/symfile.c
gdb/symfile.h
gdb/symmisc.c
gdb/symtab.c
gdb/symtab.h
gdb/target.c
gdb/target.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/altivec-abi.exp
gdb/testsuite/gdb.arch/altivec-regs.exp
gdb/testsuite/gdb.asm/arm.inc
gdb/testsuite/gdb.asm/asm-source.exp
gdb/testsuite/gdb.base/advance.c
gdb/testsuite/gdb.base/advance.exp
gdb/testsuite/gdb.base/args.c
gdb/testsuite/gdb.base/args.exp
gdb/testsuite/gdb.base/break.exp
gdb/testsuite/gdb.base/constvars.exp
gdb/testsuite/gdb.base/default.exp
gdb/testsuite/gdb.base/display.exp
gdb/testsuite/gdb.base/float.exp
gdb/testsuite/gdb.base/help.exp
gdb/testsuite/gdb.base/long_long.exp
gdb/testsuite/gdb.base/mips_pro.exp
gdb/testsuite/gdb.base/overlays.exp
gdb/testsuite/gdb.base/printcmds.exp
gdb/testsuite/gdb.base/relocate.exp
gdb/testsuite/gdb.base/selftest.exp
gdb/testsuite/gdb.base/setshow.exp
gdb/testsuite/gdb.base/step-line.exp
gdb/testsuite/gdb.base/step-test.exp
gdb/testsuite/gdb.base/until.exp
gdb/testsuite/gdb.c++/cplusfuncs.exp
gdb/testsuite/gdb.c++/demangle.exp
gdb/testsuite/gdb.c++/inherit.exp
gdb/testsuite/gdb.c++/local.exp
gdb/testsuite/gdb.c++/overload.exp
gdb/testsuite/gdb.c++/printmethod.exp
gdb/testsuite/gdb.c++/virtfunc.exp
gdb/testsuite/gdb.mi/gdb669.exp
gdb/testsuite/gdb.mi/gdb792.exp
gdb/testsuite/gdb.mi/mi-console.exp
gdb/testsuite/gdb.mi/mi-pthreads.exp
gdb/testsuite/gdb.mi/mi-syn-frame.c
gdb/testsuite/gdb.mi/mi-syn-frame.exp
gdb/testsuite/gdb.mi/mi-var-child.exp
gdb/testsuite/gdb.mi/mi-var-display.exp
gdb/testsuite/gdb.mi/mi1-console.exp
gdb/testsuite/gdb.mi/mi1-pthreads.exp
gdb/testsuite/gdb.threads/killed.exp
gdb/testsuite/lib/gdb.exp
gdb/testsuite/lib/mi-support.exp
gdb/thread-db.c
gdb/thread.c
gdb/top.c
gdb/typeprint.c
gdb/utils.c
gdb/v850ice.c
gdb/valarith.c
gdb/valops.c
gdb/value.h
gdb/values.c
gdb/version.in
gdb/win32-nat.c
gdb/x86-64-linux-nat.c
gdb/x86-64-linux-tdep.c
gdb/xcoffread.c
gdb/z8k-tdep.c
include/ChangeLog
include/coff/ti.h
include/coff/tic4x.h
include/elf/ChangeLog
include/elf/common.h
include/elf/mips.h
include/elf/ppc.h
include/elf/ppc64.h
include/elf/s390.h
include/elf/sh.h
include/elf/sparc.h
include/hashtab.h
include/opcode/ChangeLog
include/opcode/hppa.h
include/opcode/m68hc11.h
include/splay-tree.h
libiberty/ChangeLog
libiberty/Makefile.in
libiberty/configure
libiberty/configure.in
libiberty/functions.texi
libiberty/hashtab.c
libiberty/pex-common.h
libiberty/pex-djgpp.c
libiberty/pex-mpw.c
libiberty/pex-msdos.c
libiberty/pex-os2.c
libiberty/pex-unix.c
libiberty/pex-win32.c
libiberty/pexecute.txh
opcodes/ChangeLog
opcodes/Makefile.am
opcodes/Makefile.in
opcodes/alpha-opc.c
opcodes/po/POTFILES.in
opcodes/sh-dis.c
opcodes/sh-opc.h
opcodes/sh64-dis.c
opcodes/sparc-dis.c
readline/ChangeLog.gdb
readline/display.c
sim/arm/ChangeLog
sim/arm/README
sim/h8300/ChangeLog
sim/h8300/compile.c
sim/mips/ChangeLog
sim/mips/mips.igen
Delete:
gdb/a68v-nat.c
gdb/config/i386/i386dgux.mh
gdb/config/i386/i386mk.mh
gdb/config/i386/i386mk.mt
gdb/config/i386/i386v32.mh
gdb/config/i386/tm-i386os9k.h
gdb/config/i386/xm-i386v32.h
gdb/config/m68k/es1800.mt
gdb/hp300ux-nat.c
gdb/mon960-rom.c
gdb/nindy-share/Makefile
gdb/nindy-share/Onindy.c
gdb/nindy-share/README
gdb/nindy-share/VERSION
gdb/nindy-share/b.out.h
gdb/nindy-share/block_io.h
gdb/nindy-share/coff.h
gdb/nindy-share/env.h
gdb/nindy-share/nindy.c
gdb/nindy-share/stop.h
gdb/nindy-share/ttyflush.c
gdb/nindy-tdep.c
gdb/ptx4-nat.c
gdb/remote-es.c
gdb/saber.suppress
libiberty/pexecute.c
sim/arm/README.Cygnus
Diffstat (limited to 'gdb/frame.h')
-rw-r--r-- | gdb/frame.h | 78 |
1 files changed, 31 insertions, 47 deletions
diff --git a/gdb/frame.h b/gdb/frame.h index fbe6275..8169173 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -24,6 +24,10 @@ #define FRAME_H 1 struct symtab_and_line; +struct frame_unwind; + +/* The traditional frame unwinder. */ +extern const struct frame_unwind *trad_frame_unwind; /* The frame object. */ @@ -259,6 +263,9 @@ extern void frame_register_unwind (struct frame_info *frame, int regnum, /* NOTE: cagney/2002-09-13: Return void as one day these functions may be changed to return an indication that the read succeeded. */ +extern void frame_unwind_register (struct frame_info *frame, + int regnum, void *buf); + extern void frame_unwind_signed_register (struct frame_info *frame, int regnum, LONGEST *val); @@ -279,6 +286,9 @@ extern void frame_register (struct frame_info *frame, int regnum, /* NOTE: cagney/2002-09-13: Return void as one day these functions may be changed to return an indication that the read succeeded. */ +extern void frame_read_register (struct frame_info *frame, int regnum, + void *buf); + extern void frame_read_signed_register (struct frame_info *frame, int regnum, LONGEST *val); @@ -287,9 +297,10 @@ extern void frame_read_unsigned_register (struct frame_info *frame, /* Map between a frame register number and its name. A frame register space is a superset of the cooked register space --- it also - includes builtin registers. */ + includes builtin registers. If NAMELEN is negative, use the NAME's + length when doing the comparison. */ -extern int frame_map_name_to_regnum (const char *name, int strlen); +extern int frame_map_name_to_regnum (const char *name, int namelen); extern const char *frame_map_regnum_to_name (int regnum); /* Unwind the PC. Strictly speaking return the resume address of the @@ -302,41 +313,9 @@ extern CORE_ADDR frame_pc_unwind (struct frame_info *frame); caller's frame. */ extern struct frame_id frame_id_unwind (struct frame_info *frame); - -/* Return the location (and possibly value) of REGNUM for the previous - (older, up) frame. All parameters except VALUEP can be assumed to - be non NULL. When VALUEP is NULL, just the location of the - register should be returned. - - UNWIND_CACHE is provided as mechanism for implementing a per-frame - local cache. It's initial value being NULL. Memory for that cache - should be allocated using frame_obstack_zalloc(). - - Register window architectures (eg SPARC) should note that REGNUM - identifies the register for the previous frame. For instance, a - request for the value of "o1" for the previous frame would be found - in the register "i1" in this FRAME. */ - -typedef void (frame_register_unwind_ftype) (struct frame_info *frame, - void **unwind_cache, - int regnum, - int *optimized, - enum lval_type *lvalp, - CORE_ADDR *addrp, - int *realnump, - void *valuep); - -/* Same as for registers above, but return the address at which the - calling frame would resume. */ - -typedef CORE_ADDR (frame_pc_unwind_ftype) (struct frame_info *frame, - void **unwind_cache); - -/* Same as for registers above, but return the ID of the frame that - called this one. */ - -typedef struct frame_id (frame_id_unwind_ftype) (struct frame_info *frame, - void **unwind_cache); +/* Discard the specified frame. Restoring the registers to the state + of the caller. */ +extern void frame_pop (struct frame_info *frame); /* Describe the saved registers of a frame. */ @@ -425,18 +404,14 @@ struct frame_info better all agree as to the contents. */ void *unwind_cache; - /* See description above. The previous frame's registers. */ - frame_register_unwind_ftype *register_unwind; + /* The frame's unwinder. */ + const struct frame_unwind *unwind; - /* See description above. The previous frame's resume address. - Save the previous PC in a local cache. */ - frame_pc_unwind_ftype *pc_unwind; + /* Cached copy of the previous frame's resume address. */ int pc_unwind_cache_p; CORE_ADDR pc_unwind_cache; - /* See description above. The previous frame's resume address. - Save the previous PC in a local cache. */ - frame_id_unwind_ftype *id_unwind; + /* Cached copy of the previous frame's ID. */ int id_unwind_cache_p; struct frame_id id_unwind_cache; @@ -477,6 +452,7 @@ enum print_what allocate memory using this method. */ extern void *frame_obstack_zalloc (unsigned long size); +#define FRAME_OBSTACK_ZALLOC(TYPE) ((TYPE *) frame_obstack_zalloc (sizeof (TYPE))) /* If FRAME_CHAIN_VALID returns zero it means that the given frame is the outermost one and has no caller. */ @@ -546,8 +522,6 @@ extern void show_and_print_stack_frame (struct frame_info *fi, int level, extern void print_stack_frame (struct frame_info *, int, int); -extern void print_only_stack_frame (struct frame_info *, int, int); - extern void show_stack_frame (struct frame_info *); extern void print_frame_info (struct frame_info *, int, int, int); @@ -595,6 +569,16 @@ extern void get_saved_register (char *raw_buffer, int *optimized, struct frame_info *frame, int regnum, enum lval_type *lval); +/* FIXME: cagney/2003-02-02: Should be deprecated or replaced with a + function called frame_read_register_p(). This slightly weird (and + older) variant of frame_read_register() returns zero (indicating + the register is unavailable) if either: the register isn't cached; + or the register has been optimized out. Problem is, neither check + is exactly correct. A register can't be optimized out (it may not + have been saved as part of a function call); The fact that a + register isn't in the register cache doesn't mean that the register + isn't available (it could have been fetched from memory). */ + extern int frame_register_read (struct frame_info *frame, int regnum, void *buf); |