summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog88
-rw-r--r--ddb/db_aout.c1
-rw-r--r--ddb/db_break.c8
-rw-r--r--ddb/db_command.c3
-rw-r--r--ddb/db_command.h2
-rw-r--r--ddb/db_cond.c5
-rw-r--r--ddb/db_cond.h35
-rw-r--r--ddb/db_examine.c8
-rw-r--r--ddb/db_examine.h46
-rw-r--r--ddb/db_expr.c4
-rw-r--r--ddb/db_input.c4
-rw-r--r--ddb/db_input.h28
-rw-r--r--ddb/db_lex.c12
-rw-r--r--ddb/db_lex.h1
-rw-r--r--ddb/db_macro.c9
-rw-r--r--ddb/db_macro.h41
-rw-r--r--ddb/db_output.c1
-rw-r--r--ddb/db_output.h2
-rw-r--r--ddb/db_print.c5
-rw-r--r--ddb/db_run.c7
-rw-r--r--ddb/db_run.h13
-rw-r--r--ddb/db_sym.c4
-rw-r--r--ddb/db_sym.h7
-rw-r--r--ddb/db_task_thread.c22
-rw-r--r--ddb/db_trap.c4
-rw-r--r--ddb/db_trap.h34
-rw-r--r--ddb/db_variables.c8
-rw-r--r--ddb/db_variables.h2
-rw-r--r--ddb/db_watch.c4
-rw-r--r--ddb/db_write_cmd.c2
-rw-r--r--i386/i386/db_interface.c12
-rw-r--r--i386/i386/db_interface.h58
-rw-r--r--i386/i386/db_machdep.h6
-rw-r--r--i386/i386/db_trace.c1
-rw-r--r--i386/i386/trap.c5
-rw-r--r--ipc/ipc_kmsg.c4
-rw-r--r--kern/lock.c1
37 files changed, 457 insertions, 40 deletions
diff --git a/ChangeLog b/ChangeLog
index f427ec9..7412744 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,91 @@
+2006-01-06 Thomas Schwinge <tschwinge@gnu.org>
+
+ * ddb/db_break.c (db_delete_thread_breakpoint): Don't declare
+ `db_cond_free'.
+ * ddb/db_run.c: Include <ddb/db_cond.h>.
+ (db_stop_at_pc): Don't declare `db_cond_check'.
+ * ddb/db_input.c: Include <ddb/db_input.h>.
+ * ddb/db_macro.c: Include <ddb/db_macro.h>.
+ * ddb/db_trap.c: Include <ddb/db_trap.h>.
+ * i386/i386/db_interface.h: Include <machine/thread.h>.
+ * i386/i386/db_interface.c: Include <machine/db_interface.h>.
+ * i386/i386/db_machdep.h: Include <machine/db_interface.h>.
+ (db_check_access, db_phys_eq, db_task_name): Remove declarations.
+
+2006-01-06 Barry deFreese <bddebian@comcast.net>
+
+ * ddb/db_aout.c: Include <ddb/db_output.h>.
+ * ddb/db_break.c: Include <ddb/db_cond.h>, <ddb/db_expr.h> and
+ <ddb/db_output.h>.
+ (db_delete_cmd, db_breakpoint_cmd): Explicitly define untyped variables
+ as `int'.
+ * ddb/db_command.c: Include <ddb/db_examine.h>, <ddb/db_expr.h> and
+ <ddb/db_macro.h>.
+ * ddb/db_command.h (db_exec_cmd_nest): New declaration.
+ * ddb/db_cond.c: Include <ddb/db_cond.h>, <ddb/db_expr.h> and
+ <ddb/db_output.h>.
+ (db_cond_cmd): Explicitly define untyped variable as `int'.
+ * ddb/db_cond.h: New file.
+ * ddb/db_examine.c: Include <machine/db_interface.h>,
+ <ddb/db_examine.h> and <ddb/db_expr.h>.
+ (db_strcpy, db_examine): Remove forward declarations.
+ (db_xcdump): Explicitly define untyped variables as `int'.
+ * ddb/db_examine.h: New file.
+ * ddb/db_expr.c: Include <ddb/db_expr.h>, <ddb/db_output.h>,
+ <ddb/db_sym.h> and <ddb/db_variables.h>.
+ * ddb/db_input.c: Include <ddb/db_command.h>.
+ * ddb/db_input.h: New file.
+ * ddb/db_lex.c: Include <ddb/db_command.h>, <ddb/db_examine.h>,
+ <ddb/db_input.h> and <ddb/db_output.h>.
+ (db_skip_to_eol, db_lex): Explicitly define untyped variables as `int'.
+ * ddb/db_lex.h (db_lex): New declaration.
+ * ddb/db_macro.c: Include <ddb/db_examine.h>, <ddb/db_expr.h> and
+ <ddb/db_output.h>.
+ (db_def_macro_cmd, db_exec_macro): Explicitly define untyped variables
+ as `int'.
+ * ddb/db_macro.h: New file.
+ * ddb/db_output.c: Include <ddb/db_command.h>.
+ * ddb/db_output.h (db_putchar): New declaration.
+ * ddb/db_print.c: Include <machine/db_interface.h>, <ddb/db_command.h>
+ and <ddb/db_output.h>.
+ (db_show_regs): Explicitly define untyped variables as `int'.
+ * ddb/db_run.c: Include <ddb/db_command.h>, <ddb/db_examine.h>,
+ <ddb/db_output.h> and <ddb/db_watch.h>.
+ * ddb/db_run.h: Include <kern/task.h> and <machine/db_machdep.h>.
+ (db_single_step, db_single_step_cmd, db_in_single_step): New
+ declarations.
+ * ddb/db_sym.c: Include <ddb/db_command.h> and <ddb/db_output.h>.
+ (db_sym_parse_and_lookup): Explicitly define untyped variables as
+ `int'.
+ * ddb/db_sym.h (db_line_at_pc): New declaration.
+ * ddb/db_task_thread.c: Include <ddb/db_command.h>, <ddb/db_expr.h>,
+ <ddb/db_lex.h> and <ddb/db_output.h>.
+ (db_lookup_task, db_lookup_task_thread, db_lookup_thread)
+ (db_lookup_task_id, db_lookup_thread_id): Explicitly define untyped
+ variables as `int'.
+ * ddb/db_trap.c: Include <ddb/db_examine.h> and <ddb/db_output.h>.
+ * ddb/db_trap.h: New file.
+ * ddb/db_variables.c: Include <ddb/db_command.h>, <ddb/db_examine.h>,
+ <ddb/db_expr.h> and <ddb/db_output.h>.
+ (db_get_suffix, db_cmp_variable_name): Explicitly define untyped
+ variables as `int'.
+ * ddb/db_variables.h (db_get_variable): New declaration.
+ * ddb/db_watch.c: Include <ddb/db_command.h>, <ddb/db_expr.h>,
+ <ddb/db_output.h> and <ddb/db_run.h>.
+ * ddb/db_write_cmd.c: Include <ddb/db_expr.h> and <ddb/db_output.h>.
+ * i386/i386/db_interface.c: Include <kern/printf.h>, <ddb/db_access.h>,
+ <ddb/db_command.h>, <ddb/db_output.h>, <ddb/db_run.h> and
+ <ddb/db_trap.h>.
+ (kdbprinttrap): Add `void' return type.
+ (db_user_to_kernel_address, db_task_name): Explicitly define untyped
+ variables as `int'.
+ * i386/i386/db_interface.h: New file.
+ * i386/i386/db_trace.c (db_i386_reg_value): Add `int' return type.
+ * i386/i386/trap.c [MACH_KDB]: Include <ddb/db_run.h> and
+ <ddb/db_watch.h>.
+ * ipc/ipc_kmsg.c [MACH_KDB]: Include <ddb/db_output.h>.
+ * kern/lock.c [MACH_KDB]: Include <ddb/db_output.h>.
+
2007-01-06 Thomas Schwinge <tschwinge@gnu.org>
* configure.ac (AM_INIT_AUTOMAKE): Add ``-Wall -Wno-portability''.
diff --git a/ddb/db_aout.c b/ddb/db_aout.c
index 03c9790..b55a4a1 100644
--- a/ddb/db_aout.c
+++ b/ddb/db_aout.c
@@ -37,6 +37,7 @@
#include <string.h>
#include <mach/std_types.h>
#include <machine/db_machdep.h> /* data types */
+#include <ddb/db_output.h>
#include <ddb/db_sym.h>
#ifndef DB_NO_AOUT
diff --git a/ddb/db_break.c b/ddb/db_break.c
index 777ad34..f07e2cc 100644
--- a/ddb/db_break.c
+++ b/ddb/db_break.c
@@ -43,6 +43,9 @@
#include <ddb/db_variables.h>
#include <ddb/db_command.h>
#include <ddb/db_task_thread.h>
+#include <ddb/db_output.h>
+#include <ddb/db_cond.h>
+#include <ddb/db_expr.h>
#define NBREAKPOINTS 100
#define NTHREAD_LIST (NBREAKPOINTS*3)
@@ -122,7 +125,6 @@ db_delete_thread_breakpoint(bkpt, task_thd)
{
register db_thread_breakpoint_t tp;
register db_thread_breakpoint_t *tpp;
- void db_cond_free();
if (task_thd == 0) {
/* delete all the thread-breakpoints */
@@ -594,7 +596,7 @@ db_list_breakpoints()
void
db_delete_cmd()
{
- register n;
+ register int n;
thread_t thread;
vm_offset_t task_thd;
boolean_t user_global = FALSE;
@@ -677,7 +679,7 @@ db_breakpoint_cmd(addr, have_addr, count, modif)
db_expr_t count;
char * modif;
{
- register n;
+ register int n;
thread_t thread;
boolean_t user_global = db_option(modif, 'U');
boolean_t task_bpt = db_option(modif, 'T');
diff --git a/ddb/db_command.c b/ddb/db_command.c
index f4b8bec..ec46ba4 100644
--- a/ddb/db_command.c
+++ b/ddb/db_command.c
@@ -42,6 +42,9 @@
#include <ddb/db_output.h>
#include <ddb/db_command.h>
#include <ddb/db_task_thread.h>
+#include <ddb/db_macro.h>
+#include <ddb/db_expr.h>
+#include <ddb/db_examine.h>
#include <machine/setjmp.h>
#include <kern/debug.h>
diff --git a/ddb/db_command.h b/ddb/db_command.h
index 58309b5..7870baa 100644
--- a/ddb/db_command.h
+++ b/ddb/db_command.h
@@ -67,4 +67,6 @@ struct db_command {
struct db_command *more; /* another level of command */
};
+extern boolean_t db_exec_cmd_nest(char *cmd, int size);
+
#endif /* MACH_KDB */
diff --git a/ddb/db_cond.c b/ddb/db_cond.c
index 9440cb6..60ea473 100644
--- a/ddb/db_cond.c
+++ b/ddb/db_cond.c
@@ -32,6 +32,9 @@
#include <ddb/db_lex.h>
#include <ddb/db_break.h>
#include <ddb/db_command.h>
+#include <ddb/db_cond.h>
+#include <ddb/db_expr.h>
+#include <ddb/db_output.h>
#include <kern/debug.h>
@@ -122,7 +125,7 @@ db_cond_print(bkpt)
void
db_cond_cmd()
{
- register c;
+ register int c;
register struct db_cond *cp;
register char *p;
db_expr_t value;
diff --git a/ddb/db_cond.h b/ddb/db_cond.h
new file mode 100644
index 0000000..dec4967
--- /dev/null
+++ b/ddb/db_cond.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Barry deFreese.
+ */
+
+#ifndef _DDB_DB_COND_H_
+#define _DDB_DB_COND_H_
+
+#include <sys/types.h>
+#include <machine/db_machdep.h>
+
+extern void db_cond_free (db_thread_breakpoint_t bkpt);
+
+extern boolean_t db_cond_check (db_thread_breakpoint_t bkpt);
+
+extern void db_cond_print (db_thread_breakpoint_t bkpt);
+
+extern void db_cond_cmd (void);
+
+#endif /* _DDB_DB_COND_H_ */
diff --git a/ddb/db_examine.c b/ddb/db_examine.c
index 0881df7..889a5b0 100644
--- a/ddb/db_examine.c
+++ b/ddb/db_examine.c
@@ -32,6 +32,7 @@
#include <mach/boolean.h>
#include <machine/db_machdep.h>
+#include <machine/db_interface.h>
#include <ddb/db_access.h>
#include <ddb/db_lex.h>
@@ -39,6 +40,8 @@
#include <ddb/db_command.h>
#include <ddb/db_sym.h>
#include <ddb/db_task_thread.h>
+#include <ddb/db_examine.h>
+#include <ddb/db_expr.h>
#include <kern/thread.h>
#include <kern/task.h>
#include <mach/vm_param.h>
@@ -53,9 +56,6 @@ thread_t db_examine_thread = THREAD_NULL;
extern db_addr_t db_disasm(db_addr_t pc, boolean_t altform, task_t task);
/* instruction disassembler */
-void db_examine();/*forwards*/
-void db_strcpy();
-
/*
* Examine (print) data.
*/
@@ -458,7 +458,7 @@ db_xcdump(addr, size, count, task)
int count;
task_t task;
{
- register i, n;
+ register int i, n;
db_expr_t value;
int bcount;
db_addr_t off;
diff --git a/ddb/db_examine.h b/ddb/db_examine.h
new file mode 100644
index 0000000..96ad719
--- /dev/null
+++ b/ddb/db_examine.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Barry deFreese.
+ */
+
+#ifndef _DDB_DB_EXAMINE_H_
+#define _DDB_DB_EXAMINE_H_
+
+#include <sys/types.h>
+#include <ddb/db_variables.h>
+#include <ddb/db_expr.h>
+
+extern void db_examine_cmd (
+ db_expr_t addr,
+ int have_addr,
+ db_expr_t count,
+ char *modif);
+
+extern void db_strcpy (char *dst, char *src);
+
+extern void db_examine (
+ db_addr_t addr,
+ char *fmt,
+ int count,
+ task_t task);
+
+extern void db_print_loc_and_inst (
+ db_addr_t loc,
+ task_t task);
+
+#endif /* _DDB_DB_EXAMINE_H_ */
diff --git a/ddb/db_expr.c b/ddb/db_expr.c
index d10f1bc..611baa0 100644
--- a/ddb/db_expr.c
+++ b/ddb/db_expr.c
@@ -35,6 +35,10 @@
#include <ddb/db_lex.h>
#include <ddb/db_access.h>
#include <ddb/db_command.h>
+#include <ddb/db_expr.h>
+#include <ddb/db_output.h>
+#include <ddb/db_sym.h>
+#include <ddb/db_variables.h>
#include <kern/task.h>
diff --git a/ddb/db_input.c b/ddb/db_input.c
index 6e8e240..ce6a310 100644
--- a/ddb/db_input.c
+++ b/ddb/db_input.c
@@ -32,10 +32,10 @@
#include <mach/boolean.h>
#include <machine/db_machdep.h>
+#include <ddb/db_command.h>
+#include <ddb/db_input.h>
#include <ddb/db_output.h>
-
-
#ifndef DB_HISTORY_SIZE
#define DB_HISTORY_SIZE 4000
#endif /* DB_HISTORY_SIZE */
diff --git a/ddb/db_input.h b/ddb/db_input.h
new file mode 100644
index 0000000..316e326
--- /dev/null
+++ b/ddb/db_input.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Barry deFreese.
+ */
+
+#ifndef _DDB_DB_INPUT_H_
+#define _DDB_DB_INPUT_H_
+
+#include <sys/types.h>
+
+extern int db_readline (char *lstart, int lsize);
+
+#endif /* _DDB_DB_INPUT_H_ */
diff --git a/ddb/db_lex.c b/ddb/db_lex.c
index 3d05404..88ac212 100644
--- a/ddb/db_lex.c
+++ b/ddb/db_lex.c
@@ -35,7 +35,11 @@
*/
#include <string.h>
#include <machine/db_machdep.h>
+#include <ddb/db_command.h>
+#include <ddb/db_examine.h>
+#include <ddb/db_input.h>
#include <ddb/db_lex.h>
+#include <ddb/db_output.h>
char db_line[DB_LEX_LINE_SIZE];
char db_last_line[DB_LEX_LINE_SIZE];
@@ -175,9 +179,9 @@ db_flush_lex()
void
db_skip_to_eol()
{
- register skip;
- register t;
- register n;
+ register int skip;
+ register int t;
+ register int n;
register char *p;
t = db_read_token();
@@ -202,7 +206,7 @@ int
db_lex()
{
register char *cp;
- register c;
+ register int c;
c = db_read_char();
while (c <= ' ' || c > '~') {
diff --git a/ddb/db_lex.h b/ddb/db_lex.h
index c73b93e..3cb9ae6 100644
--- a/ddb/db_lex.h
+++ b/ddb/db_lex.h
@@ -41,6 +41,7 @@ struct db_lex_context {
char *l_eptr; /* line end pointer */
};
+extern int db_lex();
extern int db_read_line(/* char *rep_str */);
extern void db_flush_line();
extern int db_read_char();
diff --git a/ddb/db_macro.c b/ddb/db_macro.c
index 83c30ce..e372c23 100644
--- a/ddb/db_macro.c
+++ b/ddb/db_macro.c
@@ -33,7 +33,10 @@
#include <ddb/db_lex.h>
#include <ddb/db_variables.h>
#include <ddb/db_command.h>
-
+#include <ddb/db_examine.h>
+#include <ddb/db_expr.h>
+#include <ddb/db_macro.h>
+#include <ddb/db_output.h>
/*
@@ -73,7 +76,7 @@ void
db_def_macro_cmd()
{
register char *p;
- register c;
+ register int c;
register struct db_user_macro *mp, *ep;
if (db_read_token() != tIDENT) {
@@ -141,7 +144,7 @@ db_exec_macro(name)
char *name;
{
register struct db_user_macro *mp;
- register n;
+ register int n;
if ((mp = db_lookup_macro(name)) == 0)
return(-1);
diff --git a/ddb/db_macro.h b/ddb/db_macro.h
new file mode 100644
index 0000000..12ed16e
--- /dev/null
+++ b/ddb/db_macro.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Barry deFreese.
+ */
+
+#ifndef _DDB_DB_MACRO_H_
+#define _DDB_DB_MACRO_H_
+
+#include <sys/types.h>
+#include <ddb/db_variables.h>
+
+extern void db_def_macro_cmd (void);
+
+extern void db_del_macro_cmd (void);
+
+extern void db_show_macro (void);
+
+extern int db_exec_macro (char *name);
+
+extern int db_arg_variable (
+ struct db_variable *vp,
+ db_expr_t *valuep,
+ int flag,
+ db_var_aux_param_t ap);
+
+#endif /* _DDB_DB_MACRO_H_ */
diff --git a/ddb/db_output.c b/ddb/db_output.c
index 6433901..44a71ab 100644
--- a/ddb/db_output.c
+++ b/ddb/db_output.c
@@ -38,6 +38,7 @@
#include <stdarg.h>
#include <mach/boolean.h>
#include <machine/db_machdep.h>
+#include <ddb/db_command.h>
#include <ddb/db_lex.h>
#include <ddb/db_output.h>
diff --git a/ddb/db_output.h b/ddb/db_output.h
index b19f64d..6667d19 100644
--- a/ddb/db_output.h
+++ b/ddb/db_output.h
@@ -36,5 +36,5 @@ extern void db_force_whitespace();
extern int db_print_position();
extern void db_end_line();
extern void db_printf( const char *fmt, ...);
-
+extern void db_putchar(int c);
diff --git a/ddb/db_print.c b/ddb/db_print.c
index e9d8e4b..5d0f150 100644
--- a/ddb/db_print.c
+++ b/ddb/db_print.c
@@ -41,9 +41,12 @@
#include <ipc/ipc_port.h>
#include <ipc/ipc_space.h>
+#include <machine/db_interface.h>
#include <machine/db_machdep.h>
#include <machine/thread.h>
+#include <ddb/db_command.h>
+#include <ddb/db_output.h>
#include <ddb/db_lex.h>
#include <ddb/db_variables.h>
#include <ddb/db_sym.h>
@@ -63,7 +66,7 @@ db_show_regs(addr, have_addr, count, modif)
db_expr_t value;
db_addr_t offset;
char * name;
- register i;
+ register int i;
struct db_var_aux_param aux_param;
task_t task = TASK_NULL;
diff --git a/ddb/db_run.c b/ddb/db_run.c
index 8769523..53a02ce 100644
--- a/ddb/db_run.c
+++ b/ddb/db_run.c
@@ -41,6 +41,12 @@
#include <ddb/db_access.h>
#include <ddb/db_run.h>
#include <ddb/db_task_thread.h>
+#include <ddb/db_command.h>
+#include <ddb/db_examine.h>
+#include <ddb/db_output.h>
+#include <ddb/db_watch.h>
+#include <ddb/db_cond.h>
+
int db_run_mode;
@@ -71,7 +77,6 @@ db_stop_at_pc(is_breakpoint, task)
{
register db_addr_t pc;
register db_thread_breakpoint_t bkpt;
- boolean_t db_cond_check();
db_clear_task_single_step(DDB_REGS, task);
db_clear_breakpoints();
diff --git a/ddb/db_run.h b/ddb/db_run.h
index fcc8ece..31c0e37 100644
--- a/ddb/db_run.h
+++ b/ddb/db_run.h
@@ -24,6 +24,9 @@
* the rights to redistribute these changes.
*/
+#include <kern/task.h>
+#include <machine/db_machdep.h>
+
extern int db_run_mode;
/* modes the system may be running in */
@@ -35,3 +38,13 @@ extern int db_run_mode;
#define STEP_CONTINUE 4
#define STEP_INVISIBLE 5
#define STEP_COUNT 6
+
+extern void db_single_step(db_regs_t *regs, task_t task);
+
+extern void db_single_step_cmd(
+ db_expr_t addr,
+ int have_addr,
+ db_expr_t count,
+ char *modif);
+
+extern boolean_t db_in_single_step(void);
diff --git a/ddb/db_sym.c b/ddb/db_sym.c
index cd4632f..be839fd 100644
--- a/ddb/db_sym.c
+++ b/ddb/db_sym.c
@@ -33,6 +33,8 @@
#include <string.h>
#include <mach/std_types.h>
#include <machine/db_machdep.h>
+#include <ddb/db_command.h>
+#include <ddb/db_output.h>
#include <ddb/db_sym.h>
#include <ddb/db_task_thread.h>
@@ -194,7 +196,7 @@ db_sym_parse_and_lookup(func, symtab, symstr)
char *symstr;
{
register char *p;
- register n;
+ register int n;
int n_name;
int line_number;
char *file_name = 0;
diff --git a/ddb/db_sym.h b/ddb/db_sym.h
index dd320b7..c2d5fec 100644
--- a/ddb/db_sym.h
+++ b/ddb/db_sym.h
@@ -198,3 +198,10 @@ extern struct db_sym_switch {
#define X_db_search_symbol(s,o,t,d) x_db[(s)->type].search_symbol(s,o,t,d)
#define X_db_line_at_pc(s,p,f,l,a) x_db[(s)->type].line_at_pc(s,p,f,l,a)
#define X_db_symbol_values(s,p,n,v) x_db[(s)->type].symbol_values(p,n,v)
+
+extern boolean_t db_line_at_pc(
+ db_sym_t sym,
+ char **filename,
+ int *linenum,
+ db_expr_t pc);
+
diff --git a/ddb/db_task_thread.c b/ddb/db_task_thread.c
index f4dfaf2..ba101fb 100644
--- a/ddb/db_task_thread.c
+++ b/ddb/db_task_thread.c
@@ -27,6 +27,10 @@
#if MACH_KDB
#include <machine/db_machdep.h>
+#include <ddb/db_command.h>
+#include <ddb/db_expr.h>
+#include <ddb/db_lex.h>
+#include <ddb/db_output.h>
#include <ddb/db_task_thread.h>
#include <ddb/db_variables.h>
@@ -51,9 +55,9 @@ db_lookup_task(target_task)
task_t target_task;
{
register task_t task;
- register task_id;
+ register int task_id;
register processor_set_t pset;
- register npset = 0;
+ register int npset = 0;
task_id = 0;
if (queue_first(&all_psets) == 0)
@@ -82,7 +86,7 @@ db_lookup_task_thread(task, target_thread)
thread_t target_thread;
{
register thread_t thread;
- register thread_id;
+ register int thread_id;
thread_id = 0;
if (queue_first(&task->thread_list) == 0)
@@ -104,11 +108,11 @@ int
db_lookup_thread(target_thread)
thread_t target_thread;
{
- register thread_id;
+ register int thread_id;
register task_t task;
register processor_set_t pset;
- register ntask = 0;
- register npset = 0;
+ register int ntask = 0;
+ register int npset = 0;
if (queue_first(&all_psets) == 0)
return(-1);
@@ -150,11 +154,11 @@ db_check_thread_address_valid(thread)
*/
task_t
db_lookup_task_id(task_id)
- register task_id;
+ register int task_id;
{
register task_t task;
register processor_set_t pset;
- register npset = 0;
+ register int npset = 0;
if (task_id > DB_MAX_TASKID)
return(TASK_NULL);
@@ -179,7 +183,7 @@ db_lookup_task_id(task_id)
static thread_t
db_lookup_thread_id(task, thread_id)
task_t task;
- register thread_id;
+ register int thread_id;
{
register thread_t thread;
diff --git a/ddb/db_trap.c b/ddb/db_trap.c
index 44b4f4d..395a9b5 100644
--- a/ddb/db_trap.c
+++ b/ddb/db_trap.c
@@ -38,8 +38,10 @@
#include <ddb/db_command.h>
#include <ddb/db_access.h>
#include <ddb/db_break.h>
+#include <ddb/db_examine.h>
+#include <ddb/db_output.h>
#include <ddb/db_task_thread.h>
-
+#include <ddb/db_trap.h>
extern jmp_buf_t *db_recover;
diff --git a/ddb/db_trap.h b/ddb/db_trap.h
new file mode 100644
index 0000000..933fcd3
--- /dev/null
+++ b/ddb/db_trap.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Barry deFreese.
+ */
+
+#ifndef _DDB_DB_TRAP_H_
+#define _DDB_DB_TRAP_H_
+
+#include <sys/types.h>
+#include <machine/db_machdep.h>
+
+extern void db_task_trap (
+ int type,
+ int code,
+ boolean_t user_space);
+
+extern void db_trap (int type, int code);
+
+#endif /* _DDB_DB_TRAP_H_ */
diff --git a/ddb/db_variables.c b/ddb/db_variables.c
index 0f43396..55b8742 100644
--- a/ddb/db_variables.c
+++ b/ddb/db_variables.c
@@ -32,7 +32,11 @@
#include <machine/db_machdep.h>
+#include <ddb/db_command.h>
+#include <ddb/db_examine.h>
+#include <ddb/db_expr.h>
#include <ddb/db_lex.h>
+#include <ddb/db_output.h>
#include <ddb/db_variables.h>
#include <ddb/db_task_thread.h>
@@ -71,7 +75,7 @@ db_get_suffix(suffix, suffix_value)
register char *suffix;
short *suffix_value;
{
- register value;
+ register int value;
for (value = 0; *suffix && *suffix != '.' && *suffix != ':'; suffix++) {
if (*suffix < '0' || *suffix > '9')
@@ -91,7 +95,7 @@ db_cmp_variable_name(vp, name, ap)
register db_var_aux_param_t ap;
{
register char *var_np, *np;
- register level;
+ register int level;
for (np = name, var_np = vp->name; *var_np; ) {
if (*np++ != *var_np++)
diff --git a/ddb/db_variables.h b/ddb/db_variables.h
index 8829aa9..b340c3d 100644
--- a/ddb/db_variables.h
+++ b/ddb/db_variables.h
@@ -75,4 +75,6 @@ extern struct db_variable *db_evars;
extern struct db_variable db_regs[]; /* machine registers */
extern struct db_variable *db_eregs;
+extern int db_get_variable(db_expr_t *valuep);
+
#endif /* _DB_VARIABLES_H_ */
diff --git a/ddb/db_watch.c b/ddb/db_watch.c
index 22734fa..4450676 100644
--- a/ddb/db_watch.c
+++ b/ddb/db_watch.c
@@ -37,9 +37,13 @@
#include <vm/vm_map.h>
#include <machine/db_machdep.h>
+#include <ddb/db_command.h>
#include <ddb/db_lex.h>
#include <ddb/db_watch.h>
#include <ddb/db_access.h>
+#include <ddb/db_expr.h>
+#include <ddb/db_output.h>
+#include <ddb/db_run.h>
#include <ddb/db_sym.h>
#include <ddb/db_task_thread.h>
diff --git a/ddb/db_write_cmd.c b/ddb/db_write_cmd.c
index b10c74c..eacf53b 100644
--- a/ddb/db_write_cmd.c
+++ b/ddb/db_write_cmd.c
@@ -39,6 +39,8 @@
#include <ddb/db_lex.h>
#include <ddb/db_access.h>
#include <ddb/db_command.h>
+#include <ddb/db_expr.h>
+#include <ddb/db_output.h>
#include <ddb/db_sym.h>
#include <ddb/db_task_thread.h>
diff --git a/i386/i386/db_interface.c b/i386/i386/db_interface.c
index f254776..cf1e1c4 100644
--- a/i386/i386/db_interface.c
+++ b/i386/i386/db_interface.c
@@ -45,9 +45,16 @@
#include "vm_param.h"
#include <vm/vm_map.h>
#include <kern/cpu_number.h>
+#include <kern/printf.h>
#include <kern/thread.h>
#include <kern/task.h>
+#include <ddb/db_access.h>
+#include <ddb/db_command.h>
+#include <ddb/db_output.h>
+#include <ddb/db_run.h>
#include <ddb/db_task_thread.h>
+#include <ddb/db_trap.h>
+#include <machine/db_interface.h>
#include <machine/machspl.h>
struct i386_saved_state *i386_last_saved_statep;
@@ -59,6 +66,7 @@ extern thread_t db_default_thread;
/*
* Print trap reason.
*/
+void
kdbprinttrap(type, code)
int type, code;
{
@@ -258,7 +266,7 @@ int
db_user_to_kernel_address(
task_t task,
vm_offset_t addr,
- unsigned *kaddr,
+ unsigned int *kaddr,
int flag)
{
register pt_entry_t *ptp;
@@ -518,7 +526,7 @@ db_task_name(
task_t task)
{
register char *p;
- register n;
+ register int n;
unsigned vaddr, kaddr;
vaddr = DB_USER_STACK_ADDR;
diff --git a/i386/i386/db_interface.h b/i386/i386/db_interface.h
new file mode 100644
index 0000000..8cd1690
--- /dev/null
+++ b/i386/i386/db_interface.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Barry deFreese.
+ */
+
+#ifndef _I386_DB_INTERFACE_H_
+#define _I386_DB_INTERFACE_H_
+
+#include <sys/types.h>
+#include <kern/task.h>
+#include <machine/thread.h>
+
+extern boolean_t kdb_trap (
+ int type,
+ int code,
+ struct i386_saved_state *regs);
+
+extern void db_read_bytes (
+ vm_offset_t addr,
+ int size,
+ char *data,
+ task_t task);
+
+extern void db_write_bytes (
+ vm_offset_t addr,
+ int size,
+ char *data,
+ task_t task);
+
+extern boolean_t db_check_access (
+ vm_offset_t addr,
+ int size,
+ task_t task);
+
+extern boolean_t db_phys_eq (
+ task_t task1,
+ vm_offset_t addr1,
+ task_t task2,
+ vm_offset_t addr2);
+
+extern void db_task_name (task_t task);
+
+#endif /* _I386_DB_INTERFACE_H_ */
diff --git a/i386/i386/db_machdep.h b/i386/i386/db_machdep.h
index ee5853a..cba259c 100644
--- a/i386/i386/db_machdep.h
+++ b/i386/i386/db_machdep.h
@@ -34,6 +34,7 @@
#include <mach/machine/vm_types.h>
#include <mach/machine/vm_param.h>
#include <mach/machine/eflags.h>
+#include <machine/db_interface.h>
#include <i386/thread.h> /* for thread_status */
#include <i386/trap.h>
@@ -87,9 +88,6 @@ db_regs_t ddb_regs; /* register state */
((!(user) && DB_VALID_KERN_ADDR(addr)) || \
((user) && (addr) < VM_MIN_KERNEL_ADDRESS))
-boolean_t db_check_access(/* vm_offset_t, int, task_t */);
-boolean_t db_phys_eq(/* task_t, vm_offset_t, task_t, vm_offset_t */);
-
/* macros for printing OS server dependent task name */
#define DB_TASK_NAME(task) db_task_name(task)
@@ -97,8 +95,6 @@ boolean_t db_phys_eq(/* task_t, vm_offset_t, task_t, vm_offset_t */);
#define DB_TASK_NAME_LEN 23
#define DB_NULL_TASK_NAME "? "
-void db_task_name(/* task_t */);
-
/* macro for checking if a thread has used floating-point */
#define db_thread_fp_used(thread) ((thread)->pcb->ims.ifps != 0)
diff --git a/i386/i386/db_trace.c b/i386/i386/db_trace.c
index 4402161..d1c9512 100644
--- a/i386/i386/db_trace.c
+++ b/i386/i386/db_trace.c
@@ -124,6 +124,7 @@ db_lookup_i386_kreg(
return 0;
}
+int
db_i386_reg_value(
struct db_variable *vp,
db_expr_t *valuep,
diff --git a/i386/i386/trap.c b/i386/i386/trap.c
index bd0d8e0..2cb81e6 100644
--- a/i386/i386/trap.c
+++ b/i386/i386/trap.c
@@ -52,6 +52,11 @@
#include <i386/io_emulate.h>
+#if MACH_KDB
+#include <ddb/db_run.h>
+#include <ddb/db_watch.h>
+#endif
+
#include "debug.h"
extern void exception();
diff --git a/ipc/ipc_kmsg.c b/ipc/ipc_kmsg.c
index e6e2932..5ad8d61 100644
--- a/ipc/ipc_kmsg.c
+++ b/ipc/ipc_kmsg.c
@@ -59,6 +59,10 @@
#include <ipc/ipc_machdep.h>
+#if MACH_KDB
+#include <ddb/db_output.h>
+#endif
+
extern int copyinmap();
extern int copyoutmap();
void ipc_msg_print(); /* forward */
diff --git a/kern/lock.c b/kern/lock.c
index a604761..909aa46 100644
--- a/kern/lock.c
+++ b/kern/lock.c
@@ -42,6 +42,7 @@
#include <kern/sched_prim.h>
#if MACH_KDB
#include <machine/db_machdep.h>
+#include <ddb/db_output.h>
#include <ddb/db_sym.h>
#endif