diff options
author | Peter Schauer <Peter.Schauer@mytum.de> | 1994-08-07 13:33:45 +0000 |
---|---|---|
committer | Peter Schauer <Peter.Schauer@mytum.de> | 1994-08-07 13:33:45 +0000 |
commit | 0d98155c9484f354c4e65e7c39faa3d751ce2599 (patch) | |
tree | aaca8b9e8002211cca048e062714d99792cd83d5 /gdb/irix5-nat.c | |
parent | f20860cdbc5488e3e481c0bf12c9f78d92e6db29 (diff) | |
download | gdb-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.c | 61 |
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; + } + } + } } /* |