Linux PARISC architecture development
 help / color / mirror / Atom feed
* [parisc-linux] tracing through sig handlers
@ 2001-03-16 10:50 Richard Hirst
  2001-03-16 11:24 ` [parisc-linux] " Alan Modra
  0 siblings, 1 reply; 2+ messages in thread
From: Richard Hirst @ 2001-03-16 10:50 UTC (permalink / raw)
  To: Alan Modra; +Cc: parisc-linux

Hi Alan,

If I do this:


Index: arch/parisc/kernel/signal.c
===================================================================
RCS file: /home/cvs/parisc/linux/arch/parisc/kernel/signal.c,v
retrieving revision 1.37
diff -u -r1.37 signal.c
--- signal.c	2001/02/09 14:39:08	1.37
+++ signal.c	2001/03/16 10:29:48
@@ -260,6 +260,8 @@
 		/* regs->iaoq is undefined in the syscall return path */
 		err |= __put_user(regs->gr[31], &sc->sc_iaoq[0]);
 		err |= __put_user(regs->gr[31]+4, &sc->sc_iaoq[1]);
+		err |= __put_user(regs->sr[3], &sc->sc_iasq[0]);
+		err |= __put_user(regs->sr[3], &sc->sc_iasq[1]);
 #if DEBUG_SIG
 		printk("setup_sigcontext: iaoq %#lx/%#lx\n", regs->gr[31], regs->gr[31]);
 #endif


Then I can strace my little test prog. that sends itself a signal
while the signal is blocked, and then unblocks the signal.

I havn't worked out why this is only apparently necessary when a process
is being traced.

It makes things better with gdb also, but not perfect.  The problem
now is that when you try to step out of the signal handler the program
under test just runs on without stopping.  Previously it would have
crashed with an invalid iasq[].

Richard

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-03-16 11:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-03-16 10:50 [parisc-linux] tracing through sig handlers Richard Hirst
2001-03-16 11:24 ` [parisc-linux] " Alan Modra

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox