diff options
author | Stu Grossman <grossman@cygnus> | 1992-06-25 22:22:40 +0000 |
---|---|---|
committer | Stu Grossman <grossman@cygnus> | 1992-06-25 22:22:40 +0000 |
commit | 99fd9e3ee638d6a003da2a727786510ac9bf0b76 (patch) | |
tree | 28bb298db5a1bec55aca76299f0d6aba55034d51 /gdb | |
parent | 50e0dc4198cd5a873deeae34cf9718e805049693 (diff) | |
download | gdb-99fd9e3ee638d6a003da2a727786510ac9bf0b76.zip gdb-99fd9e3ee638d6a003da2a727786510ac9bf0b76.tar.gz gdb-99fd9e3ee638d6a003da2a727786510ac9bf0b76.tar.bz2 |
* procfs.c (child_resume): Work around Solaris (on Sparc) lossage
where there is no place for nPC in prrun struct.
Diffstat (limited to 'gdb')
-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); |