This is the mail archive of the frysk-cvs@sources.redhat.com mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[SCM] master: Synchronize fhpd, stepping engine and breakpoints.


The branch, master has been updated
       via  203393a2fbb9559a36f78993d292cf9ce5df9f13 (commit)
       via  a7035a11b80fac86845eb16e7d36145f7a136d9e (commit)
      from  1cfab34772f780f0496b3d5007217b41c04264d6 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 203393a2fbb9559a36f78993d292cf9ce5df9f13
Author: Teresa Thomas <tthomas@redhat.com>
Date:   Fri Jun 6 14:42:02 2008 -0400

    Synchronize fhpd, stepping engine and breakpoints.
    
    frysk-core/frysk/hpd/ChangeLog:
    2008-06-06  Teresa Thomas  <tthomas@redhat.com>
    
    	* BreakpointCommand.java (*.updateHit):
    	Use SteppingEngine.updateActionpointDoneEvent.
    	* TestBreakpoints.java (testGoAfterSimultaneousBreaks): New.
    
    frysk-core/frysk/rt/ChangeLog:
    2008-06-06   Teresa Thomas  <tthomas@redhat.com>
    
    	* Breakpoint.java (updateHit): Update log message.
    
    frysk-core/frysk/stepping/ChangeLog:
    2008-06-06  Teresa Thomas  <tthomas@redhat.com>
    
    	* SteppingEngine.java (updateActionpointDoneEvent): New.
    	(blockedByActionPoint): Use updateActionpointDoneEvent.
    	(blockedByActionPoint(Task,TaskObserver)): Test if messages set empty.

commit a7035a11b80fac86845eb16e7d36145f7a136d9e
Author: Teresa Thomas <tthomas@redhat.com>
Date:   Fri Jun 6 12:49:00 2008 -0400

    Additional logging messages.
    
    frysk-core/frysk/proc/live/ChangeLog:
    2008-06-06  Teresa Thomas  <tthomas@redhat.com>
    
    	* LinuxPtraceTaskState.java: Additional logging messages.

-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/hpd/BreakpointCommand.java        |   73 ++++++++------------
 frysk-core/frysk/hpd/ChangeLog                     |    6 ++
 frysk-core/frysk/hpd/TestBreakpoints.java          |   24 ++++++-
 frysk-core/frysk/proc/live/ChangeLog               |    4 +
 .../frysk/proc/live/LinuxPtraceTaskState.java      |    2 +
 frysk-core/frysk/rt/Breakpoint.java                |    5 +-
 frysk-core/frysk/rt/ChangeLog                      |    6 ++-
 frysk-core/frysk/stepping/ChangeLog                |    8 ++-
 frysk-core/frysk/stepping/SteppingEngine.java      |   69 +++++++++----------
 9 files changed, 112 insertions(+), 85 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/hpd/BreakpointCommand.java b/frysk-core/frysk/hpd/BreakpointCommand.java
index a732c80..082c1d2 100644
--- a/frysk-core/frysk/hpd/BreakpointCommand.java
+++ b/frysk-core/frysk/hpd/BreakpointCommand.java
@@ -47,14 +47,13 @@ import java.util.List;
 import java.util.Map;
 
 import frysk.debuginfo.ObjectDeclarationSearchEngine;
-import frysk.event.Event;
-import frysk.proc.Manager;
 import frysk.proc.Task;
 import frysk.rt.BreakpointManager;
 import frysk.rt.FunctionBreakpoint;
 import frysk.rt.LineBreakpoint;
 import frysk.rt.SourceBreakpoint;
 import frysk.rt.SourceBreakpointObserver;
