public inbox for frysk@sourceware.org
 help / color / mirror / Atom feed
From: Phil Muldoon <pmuldoon@redhat.com>
To: frysk@sourceware.org
Subject: Re: [SCM]  master: Add new test testRunningAndReadOnlyWatchpoint.  Adjust funit-watcjpoints.S for test.
Date: Mon, 14 Apr 2008 13:31:00 -0000	[thread overview]
Message-ID: <48035B84.5040401@redhat.com> (raw)
In-Reply-To: <20080414131653.28873.qmail@sourceware.org>

pmuldoon@sourceware.org wrote:

This commits add an explicit check for "read or write" watchpoints. All 
the other tests up until now have concentrated on "Write only" 
watchpoints. However, a sanity test that the "read or write" case is 
required. Added the test, and added a specific global variable in 
funit-watchpoints.S to allow this check.

Regards


Phil
> The branch, master has been updated
>        via  dd89b9e98efbe563cef22c6b18b9b135523a8205 (commit)
>       from  05a02786605b522770d51c9c5cf5bcd503ce24ad (commit)
>
> Those revisions listed above that are new to this repository have
> not appeared on any other notification email.
>
> - Log -----------------------------------------------------------------
> commit dd89b9e98efbe563cef22c6b18b9b135523a8205
> Author: Phil Muldoon <pmuldoon@redhat.com>
> Date:   Mon Apr 14 14:15:43 2008 +0100
>
>     Add new test testRunningAndReadOnlyWatchpoint. Adjust funit-watcjpoints.S for test.
>     
>     2008-04-14  Phil Muldoon  <pmuldoon@redhat.com>
>     
>     	* TestTaskObserverWatchpoint.java (testRunningAndReadOnlyWatchpoint): New.
>     
>     2008-04-14  Phil Muldoon  <pmuldoon@redhat.com>
>     
>     	* funit-watchpoint.S: Add new read_only WORD
>     	symbol. Read it.
>
> -----------------------------------------------------------------------
>
> Summary of changes:
>  frysk-core/frysk/pkglibdir/ChangeLog               |    5 ++
>  frysk-core/frysk/pkglibdir/funit-watchpoint.S      |   12 +++--
>  frysk-core/frysk/proc/ChangeLog                    |    4 ++
>  .../frysk/proc/TestTaskObserverWatchpoint.java     |   57 +++++++++++++++++++-
>  4 files changed, 72 insertions(+), 6 deletions(-)
>
> First 500 lines of diff:
> diff --git a/frysk-core/frysk/pkglibdir/ChangeLog b/frysk-core/frysk/pkglibdir/ChangeLog
> index 23fd5b2..d0090ce 100644
> --- a/frysk-core/frysk/pkglibdir/ChangeLog
> +++ b/frysk-core/frysk/pkglibdir/ChangeLog
> @@ -1,3 +1,8 @@
> +2008-04-14  Phil Muldoon  <pmuldoon@redhat.com>
> +
> +	* funit-watchpoint.S: Add new read_only WORD
> +	symbol. Read it.
> +
>  2008-04-08  Andrew Cagney  <cagney@redhat.com>
>  
>  	* funit-threads.xml-in: Add version information.
> diff --git a/frysk-core/frysk/pkglibdir/funit-watchpoint.S b/frysk-core/frysk/pkglibdir/funit-watchpoint.S
> index e03093e..cfb0f39 100644
> --- a/frysk-core/frysk/pkglibdir/funit-watchpoint.S
> +++ b/frysk-core/frysk/pkglibdir/funit-watchpoint.S
> @@ -60,17 +60,17 @@ LOAD_IMMED_BYTE (REG3, 0x77)
>  
>  // Clear the decks ...
>  NOP
> -NOP
> -NOP
> -
>  // Write 0x77 into the location of source (held by GPR1)
>  STORE_WORD(REG3, REG1)
> -
> -// Clear the decks ....
>  NOP
> +
>  NOP
> +// Read read_only memory, and copy it to source
> +LOAD_IMMED_WORD(REG3, read_only)
> +STORE_WORD(REG3, REG1)
>  NOP
>  
> +
>  // End. And exit
>  MAIN_EPILOGUE(0)
>  FUNCTION_RETURN(main,0)
> @@ -80,4 +80,6 @@ FUNCTION_END(main,0)
>  .globl source
>  WORD(source, 0x99)
>  
> +.globl read_only
> +WORD(read_only, 0x01)
>  
> diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
> index c6cdbd1..63785a8 100644
> --- a/frysk-core/frysk/proc/ChangeLog
> +++ b/frysk-core/frysk/proc/ChangeLog
> @@ -1,3 +1,7 @@
> +2008-04-14  Phil Muldoon  <pmuldoon@redhat.com>
> +
> +	* TestTaskObserverWatchpoint.java (testRunningAndReadOnlyWatchpoint): New.
> +
>  2008-04-10  Phil Muldoon  <pmuldoon@redhat.com>
>  
>  	* TestTaskObserverWatchpoint.java (testAddthenDeleteWatchpoint): New Test.
> diff --git a/frysk-core/frysk/proc/TestTaskObserverWatchpoint.java b/frysk-core/frysk/proc/TestTaskObserverWatchpoint.java
> index 59b8c33..2fde8c2 100644
> --- a/frysk-core/frysk/proc/TestTaskObserverWatchpoint.java
> +++ b/frysk-core/frysk/proc/TestTaskObserverWatchpoint.java
> @@ -177,7 +177,62 @@ extends TestLib
>  
>      }
>  
> -    
> +
> +    // This test case tests whether 'read or write' watchpoints are caught when a task is in a straight
> +    // "running" condition.  In this  test:  set up the 'read or write' watchpoint, set up
> +    // a terminated observer to guard the watchpoint was caught, and simply set the task to run.
> +    // If the watchpoint observer is called on address read, and the test is blocked then the 
> +    // test passes. If the process terminates and the watchpoint is not caught, 
> +    // then this signified an error condition.
> +    public void testRunningAndReadOnlyWatchpoint () {
> +	if (unresolvedOnPPC(5991)) 
> +	    return;
> +	
> +	DaemonBlockedAtEntry ackProc = new DaemonBlockedAtEntry(
> +		Config.getPkgLibFile("funit-watchpoint"));
> +	assertNotNull(ackProc);
> +
> +	// Get Proc/Task.
> +	Proc proc = ackProc.getMainTask().getProc();
> +	Task task = proc.getMainTask();
> +
> +	// Watch for any unexpected terminations of the child process.
> +	TerminatedObserver to = new TerminatedObserver();
> +	task.requestAddTerminatedObserver(to);
> +
> +	// Break at main
> +	long mainAddress = getGlobalSymbolAddress(task, "main");
> +	CodeObserver co = new CodeObserver();
> +	task.requestAddCodeObserver(co, mainAddress);
> +	ackProc.requestUnblock();
> +	assertRunUntilStop("Run to main");
> +
> +	// Find Variable source for watch
> +	long address = getGlobalSymbolAddress(task,"read_only");
> +
> +	// Add watch observer. Set it to fire on read OR write.
> +	WatchObserver watch = new WatchObserver(task, address, 4);
> +	task.requestAddWatchObserver(watch, address, 4, false);
> +
> +	task.requestUnblock(co);
> +	assertRunUntilStop("Run and test watchpoint ");
> +
> +	// Make sure it triggered.
> +	assertTrue("added", watch.added);
> +	assertEquals("hit code", 1, watch.hit);
> +
> +	// Delete both observers.
> +	task.requestDeleteCodeObserver(co, mainAddress);
> +	task.requestDeleteWatchObserver(watch, address, 4, true);
> +	runPending();
> +
> +	// Verify they were removed.
> +	assertTrue("deleted watch", watch.deleted);
> +	assertTrue("deleted code", co.deleted);
> +	assertEquals("hit code", 1, watch.hit);
> +
> +    }
> +
>      // This test tests that a watchpoint is properly deleted: from the othe observer lists
>      // and the hardware. In this case, if the watchpoint is caught, then it fails. It should have
>      // been deleted. This test adds the watchpoint, then runs to main, then deletes the watchpoint.
>
>
> hooks/post-receive
> --
> frysk system monitor/debugger
>   

           reply	other threads:[~2008-04-14 13:26 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <20080414131653.28873.qmail@sourceware.org>]

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=48035B84.5040401@redhat.com \
    --to=pmuldoon@redhat.com \
    --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: link
Be 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).