aboutsummaryrefslogtreecommitdiff
path: root/gdb/objfiles.h
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>1997-04-03 23:19:46 +0000
committerMichael Snyder <msnyder@vmware.com>1997-04-03 23:19:46 +0000
commitb9580b812cd50f88b9bd63603bec6aeeedf75cdf (patch)
treeb0adb52d66af883de4d25f86a1d58037bdefe609 /gdb/objfiles.h
parent4eb4b87e13548a3cdf14f779d52dd51f50bff5e6 (diff)
downloadgdb-b9580b812cd50f88b9bd63603bec6aeeedf75cdf.zip
gdb-b9580b812cd50f88b9bd63603bec6aeeedf75cdf.tar.gz
gdb-b9580b812cd50f88b9bd63603bec6aeeedf75cdf.tar.bz2
Thu Apr 3 15:10:30 1997 Michael Snyder <msnyder@cleaver.cygnus.com>
Except for the two m32r modules, this checkin is for overlay support. * blockframe.c: blockvector_for_pc_sect(), block_for_pc_sect(), find_pc_sect_function(), find_pc_sect_partial_function(): new functions for debugging overlays; pc without section is ambiguous. * breakpoint.[ch]: add section pointer to breakpoint struct; add section argument to check_duplicates(); check section as well as pc in [breakpoint_here_p(), breakpoint_inserted_here_p(), breakpoint_thread_match(), bpstat_stop_status()]; add section argument to describe_other_breakpoints(); use INIT_SAL() macro to zero-out new sal structures; make resolve_sal_pc() fix up the sal's section as well as its pc; match on section + pc in clear_command() and delete_breakpoint(); account for overlay sections in insert_breakpoints(), remove_breakpoint() and breakpoint_re_set_one(); all this to support overlays where a PC is not unique. * exec.c: change xfer_memory() to handle overlay sections. * findvar.c: change read_var_value() to handle overlay sections. * frame.h: declaration for block_for_pc_sect() [blockframe.c]. * infcmd.c: jump_command() warns against jumping into an overlay that's not in memory. Also use INIT_SAL() to initialize sals. * infrun.c: wait_for_inferior() sets a flag to invalidate cached overlay state information; Also use INIT_SAL() to init sals. * m32r-rom.c: modify load routines to use LMA instead of VMA. * m32r-stub.c: mask exit value down to 8 bits; screen out any memory read/writes in the range 600000 to a00000, and ff680000 to ff800000 (hangs because nothing is mapped there); fix strcpy(). * maint.c: maintenance command "translate-address" supports overlays. * minsyms.c: lookup_minimal_symbol_by_pc_sect() supports overlays. * objfiles.[ch]: add ovly_mapped field to the obj_section struct; this constitutes gdb's internal overlay mapping table. Add macro ALL_OBJSECTIONS() to loop thru the obj_structs and look at overlays. Add function find_pc_sect_section(). * printcmd.c: modify print_address_symbolic() with overlay smarts; modify address_info() with overlay smarts; add function sym_info() to support the INFO SYMBOL command (translate address to symbol(s)); modify disassemble_command() to work on unmapped overlays. * source.c: use INIT_SAL() to initialize sals. * symfile.[ch]: change generic_load() to use section's LMA address instead of VMA address, for overlay sections. Add numerous functions for finding a PC's section / overlay, translating between VMA and LMA address ranges, determining if an overlay section is mapped, etc. Add several user commands for overlay debugging. Add support for a "generic" form of automatically reading overlay mapping info from the inferior (based on the default (simple) overlay manager which Cygnus provides as an example). * symtab.[ch]: add functions find_pc_sect_symtab(), find_pc_sect_psymtab(), find_pc_sect_psymbol(), find_pc_sect_line() for lookup; modify lookup_symbol and decode_line_1() to use them; modify find_function_start_sal() to account for overlay sections; add macro INIT_SAL() for initializing struct symtab_and_line. * target.c: fix a comment in the declaration of target_ops.
Diffstat (limited to 'gdb/objfiles.h')
-rw-r--r--gdb/objfiles.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index 937d0d4..d90095d 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -154,6 +154,9 @@ struct obj_section {
/* Objfile this section is part of. */
struct objfile *objfile;
+
+ /* True if this "overlay section" is mapped into an "overlay region". */
+ int ovly_mapped;
};
/* The "objstats" structure provides a place for gdb to record some
@@ -454,6 +457,9 @@ have_minimal_symbols PARAMS ((void));
extern struct obj_section *
find_pc_section PARAMS((CORE_ADDR pc));
+extern struct obj_section *
+find_pc_sect_section PARAMS((CORE_ADDR pc, asection *section));
+
extern int
in_plt_section PARAMS ((CORE_ADDR, char *));
@@ -502,4 +508,11 @@ in_plt_section PARAMS ((CORE_ADDR, char *));
if ((objfile)->msymbols) \
ALL_OBJFILE_MSYMBOLS (objfile, m)
+#define ALL_OBJFILE_OSECTIONS(objfile, osect) \
+ for (osect = objfile->sections; osect < objfile->sections_end; osect++)
+
+#define ALL_OBJSECTIONS(objfile, osect) \
+ ALL_OBJFILES (objfile) \
+ ALL_OBJFILE_OSECTIONS (objfile, osect)
+
#endif /* !defined (OBJFILES_H) */