+import frysk.stepping.SteppingEngine;
 import frysk.value.ObjectDeclaration;
 
 class BreakpointCommand extends ParameterizedCommand {
@@ -100,6 +99,8 @@ class BreakpointCommand extends ParameterizedCommand {
 	BreakpointManager bpManager = cli.getSteppingEngine()
 		.getBreakpointManager();
 	final PrintWriter outWriter = cli.getPrintWriter();
+	final SteppingEngine ste = cli.getSteppingEngine();
+	
 	Iterator taskIter = ptset.getTasks();
 	// Map between tasks and breakpoints to enable.
 	HashMap bptMap = new HashMap();
@@ -118,20 +119,15 @@ class BreakpointCommand extends ParameterizedCommand {
 			final long address) {
                     // Output the message in an Event in order to
                     // allow all actions, fired by events currently in
-                    // the loop, to run.
-                    Manager.eventLoop.add(new Event() {
-                            public void execute() {
-                                LineBreakpoint lbpt = (LineBreakpoint) bpt;
-                                outWriter.print("Breakpoint ");
-                                outWriter.print(lbpt.getId());
-                                outWriter.print(" #");
-                                outWriter.print(lbpt.getFileName());
-                                outWriter.print("#");
-                                outWriter.print(lbpt.getLineNumber());
-                                outWriter.print(" 0x");
-                                outWriter.println(Long.toHexString(address));
-                            }
-                        });
+                    // the loop, to run.		    
+                    LineBreakpoint lbpt = (LineBreakpoint) bpt;
+                    String message = "Breakpoint " + lbpt.getId() +
+                                     " #" + lbpt.getFileName() + "#" + 
+                                     lbpt.getLineNumber() + " 0x" +
+                                     Long.toHexString(address) + "\n";
+                    ste.updateActionpointDoneEvent(message, outWriter);
+
+                    
 		}
 	    });
 	    while (taskIter.hasNext()) {
@@ -140,7 +136,8 @@ class BreakpointCommand extends ParameterizedCommand {
 	} else {
 	    while (taskIter.hasNext()) {
 		Task task = (Task) taskIter.next();
-		ObjectDeclarationSearchEngine declarationSearchEngine = new ObjectDeclarationSearchEngine(task);
+		ObjectDeclarationSearchEngine declarationSearchEngine = 
+		    new ObjectDeclarationSearchEngine(task);
 		
 		if (declarationSearchEngine != null) {
 		    
@@ -155,19 +152,14 @@ class BreakpointCommand extends ParameterizedCommand {
 			actionpoint.addObserver(new CLIBreakpointObserver() {
 			    public void updateHit(final SourceBreakpoint bpt,
 				    Task task, final long address) {
-				// See comment in case above.
-				Manager.eventLoop.add(new Event() {
-				    public void execute() {
-					FunctionBreakpoint fbpt
-                                        = (FunctionBreakpoint) bpt;
-                                    outWriter.print("Breakpoint ");
-                                    outWriter.print(fbpt.getId());
-                                    outWriter.print(" ");
-                                    outWriter.print(fbpt.getName());
-                                    outWriter.print(" 0x");
-                                    outWriter.println(Long.toHexString(address));
-				    }
-				});
+				// Output the message in an Event in order to
+				// allow all actions, fired by events currently in
+				// the loop, to run.				
+				FunctionBreakpoint fbpt = (FunctionBreakpoint) bpt;				
+				String message = "Breakpoint " + fbpt.getId() +
+				                 " " + fbpt.getName() + " 0x" + 
+				                 Long.toHexString(address) + "\n";
+				ste.updateActionpointDoneEvent(message, outWriter);
 			    }
 			});
 			bptMap.put(task, actionpoint);
@@ -177,19 +169,14 @@ class BreakpointCommand extends ParameterizedCommand {
 			actionpoint.addObserver(new CLIBreakpointObserver() {
 			    public void updateHit(final SourceBreakpoint bpt,
 				    Task task, final long address) {
-				// See comment in case above.
-				Manager.eventLoop.add(new Event() {
-				    public void execute() {
-					FunctionBreakpoint fbpt
-                                        = (FunctionBreakpoint) bpt;
-                                    outWriter.print("Breakpoint ");
-                                    outWriter.print(fbpt.getId());
-                                    outWriter.print(" ");
-                                    outWriter.print(fbpt.getName());
-                                    outWriter.print(" 0x");
-                                    outWriter.println(Long.toHexString(address));
-				    }
-				});
+				// Output the message in an Event in order to
+				// allow all actions, fired by events currently in
+				// the loop, to run.					
+				FunctionBreakpoint fbpt = (FunctionBreakpoint) bpt;
+				String message = "Breakpoint " + fbpt.getId() +
+				                 " " + fbpt.getName() + " 0x" + 
+				                 Long.toHexString(address) + "\n";
+				ste.updateActionpointDoneEvent(message, outWriter);                            
 			    }
 			});
 			bptMap.put(task, actionpoint);
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index 417a8e9..99eba18 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -1,3 +1,9 @@
+2008-06-06  Teresa Thomas  <tthomas@redhat.com>
+
+	* BreakpointCommand.java (*.updateHit): 
+	Use SteppingEngine.updateActionpointDoneEvent. 
+	* TestBreakpoints.java (testGoAfterSimultaneousBreaks): New.	
+
 2006-06-06  Rick Moseley  <rmoseley@redhat.com>
 
 	* CoreCommand.java: Get args from commandline for run.
diff --git a/frysk-core/frysk/hpd/TestBreakpoints.java b/frysk-core/frysk/hpd/TestBreakpoints.java
index 5cb797b..2fe15a3 100644
--- a/frysk-core/frysk/hpd/TestBreakpoints.java
+++ b/frysk-core/frysk/hpd/TestBreakpoints.java
@@ -222,11 +222,33 @@ public class TestBreakpoints
       e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*");
       e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*");
       e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*");
-      e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*");
 
       e.send("quit\n");
       e.expect("Quitting...");
       e.close();
   }  
   
+  public void testGoAfterSimultaneousBreaks() {
+      e = new HpdTestbed();
+      e.sendCommandExpectPrompt("load " + Prefix.pkgLibFile("funit-hello").getPath(),
+                                "Loaded executable file.*");
+      
+      e.sendCommandExpectPrompt("start", "Attached to process ([0-9]+).*");     
+      e.send("break main\n");
+      e.expect("break.*" + prompt);
+      e.send("break main\n");
+      e.expect("break.*" + prompt);     
+      e.send("break print\n");
+      e.expect("break.*" + prompt);      
+      
+      e.send("go\n");
+      e.expect("go.*" + prompt + "Breakpoint.*main.*");
+      e.send("go\n");
+      e.expect("go.*" + prompt + "Breakpoint.*print.*");
+      
+      e.send("quit\n");
+      e.expect("Quitting...");
+      e.close();      
+  }
+  
 }
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index f9a12dd..eee24c5 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-06  Teresa Thomas  <tthomas@redhat.com>
+
+	* LinuxPtraceTaskState.java: Additional logging messages.
+
 2008-06-04  Andrew Cagney  <cagney@redhat.com>
 
 	* LinuxPtraceProc.java: Delete AuxvBuilder.buildBuffer.
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
index d8c61a3..a819b9a 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
@@ -691,6 +691,7 @@ abstract class LinuxPtraceTaskState extends State {
 		}
 		LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 							Signal signal) {
+		    fine.log("handleStoppedEvent", task);
 		    if (signal == Signal.STOP || signal == Signal.TRAP) {
 			// Attempt an attached continue.
 			task.initializeAttachedState();
@@ -802,6 +803,7 @@ abstract class LinuxPtraceTaskState extends State {
 	}
 	LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task,
 						Signal signal) {
+	    fine.log("handleStoppedEvent", task);
 	    if (signal == Signal.STOP) {
 		Collection pendingObservations = task.pendingObservations;
 		if (pendingObservations.isEmpty()) {
diff --git a/frysk-core/frysk/rt/Breakpoint.java b/frysk-core/frysk/rt/Breakpoint.java
index f6214f4..13c205f 100644
--- a/frysk-core/frysk/rt/Breakpoint.java
+++ b/frysk-core/frysk/rt/Breakpoint.java
@@ -81,9 +81,8 @@ public class Breakpoint implements TaskObserver.Code {
             return Action.CONTINUE;
         }
         else {
-	    fine.log(this, "updateHit adding instruction observer", task,
-		     "address", address);
-		
+	    fine.log(this, "updateHit calling blockedByActionPoint", task,
+		     "address", address);	    
 	    this.steppingEngine.blockedByActionPoint(task, this);
 	    task.requestUnblock(this);
         }
diff --git a/frysk-core/frysk/rt/ChangeLog b/frysk-core/frysk/rt/ChangeLog
index 206bab1..5622595 100644
--- a/frysk-core/frysk/rt/ChangeLog
+++ b/frysk-core/frysk/rt/ChangeLog
@@ -1,7 +1,11 @@
+2008-06-06   Teresa Thomas  <tthomas@redhat.com>
+
+	* Breakpoint.java (updateHit): Update log message.
+
 2008-06-05  Andrew Cagney  <cagney@redhat.com>
 
 	* FunctionBreakpoint.java: Use DwflDie.
-
+	
 2008-06-03  Andrew Cagney  <cagney@redhat.com>
 
 	* FunctionBreakpoint.java: Do not use InlinedSubroutine.
diff --git a/frysk-core/frysk/stepping/ChangeLog b/frysk-core/frysk/stepping/ChangeLog
index e158c8a..014849c 100644
--- a/frysk-core/frysk/stepping/ChangeLog
+++ b/frysk-core/frysk/stepping/ChangeLog
@@ -1,4 +1,10 @@
-2008-05-23    Teresa Thomas  <tthomas@redhat.com>
+2008-06-06  Teresa Thomas  <tthomas@redhat.com>
+
+	* SteppingEngine.java (updateActionpointDoneEvent): New.
+	(blockedByActionPoint): Use updateActionpointDoneEvent.
+	(blockedByActionPoint(Task,TaskObserver)): Test if messages set empty.
+
+2008-05-23  Teresa Thomas  <tthomas@redhat.com>
 
 	* SteppingEngine.java (messages): New.
 	(blockedByActionPoint(Task,TaskObserver,String,PrintWriter)): New.
diff --git a/frysk-core/frysk/stepping/SteppingEngine.java b/frysk-core/frysk/stepping/SteppingEngine.java
index 796d0b6..7dab132 100644
--- a/frysk-core/frysk/stepping/SteppingEngine.java
+++ b/frysk-core/frysk/stepping/SteppingEngine.java
@@ -995,43 +995,8 @@ public class SteppingEngine {
      */    
     public void blockedByActionPoint(Task task, TaskObserver to) {
 
-	 // Requests the addition of the stepping observer to task if 
-	 // not inserted already.
-	if (!(task.isInstructionObserverAdded(this.steppingObserver))) {
-	    task.requestAddInstructionObserver(this.steppingObserver);
-	}
-	
-	// Add the observer to the task's blockers list
-	addBlocker(task, to);
-		
-	TaskStepEngine tse = null;
-	tse = (TaskStepEngine) this.taskStateMap.get(task);	
-	if (!tse.isStopped()) {
-	    // Set the state of task as stopped
-	    tse.setState(new StoppedState(task));	
-	    // Remove the task from the running tasks list      
-	    this.runningTasks.remove(task);
-	}
-    }
-    
-    /**
-     * Sets the stepping engine on being hit by an action point.  
-     * 
-     * to      - Observer that causes task to block.
-     * message - message describing the cause of program block
-     * writer  - writer to print message to
-     */    
-    public void blockedByActionPoint(Task task, TaskObserver to, 
-	                             String message, PrintWriter writer) {
-	
-	/* Set messages being empty implies the fist action point being hit.
-	 */
 	if (messages.isEmpty()) {
 	    
-	    // Schedule a done event on the first sight of an action point
-	    Event e = new ActionPointEvent(messages, writer);
-	    Manager.eventLoop.add(e);
-	    
 	    // Requests the addition of the stepping observer to task if 
 	    // not inserted already.
 	    if (!(task.isInstructionObserverAdded(this.steppingObserver))) {
@@ -1050,10 +1015,42 @@ public class SteppingEngine {
 		this.runningTasks.remove(task);
 	    }
 	}
-	messages.add(message);
     }
     
     /**
+     * Sets the stepping engine on being hit by an action point.  
+     * 
+     * to      - Observer that causes task to block.
+     * message - message describing the cause of program block
+     * writer  - writer to print message to
+     */    
+    public void blockedByActionPoint(Task task, TaskObserver to, 
+	                             String message, PrintWriter writer) {		
+	blockedByActionPoint(task, to);
+	// Schedule a done event
+	updateActionpointDoneEvent(message, writer);
+    }
+    
+    /**
+     * Creates an actionpoint done event at the first sight of an
+     * action point. This event process the action point messages
+     * to be outputted.
+     * 
+     * @param message - Actionpoint information message to be added
+     * @param writer - writer to print message to
+     */
+    public void updateActionpointDoneEvent (String message, PrintWriter writer) {
+	
+	// Schedule event only for the first actionpoint hit.
+	// For others, just add message to the messages set.
+	if (messages.isEmpty()) {
+	    Event e = new ActionPointEvent(messages, writer);
+	    Manager.eventLoop.add(e);
+	}
+	messages.add(message);
+    }   
+    
+    /**
      * Adds the given Observer to this.steppingObserver's Observer list.
      * 
      * @param o The Observer to be added.


hooks/post-receive
--
frysk system monitor/debugger


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]