X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fframe-base.h;h=85f8b2ee53da89bb1e81b7181aff4e0ed23b4206;hb=5aa03310cef09e8c41aaa05152d9570dfe62ba81;hp=5e0d5db2e25635712641dba06c040af803eb7d41;hpb=da62e6331195dc2b0a8772a8754b8f93f0a8a43a;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/frame-base.h b/gdb/frame-base.h index 5e0d5db..85f8b2e 100644 --- a/gdb/frame-base.h +++ b/gdb/frame-base.h @@ -1,12 +1,12 @@ /* Definitions for a frame base, for GDB, the GNU debugger. - Copyright 2003 Free Software Foundation, Inc. + Copyright (C) 2003-2014 Free Software Foundation, Inc. This file is part of GDB. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -15,9 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #if !defined (FRAME_BASE_H) #define FRAME_BASE_H 1 @@ -29,34 +27,10 @@ struct frame_base; struct gdbarch; struct regcache; -/* Return the frame base methods for the function that contains PC, or - NULL if it can't handle this frame. */ - -typedef const struct frame_base *(frame_base_p_ftype) (CORE_ADDR pc); - -/* Add a frame base handler to the list. The predicates are polled in - the order that they are appended. */ - -extern void frame_base_append_predicate (struct gdbarch *gdbarch, - frame_base_p_ftype *p); - -/* Set the default frame base. If all else fails, this one is - returned. If this isn't set, the default is to use legacy code - that uses things like the frame ID's base (ulgh!). */ - -extern void frame_base_set_default (struct gdbarch *gdbarch, - const struct frame_base *def); - -/* Iterate through the list of frame base handlers until one returns - an implementation. */ - -extern const struct frame_base *frame_base_find_by_pc (struct gdbarch *gdbarch, - CORE_ADDR pc); - /* Assuming the frame chain: (outer) prev <-> this <-> next (inner); - and that this is a `normal frame'; use the NEXT frame, and its - register unwind method, to determine the address of THIS frame's - `base'. + and that this is a `normal frame'; use THIS frame, and implicitly + the NEXT frame's register unwind method, to determine the address + of THIS frame's `base'. The exact meaning of `base' is highly dependant on the type of the debug info. It is assumed that dwarf2, stabs, ... will each @@ -68,17 +42,17 @@ extern const struct frame_base *frame_base_find_by_pc (struct gdbarch *gdbarch, /* A generic base address. */ -typedef CORE_ADDR (frame_this_base_ftype) (struct frame_info *next_frame, +typedef CORE_ADDR (frame_this_base_ftype) (struct frame_info *this_frame, void **this_base_cache); /* The base address of the frame's local variables. */ -typedef CORE_ADDR (frame_this_locals_ftype) (struct frame_info *next_frame, +typedef CORE_ADDR (frame_this_locals_ftype) (struct frame_info *this_frame, void **this_base_cache); /* The base address of the frame's arguments / parameters. */ -typedef CORE_ADDR (frame_this_args_ftype) (struct frame_info *next_frame, +typedef CORE_ADDR (frame_this_args_ftype) (struct frame_info *this_frame, void **this_base_cache); struct frame_base @@ -91,4 +65,27 @@ struct frame_base frame_this_args_ftype *this_args; }; +/* Given THIS frame, return the frame base methods for THIS frame, + or NULL if it can't handle THIS frame. */ + +typedef const struct frame_base *(frame_base_sniffer_ftype) (struct frame_info *this_frame); + +/* Append a frame base sniffer to the list. The sniffers are polled + in the order that they are appended. */ + +extern void frame_base_append_sniffer (struct gdbarch *gdbarch, + frame_base_sniffer_ftype *sniffer); + +/* Set the default frame base. If all else fails, this one is + returned. If this isn't set, the default is to use legacy code + that uses things like the frame ID's base (ulgh!). */ + +extern void frame_base_set_default (struct gdbarch *gdbarch, + const struct frame_base *def); + +/* Iterate through the list of frame base handlers until one returns + an implementation. */ + +extern const struct frame_base *frame_base_find_by_frame (struct frame_info *this_frame); + #endif