* objfiles.h, infcmd.c, symfile.c: Add comments about how various

objfiles get created and when we should blow them away.
This commit is contained in:
Jim Kingdon 1993-10-31 15:46:34 +00:00
parent e6d739ebb5
commit f6c4bf1a82
4 changed files with 38 additions and 5 deletions

View File

@ -1,3 +1,8 @@
Sun Oct 31 09:28:46 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* objfiles.h, infcmd.c, symfile.c: Add comments about how various
objfiles get created and when we should blow them away.
Sat Oct 30 08:32:53 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* symfile.c (reread_symbols): When re-reading symbols, do all the

View File

@ -30,6 +30,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "gdbcmd.h"
#include "gdbcore.h"
#include "target.h"
#include "language.h"
static void
continue_command PARAMS ((char *, int));
@ -227,6 +228,14 @@ Start it from the beginning? "))
we just have to worry about the symbol file. */
reread_symbols ();
/* We keep symbols from add-symbol-file, on the grounds that the
user might want to add some symbols before running the program
(right?). But sometimes (dynamic loading where the user manually
introduces the new symbols with add-symbol-file), the code which
the symbols describe does not persist between runs. Currently
the user has to manually nuke all symbols between runs if they
want them to go away (PR 2207). This is probably reasonable. */
if (args)
{
char *cmd;
@ -549,10 +558,21 @@ run_stack_dummy (addr, buffer)
struct breakpoint *bpt;
struct symtab_and_line sal;
#if CALL_DUMMY_LOCATION != AT_ENTRY_POINT
sal.pc = addr - CALL_DUMMY_START_OFFSET + CALL_DUMMY_BREAKPOINT_OFFSET;
#else
sal.pc = entry_point_address ();
#endif
sal.symtab = NULL;
sal.line = 0;
/* Set up a FRAME for the dummy frame so we can pass it to
set_momentary_breakpoint. We need to give the breakpoint a
frame in case there is only one copy of the dummy (e.g.
CALL_DUMMY_LOCATION == AFTER_TEXT_END). */
flush_cached_frames ();
set_current_frame (create_new_frame (read_fp (), sal.pc));
/* If defined, CALL_DUMMY_BREAKPOINT_OFFSET is where we need to put
a breakpoint instruction. If not, the call dummy already has the
breakpoint instruction in it.
@ -560,7 +580,7 @@ run_stack_dummy (addr, buffer)
addr is the address of the call dummy plus the CALL_DUMMY_START_OFFSET,
so we need to subtract the CALL_DUMMY_START_OFFSET. */
bpt = set_momentary_breakpoint (sal,
NULL,
get_current_frame (),
bp_call_dummy);
bpt->disposition = delete;

View File

@ -149,10 +149,13 @@ struct obj_section {
struct objfile *objfile;
};
/* Master structure for keeping track of each input file from which
gdb reads symbols. One of these is allocated for each such file we
access, e.g. the exec_file, symbol_file, and any shared library object
files. */
/* Master structure for keeping track of each file from which
gdb reads symbols. There are several ways these get allocated: 1.
The main symbol file, symfile_objfile, set by the symbol-file command,
2. Additional symbol files added by the add-symbol-file command,
3. Shared library objfiles, added by ADD_SOLIB, 4. symbol files
for modules that were loaded when GDB attached to a remote system
(see remote-vx.c). */
struct objfile
{

View File

@ -376,6 +376,11 @@ syms_from_objfile (objfile, addr, mainline, verbo)
symfile_objfile = NULL;
}
/* Currently we keep symbols from the add-symbol-file command.
If the user wants to get rid of them, they should do "symbol-file"
without arguments first. Not sure this is the best behavior
(PR 2207). */
(*objfile -> sf -> sym_new_init) (objfile);
}