summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1994-10-02 19:36:30 +0000
committerphk <phk@FreeBSD.org>1994-10-02 19:36:30 +0000
commit1f6d0ff1e22a737770562d1c7c12a0323eae461b (patch)
tree4b164dc10241f335bd040f1659f7978e95f52e5b /sys
parenta7840d2aa8e9853c0f8915c6cc155f4b8b808e2f (diff)
downloadFreeBSD-src-1f6d0ff1e22a737770562d1c7c12a0323eae461b.zip
FreeBSD-src-1f6d0ff1e22a737770562d1c7c12a0323eae461b.tar.gz
Avoid ddb getting a panic if the code-segment isn't the usual one...
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/include/db_machdep.h4
-rw-r--r--sys/ddb/db_trap.c19
-rw-r--r--sys/i386/include/db_machdep.h4
3 files changed, 15 insertions, 12 deletions
diff --git a/sys/amd64/include/db_machdep.h b/sys/amd64/include/db_machdep.h
index 8145d3a..310c43b 100644
--- a/sys/amd64/include/db_machdep.h
+++ b/sys/amd64/include/db_machdep.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie Mellon
* the rights to redistribute these changes.
*
- * $Id: db_machdep.h,v 1.3 1993/11/07 17:42:50 wollman Exp $
+ * $Id: db_machdep.h,v 1.4 1994/09/08 11:49:04 bde Exp $
*/
#ifndef _I386_DB_MACHDEP_H_
@@ -55,7 +55,7 @@ typedef struct i386_saved_state db_regs_t;
extern db_regs_t ddb_regs; /* register state */
#define DDB_REGS (&ddb_regs)
-#define PC_REGS(regs) ((db_addr_t)(regs)->tf_eip)
+#define PC_REGS(regs) ((regs)->tf_cs == 0x08 ? (db_addr_t)(regs)->tf_eip : 0)
#define BKPT_INST 0xcc /* breakpoint instruction */
#define BKPT_SIZE (1) /* size of breakpoint inst */
diff --git a/sys/ddb/db_trap.c b/sys/ddb/db_trap.c
index 8d2941a..bc65ed9 100644
--- a/sys/ddb/db_trap.c
+++ b/sys/ddb/db_trap.c
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: db_trap.c,v 1.4 1994/08/13 03:49:24 wollman Exp $
+ * $Id: db_trap.c,v 1.5 1994/08/18 22:34:27 wollman Exp $
*/
/*
@@ -57,14 +57,17 @@ db_trap(type, code)
db_printf("After %d instructions (%d loads, %d stores),\n",
db_inst_count, db_load_count, db_store_count);
}
- if (bkpt)
- db_printf("Breakpoint at\t");
- else if (watchpt)
- db_printf("Watchpoint at\t");
- else
- db_printf("Stopped at\t");
db_dot = PC_REGS(DDB_REGS);
- db_print_loc_and_inst(db_dot);
+ if(db_dot) {
+ if (bkpt)
+ db_printf("Breakpoint at\t");
+ else if (watchpt)
+ db_printf("Watchpoint at\t");
+ else
+ db_printf("Stopped at\t");
+
+ db_print_loc_and_inst(db_dot);
+ }
db_command_loop();
}
diff --git a/sys/i386/include/db_machdep.h b/sys/i386/include/db_machdep.h
index 8145d3a..310c43b 100644
--- a/sys/i386/include/db_machdep.h
+++ b/sys/i386/include/db_machdep.h
@@ -23,7 +23,7 @@
* any improvements or extensions that they make and grant Carnegie Mellon
* the rights to redistribute these changes.
*
- * $Id: db_machdep.h,v 1.3 1993/11/07 17:42:50 wollman Exp $
+ * $Id: db_machdep.h,v 1.4 1994/09/08 11:49:04 bde Exp $
*/
#ifndef _I386_DB_MACHDEP_H_
@@ -55,7 +55,7 @@ typedef struct i386_saved_state db_regs_t;
extern db_regs_t ddb_regs; /* register state */
#define DDB_REGS (&ddb_regs)
-#define PC_REGS(regs) ((db_addr_t)(regs)->tf_eip)
+#define PC_REGS(regs) ((regs)->tf_cs == 0x08 ? (db_addr_t)(regs)->tf_eip : 0)
#define BKPT_INST 0xcc /* breakpoint instruction */
#define BKPT_SIZE (1) /* size of breakpoint inst */
OpenPOWER on IntegriCloud