public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Pass Signal, instead of int sig, to Ptrace.cont et.al. Date: Tue, 22 Jan 2008 19:59:00 -0000 [thread overview] Message-ID: <20080122195930.14321.qmail@sourceware.org> (raw) 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 <cagney@redhat.com> 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 <cagney@redhat.com> * 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 <cagney@redhat.com> * 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 <cagney@redhat.com> + * 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 <cagney@redhat.com> + * 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
reply other threads:[~2008-01-22 19:59 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080122195930.14321.qmail@sourceware.org \ --to=cagney@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).