/* Definitions for symbol file management in GDB.
- Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
This file is part of GDB.
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. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
#if !defined (OBJFILES_H)
#define OBJFILES_H
to the user executable's recorded entry point, as if the call had been made
directly by the kernel.
- The traditional gdb method of using this info is to use the
- recorded entry point to set the variables
- deprecated_entry_file_lowpc and deprecated_entry_file_highpc from
+ The traditional gdb method of using this info was to use the
+ recorded entry point to set the entry-file's lowpc and highpc from
the debugging information, where these values are the starting
address (inclusive) and ending address (exclusive) of the
instruction space in the executable which correspond to the
NOTE: cagney/2003-09-09: It turns out that this "traditional"
method doesn't work. Corinna writes: ``It turns out that the call
- to deprecated_inside_entry_file destroys a meaningful backtrace
+ to test for "inside entry file" destroys a meaningful backtrace
under some conditions. E. g. the backtrace tests in the asm-source
testcase are broken for some targets. In this test the functions
are all implemented as part of one file and the testcase is not
#define INVALID_ENTRY_POINT (~0) /* ~0 will not be in any file, we hope. */
- /* Start (inclusive) and end (exclusive) of function containing the
- entry point. */
-
- CORE_ADDR entry_func_lowpc;
- CORE_ADDR entry_func_highpc;
-
- /* Start (inclusive) and end (exclusive) of object file containing the
- entry point. */
-
- CORE_ADDR deprecated_entry_file_lowpc;
- CORE_ADDR deprecated_entry_file_highpc;
-
- /* Start (inclusive) and end (exclusive) of the user code main() function. */
-
- CORE_ADDR main_func_lowpc;
- CORE_ADDR main_func_highpc;
-
-/* Use these values when any of the above ranges is invalid. */
-
-/* We use these values because it guarantees that there is no number that is
- both >= LOWPC && < HIGHPC. It is also highly unlikely that 3 is a valid
- module or function start address (as opposed to 0). */
-
-#define INVALID_ENTRY_LOWPC (3)
-#define INVALID_ENTRY_HIGHPC (1)
-
};
/* Sections in an objfile.
/* Information about stabs. Will be filled in with a dbx_symfile_info
struct by those readers that need it. */
+ /* NOTE: cagney/2004-10-23: This has been replaced by per-objfile
+ data points implemented using "data" and "num_data" below. For
+ an example of how to use this replacement, see "objfile_data"
+ in "mips-tdep.c". */
- struct dbx_symfile_info *sym_stab_info;
+ struct dbx_symfile_info *deprecated_sym_stab_info;
/* Hook for information for use by the symbol reader (currently used
for information shared by sym_init and sym_read). It is
typically a pointer to malloc'd memory. The symbol reader's finish
function is responsible for freeing the memory thusly allocated. */
+ /* NOTE: cagney/2004-10-23: This has been replaced by per-objfile
+ data points implemented using "data" and "num_data" below. For
+ an example of how to use this replacement, see "objfile_data"
+ in "mips-tdep.c". */
- void *sym_private;
+ void *deprecated_sym_private;
/* Hook for target-architecture-specific information. This must
point to memory allocated on one of the obstacks in this objfile,
so that it gets freed automatically when reading a new object
file. */
- void *obj_private;
+ void *deprecated_obj_private;
/* Per objfile data-pointers required by other GDB modules. */
/* FIXME: kettenis/20030711: This mechanism could replace
- sym_stab_info, sym_private and obj_private entirely. */
+ deprecated_sym_stab_info, deprecated_sym_private and
+ deprecated_obj_private entirely. */
void **data;
unsigned num_data;
ALL_OBJFILES (objfile) \
ALL_OBJFILE_SYMTABS (objfile, s)
+/* Traverse all symtabs in all objfiles, skipping included files
+ (which share a blockvector with their primary symtab). */
+
+#define ALL_PRIMARY_SYMTABS(objfile, s) \
+ ALL_OBJFILES (objfile) \
+ ALL_OBJFILE_SYMTABS (objfile, s) \
+ if ((s)->primary)
+
/* Traverse all psymtabs in all objfiles. */
#define ALL_PSYMTABS(objfile, p) \
#define SECT_OFF_DATA(objfile) \
((objfile->sect_index_data == -1) \
- ? (internal_error (__FILE__, __LINE__, "sect_index_data not initialized"), -1) \
+ ? (internal_error (__FILE__, __LINE__, _("sect_index_data not initialized")), -1) \
: objfile->sect_index_data)
#define SECT_OFF_RODATA(objfile) \
((objfile->sect_index_rodata == -1) \
- ? (internal_error (__FILE__, __LINE__, "sect_index_rodata not initialized"), -1) \
+ ? (internal_error (__FILE__, __LINE__, _("sect_index_rodata not initialized")), -1) \
: objfile->sect_index_rodata)
#define SECT_OFF_TEXT(objfile) \
((objfile->sect_index_text == -1) \
- ? (internal_error (__FILE__, __LINE__, "sect_index_text not initialized"), -1) \
+ ? (internal_error (__FILE__, __LINE__, _("sect_index_text not initialized")), -1) \
: objfile->sect_index_text)
/* Sometimes the .bss section is missing from the objfile, so we don't