aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc-tdep.c
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1994-03-19 18:49:50 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1994-03-19 18:49:50 +0000
commit94d4b713731d53fac28864a85e1974aa34fe7c39 (patch)
tree72b4d5f61bc77345f73d427f16078eee19cb9cae /gdb/sparc-tdep.c
parent1732fbd47ae938e02720801967b6dd9c3f489ba6 (diff)
downloadgdb-94d4b713731d53fac28864a85e1974aa34fe7c39.zip
gdb-94d4b713731d53fac28864a85e1974aa34fe7c39.tar.gz
gdb-94d4b713731d53fac28864a85e1974aa34fe7c39.tar.bz2
* Makefile.in (TAGS): Use variables directly, rather than using
find, to locate TM_FILE, XM_FILE, and NAT_FILE. This is faster and means that these filenames no longer need be unique across all the config/* directories. * configure.in: Put the config/*/ into TM_FILE, etc. * m68k-stub.c (computeSignal): Return SIGFPE, not SIGURG, for chk and trapv exceptions. * target.h (struct section_table), objfiles.h (struct obj_section): Change name of field sec_ptr to the_bfd_section. More mnemonic and avoids the (sort of, for the ptx compiler) name clash with the name of the typedef. * exec.c, xcoffexec.c, sparc-tdep.c, rs6000-nat.c, osfsolib.c, solib.c, irix5-nat.c, objfiles.c, remote.c: Change users. * utils.c: Include readline.h. * Makefile.in (utils.o): Add dependency. * remote.c (getpkt): Add support for run-length encoding.
Diffstat (limited to 'gdb/sparc-tdep.c')
-rw-r--r--gdb/sparc-tdep.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index 7deca28..060d29a 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -1,5 +1,6 @@
/* Target-dependent code for the SPARC for GDB, the GNU debugger.
- Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
+ Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
+ Free Software Foundation, Inc.
This file is part of GDB.
@@ -175,6 +176,15 @@ sparc_frame_saved_pc (frame)
CORE_ADDR sigcontext_addr;
char scbuf[TARGET_PTR_BIT / HOST_CHAR_BIT];
+ int saved_pc_offset = SIGCONTEXT_PC_OFFSET;
+ char *name = NULL;
+
+ /* Solaris2 ucbsigvechandler passes a pointer to a sigcontext
+ as the third parameter. The offset to the saved pc is 12. */
+ find_pc_partial_function (frame->pc, &name,
+ (CORE_ADDR *)NULL,(CORE_ADDR *)NULL);
+ if (name && STREQ (name, "ucbsigvechandler"))
+ saved_pc_offset = 12;
/* The sigcontext address is contained in register O2. */
get_saved_register (buf, (int *)NULL, (CORE_ADDR *)NULL,
@@ -183,7 +193,7 @@ sparc_frame_saved_pc (frame)
/* Don't cause a memory_error when accessing sigcontext in case the
stack layout has changed or the stack is corrupt. */
- target_read_memory (sigcontext_addr + SIGCONTEXT_PC_OFFSET,
+ target_read_memory (sigcontext_addr + saved_pc_offset,
scbuf, sizeof (scbuf));
return extract_address (scbuf, sizeof (scbuf));
}
@@ -788,8 +798,8 @@ in_solib_trampoline(pc, name)
s = find_pc_section(pc);
retval = (s != NULL
- && s->sec_ptr->name != NULL
- && STREQ (s->sec_ptr->name, ".plt"));
+ && s->the_bfd_section->name != NULL
+ && STREQ (s->the_bfd_section->name, ".plt"));
return(retval);
}