public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: pmachata@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Test both mapping guard kinds Date: Fri, 16 Nov 2007 14:13:00 -0000 [thread overview] Message-ID: <20071116141333.26127.qmail@sourceware.org> (raw) The branch, master has been updated via 61c0f2d4090b4e683195cd530fb9ce4eef33c9b6 (commit) from 91ea7094b8352cb974509d5790a80c96a0de648e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 61c0f2d4090b4e683195cd530fb9ce4eef33c9b6 Author: Petr Machata <pmachata@redhat.com> Date: Fri Nov 16 15:08:59 2007 +0100 Test both mapping guard kinds * ... and some cleanup. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/ftrace/ChangeLog | 10 ++++++++++ frysk-core/frysk/ftrace/Ltrace.java | 12 ++++-------- frysk-core/frysk/ftrace/MappingGuard.java | 18 +++++++++++------- frysk-core/frysk/ftrace/MemoryMapping.java | 7 ++++--- frysk-core/frysk/ftrace/TestLtrace.java | 20 +++++++++++++++++++- 5 files changed, 48 insertions(+), 19 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/ftrace/ChangeLog b/frysk-core/frysk/ftrace/ChangeLog index def9b9b..976a9b0 100644 --- a/frysk-core/frysk/ftrace/ChangeLog +++ b/frysk-core/frysk/ftrace/ChangeLog @@ -1,3 +1,13 @@ +2007-11-16 Petr Machata <pmachata@redhat.com> + + * Ltrace.java: Cleanups + * MappingGuard.java (enableSyscallObserver): New static field. + (enableDebugstateObserver): dtto + (MappingGuardB.notifyObservers): add to blockers once for each + time the observer was registered. + * MemoryMapping.java (Part.toString): Improved. + * TestLtrace.java: use new fields to test both mapping guards. + 2007-11-14 Petr Machata <pmachata@redhat.com> * ChangeLog: remove paths from my previous entry diff --git a/frysk-core/frysk/ftrace/Ltrace.java b/frysk-core/frysk/ftrace/Ltrace.java index e3e4bfc..48196e0 100644 --- a/frysk-core/frysk/ftrace/Ltrace.java +++ b/frysk-core/frysk/ftrace/Ltrace.java @@ -224,8 +224,9 @@ public class Ltrace task.requestAddSyscallObserver(ltraceTaskObserver); if (traceSignals) task.requestAddSignaledObserver(ltraceTaskObserver); + MappingGuard.requestAddMappingObserver(task, ltraceTaskObserver); // There are no code observers right now. We add them as files - // get mapped to process. + // get mapped to the process. } /** @@ -291,7 +292,7 @@ public class Ltrace public Action updateAttached (Task task) { addProc(task.getProc()); - ltraceTaskObserver.updateAttached(task, null); + ltraceTaskObserver.updateAttached(task); task.requestUnblock(this); return Action.BLOCK; } @@ -576,7 +577,7 @@ public class Ltrace // --- attached/terminated/terminating observers --- // ------------------------------------------------- - public void updateAttached(Task task, TaskObserver blocker) + public Action updateAttached(Task task) { // Per-task initialization. long pc = task.getIsa().pc(task); @@ -590,11 +591,6 @@ public class Ltrace this.checkMapUnmapUpdates(task, false); MappingGuard.requestAddMappingObserver(task, this); - } - - public Action updateAttached (Task task) - { - updateAttached(task, this); return Action.BLOCK; } diff --git a/frysk-core/frysk/ftrace/MappingGuard.java b/frysk-core/frysk/ftrace/MappingGuard.java index f0af63e..4de4210 100644 --- a/frysk-core/frysk/ftrace/MappingGuard.java +++ b/frysk-core/frysk/ftrace/MappingGuard.java @@ -56,6 +56,8 @@ import frysk.proc.TaskObserver; */ class MappingGuard { + /*package-private*/ static boolean enableSyscallObserver = true; + /*package-private*/ static boolean enableDebugstateObserver = true; protected static final Logger logger = Logger.getLogger(FtraceLogger.LOGGER_ID); // HashMap<Task, MappingGuardB> @@ -114,14 +116,11 @@ class MappingGuard protected void notifyObservers(Task task) { for (Iterator it = observers.keySet().iterator(); it.hasNext();) { MappingObserver ob = (MappingObserver)it.next(); - boolean block = false; Integer i = (Integer)observers.get(ob); int v = i.intValue(); for (int j = 0; j < v; ++j) if (ob.updateMapping(task) == Action.BLOCK) - block = true; - if (block) - task.blockers.add(ob); + task.blockers.add(ob); } } } @@ -283,10 +282,15 @@ class MappingGuard synchronized (MappingGuard.class) { guard = (MappingGuardB)guardsForTask.get(task); if (guard == null) { - guard = setupDebugStateObserver(task); - if (guard == null) + if (enableDebugstateObserver) + guard = setupDebugStateObserver(task); + if (guard == null && enableSyscallObserver) guard = new SyscallMappingGuard(task); - guardsForTask.put(task, guard); + + if (guard != null) + guardsForTask.put(task, guard); + else + observer.addFailed(task, new UnsupportedOperationException("Couldn't initialize mapping guard.")); } } guard.addObserver(observer); diff --git a/frysk-core/frysk/ftrace/MemoryMapping.java b/frysk-core/frysk/ftrace/MemoryMapping.java index b191205..5742d6a 100644 --- a/frysk-core/frysk/ftrace/MemoryMapping.java +++ b/frysk-core/frysk/ftrace/MemoryMapping.java @@ -87,12 +87,13 @@ class MemoryMapping public String toString() { - return "<" + addressLow + ".." + addressHigh - + ": offset=" + offset + "; perm=" + return "<0x" + Long.toHexString(addressLow) + + "..0x" + Long.toHexString(addressHigh) + + ": offset=0x" + Long.toHexString(offset) + "; perm=`" + (permRead ? 'r' : '-') + (permWrite ? 'w' : '-') + (permExecute ? 'x' : '-') - + '>'; + + "'>"; } } diff --git a/frysk-core/frysk/ftrace/TestLtrace.java b/frysk-core/frysk/ftrace/TestLtrace.java index f5efc39..3259cea 100644 --- a/frysk-core/frysk/ftrace/TestLtrace.java +++ b/frysk-core/frysk/ftrace/TestLtrace.java @@ -67,7 +67,7 @@ public class TestLtrace public void taskTerminated(Task task, boolean signal, int value) { } } - public void testAllLibrariesGetDetected() + public void performTestAllLibrariesGetDetected() { class MyController1 implements LtraceController @@ -101,6 +101,24 @@ public class TestLtrace assertEquals("number of recorded libraries", expectedSonames.length, controller.allLibraries.size()); } + public void testDebugStateMappingGuard() + { + boolean save = MappingGuard.enableSyscallObserver; + MappingGuard.enableSyscallObserver = false; + assertTrue("debugstate observer enabled", MappingGuard.enableDebugstateObserver); + performTestAllLibrariesGetDetected(); + MappingGuard.enableSyscallObserver = save; + } + + public void testSyscallMappingGuard() + { + boolean save = MappingGuard.enableDebugstateObserver; + MappingGuard.enableDebugstateObserver = false; + assertTrue("syscall observer enabled", MappingGuard.enableSyscallObserver); + performTestAllLibrariesGetDetected(); + MappingGuard.enableDebugstateObserver = save; + } + public void testCallRecorded() { if(unresolvedOffUtrace(5053)) hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2007-11-16 14:13 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=20071116141333.26127.qmail@sourceware.org \ --to=pmachata@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).