summaryrefslogtreecommitdiff
path: root/i386
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@gnu.org>2007-01-06 14:27:21 +0000
committerThomas Schwinge <tschwinge@gnu.org>2009-06-18 00:27:01 +0200
commit3527b78c645a5898c7ddbeb3128a49c21514cb1c (patch)
tree98a1f9e14c75fff57920ec7df65322e8b813e64b /i386
parentdd445ab906de464eaee2b45f1722fa27a886b591 (diff)
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>.
Diffstat (limited to 'i386')
-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
5 files changed, 75 insertions, 7 deletions
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();