aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1993-10-31 15:46:34 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1993-10-31 15:46:34 +0000
commitf6c4bf1a82bff3359f5bb40bbca4ed62017fcac6 (patch)
tree0c1d733fc930b362b79705ae84e245a11730cd43
parente6d739ebb516e5b3c192d5dc5c899097b62147a2 (diff)
downloadgdb-f6c4bf1a82bff3359f5bb40bbca4ed62017fcac6.zip
gdb-f6c4bf1a82bff3359f5bb40bbca4ed62017fcac6.tar.gz
gdb-f6c4bf1a82bff3359f5bb40bbca4ed62017fcac6.tar.bz2
* objfiles.h, infcmd.c, symfile.c: Add comments about how various
objfiles get created and when we should blow them away.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/infcmd.c22
-rw-r--r--gdb/objfiles.h11
-rw-r--r--gdb/symfile.c5
4 files changed, 38 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 11a21e1..270b573 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index cd74b20..28ecc1a 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -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;
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index b5b0622..bf1a930 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -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
{
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 5dbcbfa..8430ae9 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -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);
}