From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14396 invoked by alias); 22 Jan 2008 19:59:33 -0000 Received: (qmail 14337 invoked by uid 367); 22 Jan 2008 19:59:30 -0000 Date: Tue, 22 Jan 2008 19:59:00 -0000 Message-ID: <20080122195930.14321.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Pass Signal, instead of int sig, to Ptrace.cont et.al. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 005eb511bce81b206a973829ea98f430ce021684 X-Git-Newrev: c2200af0df9b4b598a92a1fa29bff2ea33b37525 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q1/txt/msg00102.txt.bz2 The branch, master has been updated via c2200af0df9b4b598a92a1fa29bff2ea33b37525 (commit) from 005eb511bce81b206a973829ea98f430ce021684 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit c2200af0df9b4b598a92a1fa29bff2ea33b37525 Author: Andrew Cagney Date: Tue Jan 22 14:59:01 2008 -0500 Pass Signal, instead of int sig, to Ptrace.cont et.al. frysk-core/frysk/proc/live/ChangeLog 2008-01-22 Andrew Cagney * LinuxPtraceTask.java (sendContinue(Signal)): Replace sendContinue(int). (sendSyscallContinue(Signal)): Replace sendSyscallContinue(int). (sendStepInstruction(Signal)): Replace sendStepInstruction(int). (sendDetach(Signal)): Replace sendDetach(int). * LinuxPtraceTaskState.java: Update. frysk-sys/frysk/sys/ChangeLog 2008-01-22 Andrew Cagney * Ptrace.java (detach(int,int)): Make private. (singleStep(int,Signal)): New. (signalStep(int,int)): Make private. (cont(int,Signal)): New. (cont(int,int)): Make private. (sysCall(int,Signal)): New. (sysCall(int,int)): Make private. * TestPtrace.java: Update. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/proc/live/ChangeLog | 7 +++ frysk-core/frysk/proc/live/LinuxPtraceTask.java | 57 ++++++++------------ .../frysk/proc/live/LinuxPtraceTaskState.java | 37 ++++++------- frysk-sys/frysk/sys/ChangeLog | 9 +++ frysk-sys/frysk/sys/Ptrace.java | 22 +++++--- frysk-sys/frysk/sys/TestPtrace.java | 6 +- 6 files changed, 73 insertions(+), 65 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index c847d5d..25c8241 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,5 +1,12 @@ 2008-01-22 Andrew Cagney + * LinuxPtraceTask.java (sendContinue(Signal)): Replace + sendContinue(int). + (sendSyscallContinue(Signal)): Replace sendSyscallContinue(int). + (sendStepInstruction(Signal)): Replace sendStepInstruction(int). + (sendDetach(Signal)): Replace sendDetach(int). + * LinuxPtraceTaskState.java: Update. + * LinuxPtraceTask.java (processSignaledEvent(Signal)): Replace processSignaledEvent(int). (processTerminatingEvent(Signal,int)): Replace diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java index e22646b..3b10fea 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java @@ -265,49 +265,36 @@ public class LinuxPtraceTask extends LiveTask { }); } - public void sendContinue (int sig) - { + void sendContinue(Signal sig) { logger.log(Level.FINE, "{0} sendContinue\n", this); sigSendXXX = sig; incrementMod(); - try - { - Ptrace.cont(getTid(), sig); - } - catch (Errno.Esrch e) - { - postDisappearedEvent(e); - } + try { + Ptrace.cont(getTid(), sig); + } catch (Errno.Esrch e) { + postDisappearedEvent(e); + } } - public void sendSyscallContinue (int sig) - { + void sendSyscallContinue(Signal sig) { logger.log(Level.FINE, "{0} sendSyscallContinue\n", this); sigSendXXX = sig; incrementMod(); - try - { - Ptrace.sysCall(getTid(), sig); - } - catch (Errno.Esrch e) - { - postDisappearedEvent(e); - } + try { + Ptrace.sysCall(getTid(), sig); + } catch (Errno.Esrch e) { + postDisappearedEvent(e); + } } - - public void sendStepInstruction (int sig) - { + void sendStepInstruction(Signal sig) { logger.log(Level.FINE, "{0} sendStepInstruction\n", this); sigSendXXX = sig; incrementMod(); syscallSigretXXX = getIsaFIXME().isAtSyscallSigReturn(this); - try - { - Ptrace.singleStep(getTid(), sig); - } - catch (Errno.Esrch e) - { - postDisappearedEvent(e); - } + try { + Ptrace.singleStep(getTid(), sig); + } catch (Errno.Esrch e) { + postDisappearedEvent(e); + } } public void sendStop () @@ -371,14 +358,14 @@ public class LinuxPtraceTask extends LiveTask { } } - public void sendDetach(int sig) { + void sendDetach(Signal sig) { logger.log(Level.FINE, "{0} sendDetach\n", this); clearIsa(); try { - if (Signal.STOP.equals(sig)) { + if (sig == Signal.STOP) { logger.log(Level.FINE, "{0} sendDetach/signal STOP\n", this); Signal.STOP.tkill(getTid()); - Ptrace.detach(getTid(), 0); + Ptrace.detach(getTid(), Signal.NONE); } else { Ptrace.detach(getTid(), sig); } @@ -977,7 +964,7 @@ public class LinuxPtraceTask extends LiveTask { * * XXX: This should be a state in Linux/PTRACE state machine. */ - public int sigSendXXX; + Signal sigSendXXX = Signal.NONE; /** * When the last request to the process was a step request, diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java index f19b6ca..7e47b2c 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java @@ -225,7 +225,7 @@ class LinuxPtraceTaskState extends State { // Save the signal and then re-wait for, hopefully, // the SIGCONT behind it. sigset.add(signal); - task.sendContinue(0); + task.sendContinue(Signal.NONE); return this; } else { if (waitForSIGCONT) { @@ -437,7 +437,7 @@ class LinuxPtraceTaskState extends State { if (shouldRemoveObservers) task.removeObservers(); // XXX: Otherwise check that observers are empty? - task.sendDetach(signal.intValue()); + task.sendDetach(signal); ((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted (task); return detached; } @@ -481,7 +481,7 @@ class LinuxPtraceTaskState extends State { { if (task.notifyForkedOffspring () > 0) return StartMainTask.detachBlocked; - task.sendDetach (0); + task.sendDetach(Signal.NONE); ((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted (task); return detached; } @@ -525,7 +525,7 @@ class LinuxPtraceTaskState extends State { if (task.blockers.size () == 0) { // Ya! All the blockers have been removed. - task.sendDetach (0); + task.sendDetach(Signal.NONE); ((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted (task); return detached; } @@ -821,7 +821,7 @@ class LinuxPtraceTaskState extends State { // or there are Instruction observers installed. if (bp != null || task.instructionObservers.numberOfObservers() > 0) { - task.sendStepInstruction(sig.intValue()); + task.sendStepInstruction(sig); return stepping; } else { // Always reset this, only the first step is important. @@ -829,10 +829,10 @@ class LinuxPtraceTaskState extends State { task.justStartedXXX = false; if (task.syscallObservers.numberOfObservers() > 0) { - task.sendSyscallContinue(sig.intValue()); + task.sendSyscallContinue(sig); return this; } else { - task.sendContinue(sig.intValue()); + task.sendContinue(sig); // If we were stepping, but no breakpoint step or instruction // observers are installed we are running again. return (this != stepping) ? this : running; @@ -1191,8 +1191,7 @@ class LinuxPtraceTaskState extends State { return blockedContinue(); } - else - { + else { // This is not a trap event generated by us. // When we just send a step to the task there are @@ -1207,7 +1206,7 @@ class LinuxPtraceTaskState extends State { // would be nice to use to support syscall tracking // during stepping, but it doesn't happen on all // architectures). - if ((task.sigSendXXX != 0 + if ((task.sigSendXXX != Signal.NONE || task.syscallSigretXXX || isa.hasExecutedSpuriousTrap(task))) return sendContinue(task, Signal.NONE); @@ -1284,7 +1283,7 @@ class LinuxPtraceTaskState extends State { logger.log (Level.FINE, "{0} handleStoppedEvent\n", task); // This is what should happen, the task stops, the // task is detached. - task.sendDetach (0); + task.sendDetach(Signal.NONE); ((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted (task); return detached; } @@ -1298,9 +1297,9 @@ class LinuxPtraceTaskState extends State { // observing this task, no need to notify anything of // this event. if (signal != null) - task.sendContinue(signal.intValue()); + task.sendContinue(signal); else - task.sendContinue(0); + task.sendContinue(Signal.NONE); return detaching; } LinuxPtraceTaskState handleTerminatedEvent (LinuxPtraceTask task, @@ -1330,7 +1329,7 @@ class LinuxPtraceTaskState extends State { // event behind it to bubble up. The owning proc will // have been informed of this via a separate code // path. - task.sendContinue (0); + task.sendContinue(Signal.NONE); return detaching; } LinuxPtraceTaskState handleClonedEvent (LinuxPtraceTask task, LinuxPtraceTask clone) @@ -1340,7 +1339,7 @@ class LinuxPtraceTaskState extends State { // the stop event behind it to bubble up. The owning // proc will have been informed of this via a separate // code path. - task.sendContinue (0); + task.sendContinue(Signal.NONE); // XXX: What about telling the proc that the clone now // exists? return detaching; @@ -1351,7 +1350,7 @@ class LinuxPtraceTaskState extends State { // Oops, the [main] task did an exec. Skip that event // allowing the stop event behind it to bubble up (I // hope there's a stop event?). - task.sendContinue (0); + task.sendContinue(Signal.NONE); return detaching; } LinuxPtraceTaskState handleSignaledEvent(LinuxPtraceTask task, @@ -1359,7 +1358,7 @@ class LinuxPtraceTaskState extends State { logger.log (Level.FINE, "{0} handleSignaledEvent\n", task); // Oops, the task got the wrong signal. Just continue // so that the stop event behind it can bubble up. - task.sendContinue(signal.intValue()); + task.sendContinue(signal); return detaching; } //XXX: why is this needed and why does it mean a syscallExit ? @@ -1367,7 +1366,7 @@ class LinuxPtraceTaskState extends State { { logger.log (Level.FINE, "{0} handleSyscalledEvent\n", task); task.notifySyscallExit (); - task.sendContinue (0); + task.sendContinue(Signal.NONE); return detaching; } }; @@ -1432,7 +1431,7 @@ class LinuxPtraceTaskState extends State { if (shouldRemoveObservers) task.removeObservers(); // XXX: Otherwise check that observers are empty? - task.sendDetach(sig.intValue()); + task.sendDetach(sig); ((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted (task); return detached; } diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index bdfbd7b..fe04ade 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,5 +1,14 @@ 2008-01-22 Andrew Cagney + * Ptrace.java (detach(int,int)): Make private. + (singleStep(int,Signal)): New. + (signalStep(int,int)): Make private. + (cont(int,Signal)): New. + (cont(int,int)): Make private. + (sysCall(int,Signal)): New. + (sysCall(int,int)): Make private. + * TestPtrace.java: Update. + * WaitBuilder.java (terminated(int,Signal,int,boolean)): Replace terminated(int,boolean,int,boolean). (exitEvent(int,Signal,int)): Replace exitEvent(int,boolean,int). diff --git a/frysk-sys/frysk/sys/Ptrace.java b/frysk-sys/frysk/sys/Ptrace.java index 4efc1e4..6daac63 100644 --- a/frysk-sys/frysk/sys/Ptrace.java +++ b/frysk-sys/frysk/sys/Ptrace.java @@ -59,10 +59,6 @@ public class Ptrace /** * Detach from the process specified by PID. */ - public static native void detach(int pid, int sig); - /** - * Detach from the process specified by PID. - */ public static void detach (ProcessIdentifier pid, int sig) { detach(pid.hashCode(), sig); @@ -71,23 +67,33 @@ public class Ptrace * Detach from the process specified by PID. */ public static void detach(int pid, Signal sig) { - detach (pid, sig.hashCode ()); + detach(pid, sig.intValue()); } + private static native void detach(int pid, int sig); /** * Single-step (instruction step) the process specified by PID, if * SIG is non-zero, deliver the signal. */ - public static native void singleStep(int pid, int sig); + public static void singleStep(int pid, Signal sig) { + singleStep(pid, sig.intValue()); + } + private static native void singleStep(int pid, int sig); /** * Continue the process specified by PID, if SIG is non-zero, * deliver the signal. */ - public static native void cont(int pid, int sig); + public static void cont(int pid, Signal sig) { + cont(pid, sig.intValue()); + } + private static native void cont(int pid, int sig); /** * Continue the process specified by PID, stopping when there is a * system-call; if SIG is non-zero deliver the signal. */ - public static native void sysCall(int pid, int sig); + public static void sysCall(int pid, Signal sig) { + sysCall(pid, sig.intValue()); + } + private static native void sysCall(int pid, int sig); /** * Fetch the auxilary information associated with PID's last WAIT * event. diff --git a/frysk-sys/frysk/sys/TestPtrace.java b/frysk-sys/frysk/sys/TestPtrace.java index 6254e7a..97c016f 100644 --- a/frysk-sys/frysk/sys/TestPtrace.java +++ b/frysk-sys/frysk/sys/TestPtrace.java @@ -82,7 +82,7 @@ public class TestPtrace } }); - Ptrace.singleStep(pid, 0); + Ptrace.singleStep(pid, Signal.NONE); Wait.waitAll (pid, new UnhandledWaitBuilder () { private final int id = pid; @@ -96,7 +96,7 @@ public class TestPtrace } }); - Ptrace.cont(pid, Signal.TERM.intValue()); + Ptrace.cont(pid, Signal.TERM); Wait.waitAll (pid, new UnhandledWaitBuilder () { private final int id = pid; @@ -143,7 +143,7 @@ public class TestPtrace } }); - Ptrace.detach (pid, 0); + Ptrace.detach(pid, Signal.NONE); Errno errno = null; try { Wait.waitAll (pid, new UnhandledWaitBuilder () hooks/post-receive -- frysk system monitor/debugger