From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5830 invoked by alias); 24 Jan 2008 20:50:51 -0000 Received: (qmail 5805 invoked by uid 367); 24 Jan 2008 20:50:51 -0000 Date: Thu, 24 Jan 2008 20:50:00 -0000 Message-ID: <20080124205051.5790.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Pass frysk.isa.signals.Signal up through updateSignaled. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: d755696b035c7caf2c63a44df84e687b9ce4aaf9 X-Git-Newrev: f44baadbb992bcba1baf30048084c1ed94b9d6a9 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/msg00118.txt.bz2 The branch, master has been updated via f44baadbb992bcba1baf30048084c1ed94b9d6a9 (commit) from d755696b035c7caf2c63a44df84e687b9ce4aaf9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit f44baadbb992bcba1baf30048084c1ed94b9d6a9 Author: Andrew Cagney Date: Thu Jan 24 15:49:02 2008 -0500 Pass frysk.isa.signals.Signal up through updateSignaled. frysk-core/frysk/proc/ChangeLog 2008-01-24 Andrew Cagney * TaskObserver.java (Signaled): Replace updateSignaled(Task,int) with updateSignaled(Task,Signal). * TestTaskSyscallObserver.java: Update. * StressAttachDetachSignaledTask.java: Update. * SyscallExaminer.java: Update. * TestMemory.java: Update. * TestSyscallSignal.java: Update. * TestTaskObserverDetach.java: Update. * TestTaskObserverInstructionSigReturn.java: Update. frysk-core/frysk/proc/live/ChangeLog 2008-01-24 Andrew Cagney * LinuxPtraceTask.java (notifySignaled(int)): Pass a frysk.isa.signals.Signal to the observers; return -1 when there are no observers. * TestTaskObserverCode.java: Update. * TestProcStopped.java: Update. frysk-core/frysk/stepping/ChangeLog 2008-01-24 Andrew Cagney * TestSteppingEngine.java: Update to match TaskObserver.Signaled.updateSignaled(Task,Signal). frysk-core/frysk/testbed/ChangeLog 2008-01-24 Andrew Cagney * DaemonBlockedAtSignal.java: Update to match TaskObserver.Signaled.updateSignaled(Task,Signal). frysk-core/frysk/util/ChangeLog 2008-01-24 Andrew Cagney * TestFCatch.java: Update to match TaskObserver.Signaled.updateSignaled(Task,Signal). * FCatch.java: Ditto. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/proc/ChangeLog | 10 +++ .../frysk/proc/StressAttachDetachSignaledTask.java | 10 ++- frysk-core/frysk/proc/SyscallExaminer.java | 8 +- frysk-core/frysk/proc/TaskObserver.java | 9 +-- frysk-core/frysk/proc/TestMemory.java | 12 ++-- frysk-core/frysk/proc/TestSyscallSignal.java | 7 +- frysk-core/frysk/proc/TestTaskObserverDetach.java | 15 ++--- .../proc/TestTaskObserverInstructionSigReturn.java | 18 +++--- frysk-core/frysk/proc/TestTaskSyscallObserver.java | 9 ++- frysk-core/frysk/proc/live/ChangeLog | 6 ++ frysk-core/frysk/proc/live/LinuxPtraceTask.java | 22 ++++-- frysk-core/frysk/proc/live/TestProcStopped.java | 6 +- .../frysk/proc/live/TestTaskObserverCode.java | 43 +++++------- frysk-core/frysk/stepping/ChangeLog | 5 ++ frysk-core/frysk/stepping/TestSteppingEngine.java | 6 +- frysk-core/frysk/testbed/ChangeLog | 3 + .../frysk/testbed/DaemonBlockedAtSignal.java | 5 +- frysk-core/frysk/util/ChangeLog | 4 + frysk-core/frysk/util/FCatch.java | 74 +++----------------- frysk-core/frysk/util/TestFCatch.java | 47 +++++-------- 20 files changed, 143 insertions(+), 176 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog index 991d561..066d32b 100644 --- a/frysk-core/frysk/proc/ChangeLog +++ b/frysk-core/frysk/proc/ChangeLog @@ -1,5 +1,15 @@ 2008-01-24 Andrew Cagney + * TaskObserver.java (Signaled): Replace updateSignaled(Task,int) + with updateSignaled(Task,Signal). + * TestTaskSyscallObserver.java: Update. + * StressAttachDetachSignaledTask.java: Update. + * SyscallExaminer.java: Update. + * TestMemory.java: Update. + * TestSyscallSignal.java: Update. + * TestTaskObserverDetach.java: Update. + * TestTaskObserverInstructionSigReturn.java: Update. + * Task.java: Update; Register moved to frysk.isa.registers. * LinuxCoreTask.java: Ditto. * TestCoreRegs.java: Ditto. diff --git a/frysk-core/frysk/proc/StressAttachDetachSignaledTask.java b/frysk-core/frysk/proc/StressAttachDetachSignaledTask.java index 73f0746..dec065c 100644 --- a/frysk-core/frysk/proc/StressAttachDetachSignaledTask.java +++ b/frysk-core/frysk/proc/StressAttachDetachSignaledTask.java @@ -182,10 +182,12 @@ public class StressAttachDetachSignaledTask SignalStorm(Action action) { this.action = action; } - public Action updateSignaled(Task task, int signal) { - if (Signal.TERM.equals(signal)) - fail("child aborted"); - assertTrue("signal HUP", Signal.HUP.equals(signal)); + public Action updateSignaled(Task task, + frysk.isa.signals.Signal signal) { + assertTrue("child did not abort", + signal.intValue() != Signal.TERM.intValue()); + assertEquals("signal HUP", Signal.HUP.intValue(), + signal.intValue()); task.requestDeleteSignaledObserver(this); return action; } diff --git a/frysk-core/frysk/proc/SyscallExaminer.java b/frysk-core/frysk/proc/SyscallExaminer.java index 12748e9..23ab4cf 100644 --- a/frysk-core/frysk/proc/SyscallExaminer.java +++ b/frysk-core/frysk/proc/SyscallExaminer.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 @@ -73,8 +73,7 @@ public class SyscallExaminer * missed (giving a mismatch of task created and deleted * notifications.) */ - class TaskEventObserver - extends TaskObserverBase + class TaskEventObserver extends TaskObserverBase implements TaskObserver.Syscalls, TaskObserver.Signaled { public Action updateSyscallEnter (Task task, Syscall syscall) { @@ -85,7 +84,8 @@ public class SyscallExaminer syscallState = 0; return Action.CONTINUE; } - public Action updateSignaled (Task task, int sig) { + public Action updateSignaled (Task task, + frysk.isa.signals.Signal sig) { stoppedTaskEventCount++; return Action.CONTINUE; } diff --git a/frysk-core/frysk/proc/TaskObserver.java b/frysk-core/frysk/proc/TaskObserver.java index 6b2aaaf..4222f6f 100644 --- a/frysk-core/frysk/proc/TaskObserver.java +++ b/frysk-core/frysk/proc/TaskObserver.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 @@ -40,6 +40,7 @@ package frysk.proc; import frysk.isa.syscalls.Syscall; +import frysk.isa.signals.Signal; /** * Observable events generated by a Task. @@ -139,9 +140,7 @@ public interface TaskObserver /** * Interface used to notify that a Task has a pending signal. */ - public interface Signaled - extends TaskObserver - { + public interface Signaled extends TaskObserver { /** * The SIGNAL is pending delivery to the task. Return * Action.BLOCK to block the task's further execution. @@ -155,7 +154,7 @@ public interface TaskObserver * observer to the blocker pool and then require explict * removal. */ - Action updateSignaled (Task task, int signal); + Action updateSignaled(Task task, Signal signal); } /** diff --git a/frysk-core/frysk/proc/TestMemory.java b/frysk-core/frysk/proc/TestMemory.java index cc16552..99e382f 100644 --- a/frysk-core/frysk/proc/TestMemory.java +++ b/frysk-core/frysk/proc/TestMemory.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 @@ -82,14 +82,12 @@ public class TestMemory // created, otherwize the creation of the very first task is // missed (giving a mismatch of task created and deleted // notifications.) - - class TaskEventObserver - extends TaskObserverBase + class TaskEventObserver extends TaskObserverBase implements TaskObserver.Signaled { - public Action updateSignaled (Task task, int sig) - { - if (Signal.SEGV.equals(sig)) { + public Action updateSignaled(Task task, + frysk.isa.signals.Signal sig) { + if (sig.intValue() == Signal.SEGV.intValue()) { ByteBuffer b; long memAddr; long addr; diff --git a/frysk-core/frysk/proc/TestSyscallSignal.java b/frysk-core/frysk/proc/TestSyscallSignal.java index 2655a72..5000765 100644 --- a/frysk-core/frysk/proc/TestSyscallSignal.java +++ b/frysk-core/frysk/proc/TestSyscallSignal.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2006, 2007, Red Hat Inc. +// Copyright 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 @@ -200,8 +200,9 @@ public class TestSyscallSignal this.sig = sig; } - public Action updateSignaled(Task task, int signal) { - if (sig.equals(signal)) + public Action updateSignaled(Task task, + frysk.isa.signals.Signal signal) { + if (signal.intValue() == sig.intValue()) triggered++; return Action.CONTINUE; } diff --git a/frysk-core/frysk/proc/TestTaskObserverDetach.java b/frysk-core/frysk/proc/TestTaskObserverDetach.java index 496e914..fcae88b 100644 --- a/frysk-core/frysk/proc/TestTaskObserverDetach.java +++ b/frysk-core/frysk/proc/TestTaskObserverDetach.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 @@ -61,19 +61,16 @@ public class TestTaskObserverDetach /** * Co-ordinates a detach in the middle of some over random event. */ - abstract class Detach - extends TaskObserverBase + abstract class Detach extends TaskObserverBase implements TaskObserver.Signaled { - public void addedTo (Object o) - { + public void addedTo (Object o) { Manager.eventLoop.requestStop (); } - public void deletedFrom (Object o) - { + public void deletedFrom (Object o) { } - public Action updateSignaled (Task task, int signal) - { + public Action updateSignaled (Task task, + frysk.isa.signals.Signal signal) { Manager.eventLoop.requestStop (); return Action.CONTINUE; } diff --git a/frysk-core/frysk/proc/TestTaskObserverInstructionSigReturn.java b/frysk-core/frysk/proc/TestTaskObserverInstructionSigReturn.java index 01f6e51..69c7a68 100644 --- a/frysk-core/frysk/proc/TestTaskObserverInstructionSigReturn.java +++ b/frysk-core/frysk/proc/TestTaskObserverInstructionSigReturn.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 @@ -44,11 +44,11 @@ import frysk.sys.Signal; import frysk.testbed.TestLib; public class TestTaskObserverInstructionSigReturn - extends TestLib - implements TaskObserver.Attached, - TaskObserver.Instruction, - TaskObserver.Terminating, - TaskObserver.Signaled + extends TestLib + implements TaskObserver.Attached, + TaskObserver.Instruction, + TaskObserver.Terminating, + TaskObserver.Signaled { // Counter for instruction observer hits. long hit; @@ -132,9 +132,9 @@ public class TestTaskObserverInstructionSigReturn } // TaskObserver.Signaled interface - public Action updateSignaled (Task task, int signal) { - if (!Signal.PROF.equals(signal)) - fail("Wrong signal received: " + signal); + public Action updateSignaled(Task task, frysk.isa.signals.Signal signal) { + assertEquals("correct signal", Signal.PROF.intValue(), + signal.intValue()); signaled++; if (signaled == 1) { Manager.eventLoop.requestStop(); diff --git a/frysk-core/frysk/proc/TestTaskSyscallObserver.java b/frysk-core/frysk/proc/TestTaskSyscallObserver.java index f54fd86..217d606 100644 --- a/frysk-core/frysk/proc/TestTaskSyscallObserver.java +++ b/frysk-core/frysk/proc/TestTaskSyscallObserver.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 @@ -477,7 +477,7 @@ public class TestTaskSyscallObserver // notifications.) class SyscallInterruptObserver extends SyscallObserver - implements TaskObserver.Signaled + implements TaskObserver.Signaled { SyscallInterruptObserver (Task task) { @@ -512,8 +512,9 @@ public class TestTaskSyscallObserver return Action.CONTINUE; } - public Action updateSignaled (Task task, int sig) { - if (Signal.USR1.equals(sig)) + public Action updateSignaled(Task task, + frysk.isa.signals.Signal sig) { + if (sig.intValue() == Signal.USR1.intValue()) sigusr1Count++; return Action.CONTINUE; } diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index 0c92ecf..309e655 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,5 +1,11 @@ 2008-01-24 Andrew Cagney + * LinuxPtraceTask.java (notifySignaled(int)): Pass a + frysk.isa.signals.Signal to the observers; return -1 when there + are no observers. + * TestTaskObserverCode.java: Update. + * TestProcStopped.java: Update. + * IsaPowerPC.java: Update; Register moved to frysk.isa.registers. * LinuxIA32.java: Ditto. * LinuxPPC32.java: Ditto. diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java index 3786865..3dfe3f5 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java @@ -795,16 +795,24 @@ public class LinuxPtraceTask extends LiveTask { private final TaskObservable signaledObservers = new TaskObservable(this); /** * Notify all Signaled observers of the signal. Return the number - * of blocking observers. + * of blocking observers. Return -1 if there are no observers. */ int notifySignaled(int sig) { - logger.log(Level.FINE, "{0} notifySignaled(int)\n", this); - for (Iterator i = signaledObservers.iterator(); i.hasNext();) { - TaskObserver.Signaled observer = (TaskObserver.Signaled) i.next(); - if (observer.updateSignaled(this, sig) == Action.BLOCK) - blockers.add(observer); + frysk.isa.signals.Signal signal = getSignalTable().get(sig); + logger.log(Level.FINE, "{0} notifySignaled {1}\n", + new Object[] { this, signal }); + if (signaledObservers.numberOfObservers() > 0) { + for (Iterator i = signaledObservers.iterator(); i.hasNext();) { + TaskObserver.Signaled observer + = (TaskObserver.Signaled) i.next(); + if (observer.updateSignaled(this, signal) == Action.BLOCK) + blockers.add(observer); + } + return blockers.size(); + } else { + return -1; } - return blockers.size(); + } /** * Add TaskObserver.Signaled to the TaskObserver pool. diff --git a/frysk-core/frysk/proc/live/TestProcStopped.java b/frysk-core/frysk/proc/live/TestProcStopped.java index 773cac2..13d0773 100644 --- a/frysk-core/frysk/proc/live/TestProcStopped.java +++ b/frysk-core/frysk/proc/live/TestProcStopped.java @@ -172,8 +172,10 @@ public class TestProcStopped extends TestLib { public void addedTo(Object o) { Signal.CONT.tkill(((Task)o).getTid()); } - public Action updateSignaled(Task task, int signal) { - assertTrue("signal", Signal.TERM.equals(signal)); + public Action updateSignaled(Task task, + frysk.isa.signals.Signal signal) { + assertEquals("signal", Signal.TERM.intValue(), + signal.intValue()); Manager.eventLoop.requestStop(); return Action.CONTINUE; } diff --git a/frysk-core/frysk/proc/live/TestTaskObserverCode.java b/frysk-core/frysk/proc/live/TestTaskObserverCode.java index 6a456b0..68c28b8 100644 --- a/frysk-core/frysk/proc/live/TestTaskObserverCode.java +++ b/frysk-core/frysk/proc/live/TestTaskObserverCode.java @@ -1123,33 +1123,24 @@ public class TestTaskObserverCode extends TestLib } - static class SignaledObserver - implements TaskObserver.Signaled - { - int sig; - - public Action updateSignaled (Task task, int signal) - { - this.sig = signal; - Manager.eventLoop.requestStop(); - return Action.BLOCK; - } - - public void addFailed(Object observable, Throwable w) - { - fail(w.toString()); - } - - public void addedTo(Object observable) - { - Manager.eventLoop.requestStop(); - } - - public void deletedFrom(Object observable) - { - // Ignored + static class SignaledObserver implements TaskObserver.Signaled { + int sig; + public Action updateSignaled (Task task, + frysk.isa.signals.Signal signal) { + this.sig = signal.intValue(); + Manager.eventLoop.requestStop(); + return Action.BLOCK; + } + public void addFailed(Object observable, Throwable w) { + fail(w.toString()); + } + public void addedTo(Object observable) { + Manager.eventLoop.requestStop(); + } + public void deletedFrom(Object observable) { + // Ignored + } } - } class TerminatingObserver implements TaskObserver.Terminating diff --git a/frysk-core/frysk/stepping/ChangeLog b/frysk-core/frysk/stepping/ChangeLog index da4fbd0..d0deeff 100644 --- a/frysk-core/frysk/stepping/ChangeLog +++ b/frysk-core/frysk/stepping/ChangeLog @@ -1,3 +1,8 @@ +2008-01-24 Andrew Cagney + + * TestSteppingEngine.java: Update to match + TaskObserver.Signaled.updateSignaled(Task,Signal). + 2008-01-23 Andrew Cagney * TestStepping.java (testStepGoto()): Use Integer.toString(int) diff --git a/frysk-core/frysk/stepping/TestSteppingEngine.java b/frysk-core/frysk/stepping/TestSteppingEngine.java index d8aa0c5..2525397 100644 --- a/frysk-core/frysk/stepping/TestSteppingEngine.java +++ b/frysk-core/frysk/stepping/TestSteppingEngine.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 @@ -643,8 +643,8 @@ public class TestSteppingEngine extends TestLib { class SignalObserver implements TaskObserver.Signaled { - public Action updateSignaled(Task task, int sig) { - + public Action updateSignaled(Task task, + frysk.isa.signals.Signal sig) { return Action.CONTINUE; } diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog index fe1b168..6879876 100644 --- a/frysk-core/frysk/testbed/ChangeLog +++ b/frysk-core/frysk/testbed/ChangeLog @@ -1,5 +1,8 @@ 2008-01-24 Andrew Cagney + * DaemonBlockedAtSignal.java: Update to match + TaskObserver.Signaled.updateSignaled(Task,Signal). + * CorefileFactory.java: Rename CoreFileAtSignal.java. (constructCoreAtSignal(String)): Rename constructCore(String). (constructCoreAtSignal(File)): Rename constructCore(File). diff --git a/frysk-core/frysk/testbed/DaemonBlockedAtSignal.java b/frysk-core/frysk/testbed/DaemonBlockedAtSignal.java index c44e319..48e0a4f 100644 --- a/frysk-core/frysk/testbed/DaemonBlockedAtSignal.java +++ b/frysk-core/frysk/testbed/DaemonBlockedAtSignal.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 @@ -39,6 +39,7 @@ package frysk.testbed; +import frysk.isa.signals.Signal; import frysk.proc.Action; import frysk.proc.TaskObserver; import frysk.proc.Task; @@ -56,7 +57,7 @@ public class DaemonBlockedAtSignal { extends TaskObserverBase implements TaskObserver.Signaled, TaskObserver.Terminated { - public Action updateSignaled (Task task, int value) { + public Action updateSignaled(Task task, Signal value) { Manager.eventLoop.requestStop(); return Action.BLOCK; } diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog index 07f2bb1..4a578ed 100644 --- a/frysk-core/frysk/util/ChangeLog +++ b/frysk-core/frysk/util/ChangeLog @@ -1,5 +1,9 @@ 2008-01-24 Andrew Cagney + * TestFCatch.java: Update to match + TaskObserver.Signaled.updateSignaled(Task,Signal). + * FCatch.java: Ditto. + * TestCommandlineParser.java: Update; CoreFileAtSignal renamed to CorefileFactory. diff --git a/frysk-core/frysk/util/FCatch.java b/frysk-core/frysk/util/FCatch.java index ce10935..f165f7d 100644 --- a/frysk-core/frysk/util/FCatch.java +++ b/frysk-core/frysk/util/FCatch.java hooks/post-receive -- frysk system monitor/debugger