From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1268 invoked by alias); 23 Jan 2008 21:01:39 -0000 Received: (qmail 1234 invoked by uid 367); 23 Jan 2008 21:01:38 -0000 Date: Wed, 23 Jan 2008 21:01:00 -0000 Message-ID: <20080123210138.1219.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Narrow frysk.sys.Signal interface; add Signal.toHostStringFIXME(int). X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 60417d494d83e0ab894361b57493198a205c9d61 X-Git-Newrev: 117422ccf61c585a3f3abe6ac091ffa59f372d9b 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/msg00107.txt.bz2 The branch, master has been updated via 117422ccf61c585a3f3abe6ac091ffa59f372d9b (commit) via 7b85dda145211729181ce6f45d3decb6b43a9f74 (commit) from 60417d494d83e0ab894361b57493198a205c9d61 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 117422ccf61c585a3f3abe6ac091ffa59f372d9b Merge: 7b85dda145211729181ce6f45d3decb6b43a9f74 60417d494d83e0ab894361b57493198a205c9d61 Author: Andrew Cagney Date: Wed Jan 23 16:00:17 2008 -0500 Narrow frysk.sys.Signal interface; add Signal.toHostStringFIXME(int). commit 7b85dda145211729181ce6f45d3decb6b43a9f74 Author: Andrew Cagney Date: Wed Jan 23 15:59:54 2008 -0500 Narrow frysk.sys.Signal interface; add Signal.toHostStringFIXME. frysk-core/frysk/debuginfo/ChangeLog 2008-01-23 Andrew Cagney * TestDebugInfoStackTrace.java (testBacktrace()): Use Integer.toString(int) not Signal.toString(). (testThreadedBacktrace()): Ditto. (testFramePushing()): Ditto. (testFramePopping()): Ditto. frysk-core/frysk/event/ChangeLog 2008-01-23 Andrew Cagney * WaitEventLoop.java: Use Signal.toString(). frysk-core/frysk/ftrace/ChangeLog 2008-01-23 Andrew Cagney * Ftrace.java (MyTerminatedObserver): Replace Signal.intValue(int) and Signal.toPrint() with Signal.toHostStringFIXME(int). frysk-core/frysk/stepping/ChangeLog 2008-01-23 Andrew Cagney * TestStepping.java (testStepGoto()): Use Integer.toString(int) not Signal.toString(). (testStepSigRaise()): Ditto. (testStepSigLongJmp()): Ditto. frysk-gui/frysk/gui/monitor/ChangeLog 2008-01-23 Andrew Cagney * observers/TaskSignaledObserver.java: Replace Signal.valueOf(int) and Signal.toPrint() with Signal.toHostStringFIXME(int). * observers/TaskTerminatingObserver.java: Ditto. frysk-sys/frysk/sys/ChangeLog 2008-01-23 Andrew Cagney * Signal.java-sh (valueOf(int)): Make package-private. (Signal(int)): New constructor. (toString()): Dump both the name and value. (getHostSignalSet()): New. (toHostStringFIXME(int)): New. (stringValue()): Delete. (toPrint()): Delete. * TestSignal.java (testGaps()): New. * SignalSet.java (add(Signal[])): Ignore null entries. (toArray()): Implement in java. * cni/SignalSet.cxx (JArray): Delete. * UnhandledWaitBuilder.java: Update. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/debuginfo/ChangeLog | 8 ++ .../frysk/debuginfo/TestDebugInfoStackTrace.java | 21 ++-- frysk-core/frysk/event/ChangeLog | 4 + frysk-core/frysk/event/WaitEventLoop.java | 2 +- frysk-core/frysk/ftrace/ChangeLog | 5 + frysk-core/frysk/ftrace/Ftrace.java | 4 +- frysk-core/frysk/stepping/ChangeLog | 7 ++ frysk-core/frysk/stepping/TestStepping.java | 14 ++-- frysk-gui/frysk/gui/monitor/ChangeLog | 6 + .../monitor/observers/TaskSignaledObserver.java | 8 +- .../monitor/observers/TaskTerminatingObserver.java | 6 +- frysk-sys/frysk/sys/ChangeLog | 15 +++ frysk-sys/frysk/sys/Signal.java-sh | 112 +++++++++++-------- frysk-sys/frysk/sys/SignalSet.java | 27 ++++-- frysk-sys/frysk/sys/TestSignal.java | 25 ++++- frysk-sys/frysk/sys/UnhandledWaitBuilder.java | 2 +- frysk-sys/frysk/sys/cni/SignalSet.cxx | 19 +--- 17 files changed, 179 insertions(+), 106 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog index 55436de..9c69266 100644 --- a/frysk-core/frysk/debuginfo/ChangeLog +++ b/frysk-core/frysk/debuginfo/ChangeLog @@ -1,3 +1,11 @@ +2008-01-23 Andrew Cagney + + * TestDebugInfoStackTrace.java (testBacktrace()): Use + Integer.toString(int) not Signal.toString(). + (testThreadedBacktrace()): Ditto. + (testFramePushing()): Ditto. + (testFramePopping()): Ditto. + 2008-01-23 Mark Wielaard * TestFrameDebugInfo.java: Add NoDebug and NoEH variants of diff --git a/frysk-core/frysk/debuginfo/TestDebugInfoStackTrace.java b/frysk-core/frysk/debuginfo/TestDebugInfoStackTrace.java index 2854d88..b95cdd0 100644 --- a/frysk-core/frysk/debuginfo/TestDebugInfoStackTrace.java +++ b/frysk-core/frysk/debuginfo/TestDebugInfoStackTrace.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2005, 2006, 2007, Red Hat Inc. +// Copyright 2005, 2006, 2007, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -98,8 +98,8 @@ public class TestDebugInfoStackTrace SynchronizedOffspring process = new SynchronizedOffspring (Signal.USR1, new String[] { getExecPath ("funit-rt-looper"), - "" + Pid.get (), - Signal.USR1.toString() + Integer.toString(Pid.get ()), + Integer.toString(Signal.USR1.intValue()) }); myTask = process.findTaskUsingRefresh(true); assertNotNull(myTask); @@ -205,8 +205,7 @@ public class TestDebugInfoStackTrace Manager.eventLoop.requestStop(); } - public synchronized void testThreadedBacktrace () - { + public synchronized void testThreadedBacktrace() { // Backtraces only work on x86 and x86_64 for now. if (unresolvedOnPPC(3277)) return; @@ -217,8 +216,8 @@ public class TestDebugInfoStackTrace SynchronizedOffspring process = new SynchronizedOffspring (Signal.USR1, new String[] { getExecPath ("funit-rt-threader"), - "" + Pid.get (), - Signal.USR1.toString() + Integer.toString(Pid.get ()), + Integer.toString(Signal.USR1.intValue()) }); myTask = process.findTaskUsingRefresh(true); @@ -267,8 +266,8 @@ public class TestDebugInfoStackTrace SynchronizedOffspring process = new SynchronizedOffspring (Signal.USR1, new String[] { getExecPath ("funit-rt-stepper"), - "" + Pid.get (), - Signal.USR1.toString() + Integer.toString(Pid.get()), + Integer.toString(Signal.USR1.intValue()) }); myTask = process.findTaskUsingRefresh(true); myProc = myTask.getProc(); @@ -305,8 +304,8 @@ public class TestDebugInfoStackTrace SynchronizedOffspring process = new SynchronizedOffspring (Signal.USR1, new String[] { getExecPath ("funit-rt-stepper"), - "" + Pid.get (), - Signal.USR1.toString() + Integer.toString(Pid.get ()), + Integer.toString(Signal.USR1.intValue()) }); myTask = process.findTaskUsingRefresh(true); myProc = myTask.getProc(); diff --git a/frysk-core/frysk/event/ChangeLog b/frysk-core/frysk/event/ChangeLog index 478a02f..491323f 100644 --- a/frysk-core/frysk/event/ChangeLog +++ b/frysk-core/frysk/event/ChangeLog @@ -1,3 +1,7 @@ +2008-01-23 Andrew Cagney + + * WaitEventLoop.java: Use Signal.toString(). + 2007-12-04 Andrew Cagney Merge frysk.sys.Sig into frysk.sys.Signal. diff --git a/frysk-core/frysk/event/WaitEventLoop.java b/frysk-core/frysk/event/WaitEventLoop.java index 9898d25..6a11709 100644 --- a/frysk-core/frysk/event/WaitEventLoop.java +++ b/frysk-core/frysk/event/WaitEventLoop.java @@ -74,7 +74,7 @@ class WaitEventLoop { if (logger.isLoggable(Level.FINEST)) { - Object[] logArgs = { this, sig.toPrint() }; + Object[] logArgs = { this, sig.toString() }; logger.log (Level.FINEST, "{0} PollBuilder.signal {1}\n", logArgs); } diff --git a/frysk-core/frysk/ftrace/ChangeLog b/frysk-core/frysk/ftrace/ChangeLog index 28a2af3..e217a3f 100644 --- a/frysk-core/frysk/ftrace/ChangeLog +++ b/frysk-core/frysk/ftrace/ChangeLog @@ -1,3 +1,8 @@ +2008-01-23 Andrew Cagney + + * Ftrace.java (MyTerminatedObserver): Replace Signal.intValue(int) + and Signal.toPrint() with Signal.toHostStringFIXME(int). + 2008-01-16 Andrew Cagney * Ltrace.java: Update; Task.blockers made private; use workaround. diff --git a/frysk-core/frysk/ftrace/Ftrace.java b/frysk-core/frysk/ftrace/Ftrace.java index bda1595..c44fc7a 100644 --- a/frysk-core/frysk/ftrace/Ftrace.java +++ b/frysk-core/frysk/ftrace/Ftrace.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2005, 2006, 2007, Red Hat Inc. +// Copyright 2005, 2006, 2007, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -554,7 +554,7 @@ public class Ftrace int value) { if (signal) - reporter.eventSingle(task, "killed by " + Signal.valueOf(value).toPrint()); + reporter.eventSingle(task, "killed by " + Signal.toHostStringFIXME(value)); else reporter.eventSingle(task, "exited with status " + value); diff --git a/frysk-core/frysk/stepping/ChangeLog b/frysk-core/frysk/stepping/ChangeLog index c263c88..da4fbd0 100644 --- a/frysk-core/frysk/stepping/ChangeLog +++ b/frysk-core/frysk/stepping/ChangeLog @@ -1,3 +1,10 @@ +2008-01-23 Andrew Cagney + + * TestStepping.java (testStepGoto()): Use Integer.toString(int) + not Signal.toString(). + (testStepSigRaise()): Ditto. + (testStepSigLongJmp()): Ditto. + 2008-01-17 Rick Moseley * SteppingEngine.java: Test for valid proc before proceeding. diff --git a/frysk-core/frysk/stepping/TestStepping.java b/frysk-core/frysk/stepping/TestStepping.java index 3c6dd10..6ea8378 100644 --- a/frysk-core/frysk/stepping/TestStepping.java +++ b/frysk-core/frysk/stepping/TestStepping.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2007, Red Hat Inc. +// Copyright 2007, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -323,8 +323,8 @@ public class TestStepping extends TestLib { = new SynchronizedOffspring(Signal.USR1, new String[] { getExecPath("funit-rt-siglongjmp"), - "" + Pid.get(), - Signal.USR1.toString() + Integer.toString(Pid.get()), + Integer.toString(Signal.USR1.intValue()) }); this.testStarted = false; @@ -370,8 +370,8 @@ public class TestStepping extends TestLib { = new SynchronizedOffspring(Signal.USR1, new String[] { getExecPath("funit-rt-goto"), - "" + Pid.get(), - Signal.USR1.toString() + Integer.toString(Pid.get()), + Integer.toString(Signal.USR1.intValue()) }); this.testStarted = false; @@ -420,8 +420,8 @@ public class TestStepping extends TestLib { = new SynchronizedOffspring(Signal.USR1, new String[] { getExecPath("funit-rt-sigraise"), - "" + Pid.get(), - Signal.USR1.toString() + Integer.toString(Pid.get()), + Integer.toString(Signal.USR1.intValue()) }); this.testStarted = false; diff --git a/frysk-gui/frysk/gui/monitor/ChangeLog b/frysk-gui/frysk/gui/monitor/ChangeLog index e4b5074..88325b8 100644 --- a/frysk-gui/frysk/gui/monitor/ChangeLog +++ b/frysk-gui/frysk/gui/monitor/ChangeLog @@ -1,3 +1,9 @@ +2008-01-23 Andrew Cagney + + * observers/TaskSignaledObserver.java: Replace Signal.valueOf(int) + and Signal.toPrint() with Signal.toHostStringFIXME(int). + * observers/TaskTerminatingObserver.java: Ditto. + 2007-12-28 Andrew Cagney frysk.proc.TaskObserver.Syscall renamed to .Syscalls. diff --git a/frysk-gui/frysk/gui/monitor/observers/TaskSignaledObserver.java b/frysk-gui/frysk/gui/monitor/observers/TaskSignaledObserver.java index a093794..c9c8854 100644 --- a/frysk-gui/frysk/gui/monitor/observers/TaskSignaledObserver.java +++ b/frysk-gui/frysk/gui/monitor/observers/TaskSignaledObserver.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2006, Red Hat Inc. +// Copyright 2006, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -123,7 +123,7 @@ public class TaskSignaledObserver extends TaskObserverRoot implements private void bottomHalf(final Task task, final int signal) { setInfo(getName() + ": " + "PID: " + task.getProc().getPid() + " TID: " + task.getTid() + " Event: has pending signal: " - + Signal.valueOf(signal).toPrint() + + Signal.toHostStringFIXME(signal) + " Host: " + Manager.host.getName()); if (runFilters(task, signal)) { this.runActions(task, signal); @@ -137,9 +137,9 @@ public class TaskSignaledObserver extends TaskObserverRoot implements private void runActions(final Task task, int signal) { // XXX: This is the host and not target signal - Event event = new Event("signaled " + Signal.valueOf(signal).toPrint(), + Event event = new Event("signaled " + Signal.toHostStringFIXME(signal), "task recieved signal " - + Signal.valueOf(signal).toPrint(), + + Signal.toHostStringFIXME(signal), GuiTask.GuiTaskFactory.getGuiTask(task), this); super.runActions(); taskActionPoint.runActions(task, this, event); diff --git a/frysk-gui/frysk/gui/monitor/observers/TaskTerminatingObserver.java b/frysk-gui/frysk/gui/monitor/observers/TaskTerminatingObserver.java index d12e80f..48dd4a5 100644 --- a/frysk-gui/frysk/gui/monitor/observers/TaskTerminatingObserver.java +++ b/frysk-gui/frysk/gui/monitor/observers/TaskTerminatingObserver.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2005, Red Hat Inc. +// Copyright 2005, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -154,8 +154,8 @@ public class TaskTerminatingObserver if (signal) { // XXX: This is the host, and not the target signal :-( - name += " sig " + Signal.valueOf(value).toPrint(); - tooltip += " with signal " + Signal.valueOf(value).toPrint(); + name += " sig " + Signal.toHostStringFIXME(value); + tooltip += " with signal " + Signal.toHostStringFIXME(value); } EventManager.theManager.addEvent(event); } diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index fe04ade..b233dc8 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,3 +1,18 @@ +2008-01-23 Andrew Cagney + + * Signal.java-sh (valueOf(int)): Make package-private. + (Signal(int)): New constructor. + (toString()): Dump both the name and value. + (getHostSignalSet()): New. + (toHostStringFIXME(int)): New. + (stringValue()): Delete. + (toPrint()): Delete. + * TestSignal.java (testGaps()): New. + * SignalSet.java (add(Signal[])): Ignore null entries. + (toArray()): Implement in java. + * cni/SignalSet.cxx (JArray): Delete. + * UnhandledWaitBuilder.java: Update. + 2008-01-22 Andrew Cagney * Ptrace.java (detach(int,int)): Make private. diff --git a/frysk-sys/frysk/sys/Signal.java-sh b/frysk-sys/frysk/sys/Signal.java-sh index 0f433a9..6c91559 100644 --- a/frysk-sys/frysk/sys/Signal.java-sh +++ b/frysk-sys/frysk/sys/Signal.java-sh @@ -60,50 +60,46 @@ public class Signal implements Comparable { this.sig = sig; this.name = name; } + private Signal(int sig) { + this.sig = sig; + this.name = "SIG" + sig; + } /** - * Dump the signal to a string. + * Dump the signal to a string. The format is "NAME(VALUE)". */ public String toString() { - return Integer.toString(hashCode()); - // return name + "(" + hashCode() + ")"; + return name + "(" + this.intValue() + ")"; } /** - * Return the signal's numeric value as an integer. - */ - public int intValue() { - return hashCode(); - } - /** - * Return the signal's numeric value as a String. + * Hash on the Signal's intValue. */ - public String stringValue() { - return Integer.toString(hashCode()); + public int hashCode() { + return intValue(); } + /** - * Return the Signal in a form suitable for printing to the user. + * Return the signal's numeric value as an integer. */ - public String toPrint() { - return name; + public int intValue() { + return sig; } /** - * Comparison operations; use hashCode() so that sub-classing can - * provide a scratch value. + * Comparison operations; use intValue() so that sub-classing can + * provide a scratch int value. */ public boolean equals(Object o) { - return (o instanceof Signal && o.hashCode() == this.hashCode()); + return ((o instanceof Signal) + && ((Signal) o).intValue() == this.intValue()); } public boolean equals(int sig) { - return this.sig == sig; - } - public int hashCode() { - return sig; + return this.intValue() == sig; } public int compareTo(Object o) { Signal rhs = (Signal)o; // exception ok - return rhs.sig - this.sig; + return rhs.intValue() - this.intValue(); } /** @@ -116,20 +112,20 @@ public class Signal implements Comparable { * Deliver SIG to process PID. */ public void kill(ProcessIdentifier pid) { - kill(pid.intValue(), this.sig); + kill(pid.intValue(), this.intValue()); } private static native void kill(int pid, int signum); /** * Deliver SIGNAL to task (or thread) LWP. */ public final void tkill(int lwp) { - tkill(lwp, sig); + tkill(lwp, this.intValue()); } /** * Deliver SIGNAL to task (or thread) LWP. */ public final void tkill(ProcessIdentifier lwp) { - tkill(lwp.intValue(), this.sig); + tkill(lwp.intValue(), this.intValue()); } public static native void tkill(int lwp, int signum); @@ -143,33 +139,52 @@ public class Signal implements Comparable { private static native void drain(int signum); /** - * Given an integer, return the corresponding signal. + * Return the known host signals as a SignalSet. + */ + public static SignalSet getHostSignalSet() { + return new SignalSet(signals); + } + + /** + * Return the host signal as a string. + * + * For frysk what you instead want is a conversion from the + * integer to the target's string representation. + * See the numbering described in signal(7) for the problems. + */ + public static String toHostStringFIXME(int signal) { + return valueOf(signal).toString(); + } + + /** + * Given an integer, return the corresponding host signal. * If the signal is unknown, make one up. + * + * This is method is package-private. If you need to convert + * a target signal to a Signal object, see frysk.proc.Signal. */ - public static Signal valueOf(int signum) { + static Signal valueOf(int signum) { if (signum < 0) { throw new NullPointerException("invalid signal: " + signum); } else if (signum < signals.length) { Signal signal = signals[signum]; - if (signal == null) - throw new NullPointerException("invalid signal: " + signum); - else + if (signal != null) return signal; - } else if (signum >= rtMin() && signum <= rtMax()) { - return rtSignals[signum - rtMin()]; - } else { - // Fudge up a signal; beter than throwing an exception. - synchronized (unknownSignals) { - scratchSignal.signum = signum; - Signal signal = (Signal)unknownSignals.get(scratchSignal); - if (signal != null) - return signal; - signal = new Signal(signum, "SIG" + signum); - unknownSignals.put(signal, signal); + // Fall through to bottom which will make up a signal. + } + // Unknown signal, fudge one up; beter than throwing + // an exception. + synchronized (unknownSignals) { + scratchSignal.signum = signum; + Signal signal = (Signal)unknownSignals.get(scratchSignal); + if (signal != null) return signal; - } + signal = new Signal(signum); + unknownSignals.put(signal, signal); + return signal; } } + /** * A scratch value for searching the signal table. */ @@ -178,7 +193,7 @@ public class Signal implements Comparable { super(0, ""); } int signum; - public int hashCode() { + public int intValue() { return signum; } } @@ -192,8 +207,8 @@ public class Signal implements Comparable { private static native int nsig(); private static native int rtMin(); private static native int rtMax(); + // Note: nsig() private static final Signal[] signals = new Signal[nsig()]; - private static final Signal[] rtSignals = new Signal[rtMax()-rtMin()+1]; /** * Create a signal, also enter the signal into the signals table * for later retrieval. @@ -222,8 +237,11 @@ done cat <