diff options
author | phk <phk@FreeBSD.org> | 1994-10-02 19:36:30 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1994-10-02 19:36:30 +0000 |
commit | 1f6d0ff1e22a737770562d1c7c12a0323eae461b (patch) | |
tree | 4b164dc10241f335bd040f1659f7978e95f52e5b /sys | |
parent | a7840d2aa8e9853c0f8915c6cc155f4b8b808e2f (diff) | |
download | FreeBSD-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.h | 4 | ||||
-rw-r--r-- | sys/ddb/db_trap.c | 19 | ||||
-rw-r--r-- | sys/i386/include/db_machdep.h | 4 |
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 */ |