diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/procfs.c | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5cf89e9..3b9aaae 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 251ddb4..b205c66 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); |