All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.