public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: mark@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Use outer frame address in TaskTracer for getting return address. Date: Sat, 12 Apr 2008 22:24:00 -0000 [thread overview] Message-ID: <20080412222425.13099.qmail@sourceware.org> (raw) The branch, master has been updated via f8adab1900f94cc4661fb9b3b2930fc87ce7cf63 (commit) via 0f343d494686989385d14340da9013b7f1892147 (commit) from 85168090750c1127c3b4e7e918130b26aed60d19 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit f8adab1900f94cc4661fb9b3b2930fc87ce7cf63 Author: Mark Wielaard <mwielaard@redhat.com> Date: Sun Apr 13 00:18:12 2008 +0200 Use outer frame address in TaskTracer for getting return address. 2008-04-16 Mark Wielaard <mwielaard@redhat.com> * TaskTracer.java (getReturnAddress): Fetch the return address through outer frame address again. commit 0f343d494686989385d14340da9013b7f1892147 Author: Mark Wielaard <mwielaard@redhat.com> Date: Sun Apr 13 00:10:16 2008 +0200 Add TestFrame.testInnerFrameAddress for bug #6029. 2008-04-12 Mark Wielaard <mwielaard@redhat.com> * TestFrame.java (testInnerFrameAddress): New test for bug #6029. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/ftrace/ChangeLog | 5 +++ frysk-core/frysk/ftrace/TaskTracer.java | 4 +- frysk-core/frysk/stack/ChangeLog | 4 ++ frysk-core/frysk/stack/TestFrame.java | 54 +++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 2 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/ftrace/ChangeLog b/frysk-core/frysk/ftrace/ChangeLog index 603d193..7ea8677 100644 --- a/frysk-core/frysk/ftrace/ChangeLog +++ b/frysk-core/frysk/ftrace/ChangeLog @@ -1,3 +1,8 @@ +2008-04-16 Mark Wielaard <mwielaard@redhat.com> + + * TaskTracer.java (getReturnAddress): Fetch the return address + through outer frame address again. + 2008-04-06 Petr Machata <pmachata@redhat.com> * TaskTracer.java diff --git a/frysk-core/frysk/ftrace/TaskTracer.java b/frysk-core/frysk/ftrace/TaskTracer.java index 6aa71dc..b2625dc 100644 --- a/frysk-core/frysk/ftrace/TaskTracer.java +++ b/frysk-core/frysk/ftrace/TaskTracer.java @@ -56,6 +56,7 @@ import frysk.rt.PLTBreakpoint; import frysk.rt.SourceBreakpoint; import frysk.rt.SourceBreakpointObserver; import frysk.rt.SymbolBreakpoint; +import frysk.stack.StackFactory; import frysk.symtab.DwflSymbol; import frysk.symtab.PLTEntry; @@ -234,8 +235,7 @@ class TaskTracer private long getReturnAddress(Task task) { try { - //return StackFactory.createFrame(task).getOuter().getAddress(); - return arch.getReturnAddress(task); + return StackFactory.createFrame(task).getOuter().getAddress(); } catch (java.lang.NullPointerException npe) { return 0; } diff --git a/frysk-core/frysk/stack/ChangeLog b/frysk-core/frysk/stack/ChangeLog index 714e8dc..da35a68 100644 --- a/frysk-core/frysk/stack/ChangeLog +++ b/frysk-core/frysk/stack/ChangeLog @@ -1,3 +1,7 @@ +2008-04-12 Mark Wielaard <mwielaard@redhat.com> + + * TestFrame.java (testInnerFrameAddress): New test for bug #6029. + 2008-04-11 Mark Wielaard <mwielaard@redhat.com> * TestFrame.java (testBogusAddressPrevFrame): Resolved. diff --git a/frysk-core/frysk/stack/TestFrame.java b/frysk-core/frysk/stack/TestFrame.java index c647efa..acfa56a 100644 --- a/frysk-core/frysk/stack/TestFrame.java +++ b/frysk-core/frysk/stack/TestFrame.java @@ -211,4 +211,58 @@ public class TestFrame extends TestLib { assertRunUntilStop("wait for hit"); assertTrue(code.hit); } + + /** + * Explicit test for bug #6029. Make sure that when generating + * backtrace in the updateHit() method the address is correct. + */ + public void testInnerFrameAddress() throws ElfException + { + String[] cmd = + { Config.getPkgLibFile("funit-hello").getPath(), "world" }; + DaemonBlockedAtEntry child = new DaemonBlockedAtEntry(cmd); + Task task = child.getMainTask(); + Info info = new Info(task); + + long address = info.getFunctionEntryAddress("print"); + CodeObserver code = new CodeObserver(); + task.requestAddCodeObserver(code, address); + assertRunUntilStop("add breakpoint observer"); + + child.requestRemoveBlock(); + assertFalse(code.hit); + assertRunUntilStop("wait for hit"); + assertTrue(code.hit); + } + + static class CodeObserver implements TaskObserver.Code + { + public boolean hit = false; + + public Action updateHit (Task task, long hitAddress) + { + hit = true; + long frameAddress = StackFactory.createFrame(task).getAddress(); + assertEquals("Hit and Frame address", hitAddress, frameAddress); + + Manager.eventLoop.requestStop(); + return Action.BLOCK; + } + + public void addFailed (Object observable, Throwable w) + { + // Whoa + w.printStackTrace(); + } + + public void addedTo (Object observable) + { + Manager.eventLoop.requestStop(); + } + + public void deletedFrom (Object observable) + { + // We never delete + } + } } hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-04-12 22:24 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=20080412222425.13099.qmail@sourceware.org \ --to=mark@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).