aboutsummaryrefslogtreecommitdiff
path: root/gdb/irix5-nat.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1994-08-07 13:33:45 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1994-08-07 13:33:45 +0000
commit0d98155c9484f354c4e65e7c39faa3d751ce2599 (patch)
treeaaca8b9e8002211cca048e062714d99792cd83d5 /gdb/irix5-nat.c
parentf20860cdbc5488e3e481c0bf12c9f78d92e6db29 (diff)
downloadgdb-0d98155c9484f354c4e65e7c39faa3d751ce2599.zip
gdb-0d98155c9484f354c4e65e7c39faa3d751ce2599.tar.gz
gdb-0d98155c9484f354c4e65e7c39faa3d751ce2599.tar.bz2
* config/mips/tm-irix5.h (IN_SIGTRAMP): Redefine for Irix 5,
Irix 5 has a standard _sigtramp signal handler. * irix5-nat.c (solib_add): Get rid of sigtramp_address handling, it is not needed for a standard _sigtramp signal handler. Add shared library sections to the section table of the target before adding the symbols. * mips-tdep.c (mips_skip_prologue): Do not skip load immediate instructions that do not prepare a stack adjustment. * regex.c (SIGN_EXTEND_CHAR): Update to emacs-19.25 definition, which does the right thing on machines where `char' is unsigned.
Diffstat (limited to 'gdb/irix5-nat.c')
-rw-r--r--gdb/irix5-nat.c61
1 files changed, 28 insertions, 33 deletions
diff --git a/gdb/irix5-nat.c b/gdb/irix5-nat.c
index 590427e..74004d41 100644
--- a/gdb/irix5-nat.c
+++ b/gdb/irix5-nat.c
@@ -217,8 +217,6 @@ static char *bkpt_names[] = {
char shadow_contents[BREAKPOINT_MAX]; /* Stash old bkpt addr contents */
-extern CORE_ADDR sigtramp_address, sigtramp_end;
-
struct so_list {
struct so_list *next; /* next structure in linked list */
struct obj_list ll;
@@ -615,37 +613,10 @@ solib_add (arg_string, from_tty, target)
error ("Invalid regexp: %s", re_err);
}
- /* Getting new symbols may change our opinion about what is
- frameless. */
- reinit_frame_cache ();
- /* Not to mention where _sigtramp is. */
- sigtramp_address = 0;
-
- while ((so = find_solib (so)) != NULL)
- {
- if (so -> lm.o_path[0] && re_exec (so -> lm.o_path))
- {
- so -> from_tty = from_tty;
- if (so -> symbols_loaded)
- {
- if (from_tty)
- {
- printf_unfiltered ("Symbols already loaded for %s\n", so -> lm.o_path);
- }
- }
- else if (catch_errors
- (symbol_add_stub, (char *) so,
- "Error while reading shared library symbols:\n",
- RETURN_MASK_ALL))
- {
- so_last = so;
- so -> symbols_loaded = 1;
- }
- }
- }
-
- /* Now add the shared library sections to the section table of the
- specified target, if any. */
+ /* Add the shared library sections to the section table of the
+ specified target, if any. We have to do this before reading the
+ symbol files as symbol_file_add calls reinit_frame_cache and
+ creating a new frame might access memory in the shared library. */
if (target)
{
/* Count how many new section_table entries there are. */
@@ -691,6 +662,30 @@ solib_add (arg_string, from_tty, target)
}
}
}
+
+ /* Now add the symbol files. */
+ while ((so = find_solib (so)) != NULL)
+ {
+ if (so -> lm.o_path[0] && re_exec (so -> lm.o_path))
+ {
+ so -> from_tty = from_tty;
+ if (so -> symbols_loaded)
+ {
+ if (from_tty)
+ {
+ printf_unfiltered ("Symbols already loaded for %s\n", so -> lm.o_path);
+ }
+ }
+ else if (catch_errors
+ (symbol_add_stub, (char *) so,
+ "Error while reading shared library symbols:\n",
+ RETURN_MASK_ALL))
+ {
+ so_last = so;
+ so -> symbols_loaded = 1;
+ }
+ }
+ }
}
/*