From 99fd9e3ee638d6a003da2a727786510ac9bf0b76 Mon Sep 17 00:00:00 2001 From: Stu Grossman Date: Thu, 25 Jun 1992 22:22:40 +0000 Subject: [PATCH] * procfs.c (child_resume): Work around Solaris (on Sparc) lossage where there is no place for nPC in prrun struct. --- gdb/ChangeLog | 5 +++++ gdb/procfs.c | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5cf89e9a2d..3b9aaae549 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 25 15:18:42 1992 Stu Grossman (grossman at cygnus.com) + + * procfs.c (child_resume): Work around Solaris (on Sparc) lossage + where there is no place for nPC in prrun struct. + Thu Jun 25 12:06:00 1992 Fred Fish (fnf@cygnus.com) * mipsread.c: Pass NULL name pointer to init_type, not 0. diff --git a/gdb/procfs.c b/gdb/procfs.c index 251ddb4786..b205c66dfe 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -2039,8 +2039,18 @@ child_resume (step, signo) int signo; { errno = 0; - pi.prrun.pr_flags = PRSVADDR | PRSTRACE | PRSFAULT | PRCFAULT; + pi.prrun.pr_flags = PRSTRACE | PRSFAULT | PRCFAULT; + +#if !defined(sun) && !defined(sparc) +/* Can't do this under Solaris running on a Sparc, as there seems to be no + place to put nPC. In fact, if you use this, nPC seems to be set to some + random garbage. We have to rely on the fact that PC and nPC have been + written previously via PIOCSREG during a register flush. */ + pi.prrun.pr_vaddr = (caddr_t) *(int *) ®isters[REGISTER_BYTE (PC_REGNUM)]; + pi.prrun.pr_flags != PRSVADDR; +#endif + if (signo && !(signo == SIGSTOP && pi.nopass_next_sigstop)) { set_proc_siginfo (&pi, signo); -- 2.34.1