Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 May 2004 16:04:09 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 52104 for review
Message-ID:  <200405022304.i42N49n6003196@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=52104

Change 52104 by marcel@marcel_nfs on 2004/05/02 16:03:21

	Fix continuation after kdb_enter. Breakpoints are broken,
	but they are also broken on HEAD (i.e. we break into the
	debugger, but can't continue after it). Single stepping
	does not work yet. But again, this is no different than
	HEAD.

Affected files ...

.. //depot/projects/gdb/sys/sparc64/include/kdb.h#2 edit
.. //depot/projects/gdb/sys/sparc64/sparc64/trap.c#5 edit

Differences ...

==== //depot/projects/gdb/sys/sparc64/include/kdb.h#2 (text+ko) ====

@@ -45,7 +45,6 @@
 kdb_cpu_trap(int vector, int _)
 {
 	flushw();
-	TF_DONE(kdb_frame);
 }
 
 #endif /* _MACHINE_KDB_H_ */

==== //depot/projects/gdb/sys/sparc64/sparc64/trap.c#5 (text+ko) ====

@@ -242,7 +242,6 @@
 	    (TRAPF_USERMODE(tf) ? "user" : "kernel"), rdpr(pil));
 
 	atomic_add_int(&cnt.v_trap, 1);
-	td->td_last_frame = tf;
 
 	if ((tf->tf_tstate & TSTATE_PRIV) == 0) {
 		KASSERT(td != NULL, ("trap: curthread NULL"));
@@ -251,6 +250,7 @@
 		p = td->td_proc;
 		sticks = td->td_sticks;
 		td->td_frame = tf;
+		td->td_last_frame = tf;
 		if (td->td_ucred != p->p_ucred)
 			cred_update_thread(td);
 
@@ -298,11 +298,20 @@
 		KASSERT((tf->tf_type & T_KERNEL) != 0,
 		    ("trap: kernel trap isn't"));
 
+		if (kdb_active) {
+			kdb_trap(tf->tf_type, 0, tf);
+			TF_DONE(tf);
+			return;
+		}
+
+		td->td_last_frame = tf;
+
 		switch (tf->tf_type & ~T_KERNEL) {
 #ifdef KDB
 		case T_BREAKPOINT:
 		case T_KSTACK_FAULT:
 			error = (kdb_trap(tf->tf_type, 0, tf) == 0);
+			TF_DONE(tf);
 			break;
 #ifdef notyet
 		case T_PA_WATCHPOINT:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200405022304.i42N49n6003196>