From 3527b78c645a5898c7ddbeb3128a49c21514cb1c Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sat, 6 Jan 2007 14:27:21 +0000 Subject: 2006-01-06 Thomas Schwinge * ddb/db_break.c (db_delete_thread_breakpoint): Don't declare `db_cond_free'. * ddb/db_run.c: Include . (db_stop_at_pc): Don't declare `db_cond_check'. * ddb/db_input.c: Include . * ddb/db_macro.c: Include . * ddb/db_trap.c: Include . * i386/i386/db_interface.h: Include . * i386/i386/db_interface.c: Include . * i386/i386/db_machdep.h: Include . (db_check_access, db_phys_eq, db_task_name): Remove declarations. 2006-01-06 Barry deFreese * ddb/db_aout.c: Include . * ddb/db_break.c: Include , and . (db_delete_cmd, db_breakpoint_cmd): Explicitly define untyped variables as `int'. * ddb/db_command.c: Include , and . * ddb/db_command.h (db_exec_cmd_nest): New declaration. * ddb/db_cond.c: Include , and . (db_cond_cmd): Explicitly define untyped variable as `int'. * ddb/db_cond.h: New file. * ddb/db_examine.c: Include , and . (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 , , and . * ddb/db_input.c: Include . * ddb/db_input.h: New file. * ddb/db_lex.c: Include , , and . (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 , and . (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_output.h (db_putchar): New declaration. * ddb/db_print.c: Include , and . (db_show_regs): Explicitly define untyped variables as `int'. * ddb/db_run.c: Include , , and . * ddb/db_run.h: Include and . (db_single_step, db_single_step_cmd, db_in_single_step): New declarations. * ddb/db_sym.c: Include and . (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 , , and . (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 and . * ddb/db_trap.h: New file. * ddb/db_variables.c: Include , , and . (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 , , and . * ddb/db_write_cmd.c: Include and . * i386/i386/db_interface.c: Include , , , , and . (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 and . * ipc/ipc_kmsg.c [MACH_KDB]: Include . * kern/lock.c [MACH_KDB]: Include . --- ddb/db_aout.c | 1 + ddb/db_break.c | 8 +++++--- ddb/db_command.c | 3 +++ ddb/db_command.h | 2 ++ ddb/db_cond.c | 5 ++++- ddb/db_cond.h | 35 +++++++++++++++++++++++++++++++++++ ddb/db_examine.c | 8 ++++---- ddb/db_examine.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ ddb/db_expr.c | 4 ++++ ddb/db_input.c | 4 ++-- ddb/db_input.h | 28 ++++++++++++++++++++++++++++ ddb/db_lex.c | 12 ++++++++---- ddb/db_lex.h | 1 + ddb/db_macro.c | 9 ++++++--- ddb/db_macro.h | 41 +++++++++++++++++++++++++++++++++++++++++ ddb/db_output.c | 1 + ddb/db_output.h | 2 +- ddb/db_print.c | 5 ++++- ddb/db_run.c | 7 ++++++- ddb/db_run.h | 13 +++++++++++++ ddb/db_sym.c | 4 +++- ddb/db_sym.h | 7 +++++++ ddb/db_task_thread.c | 22 +++++++++++++--------- ddb/db_trap.c | 4 +++- ddb/db_trap.h | 34 ++++++++++++++++++++++++++++++++++ ddb/db_variables.c | 8 ++++++-- ddb/db_variables.h | 2 ++ ddb/db_watch.c | 4 ++++ ddb/db_write_cmd.c | 2 ++ 29 files changed, 289 insertions(+), 33 deletions(-) create mode 100644 ddb/db_cond.h create mode 100644 ddb/db_examine.h create mode 100644 ddb/db_input.h create mode 100644 ddb/db_macro.h create mode 100644 ddb/db_trap.h (limited to 'ddb') 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 #include #include /* data types */ +#include #include #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 #include #include +#include +#include +#include #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 #include #include +#include +#include +#include #include #include 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 #include #include +#include +#include +#include #include @@ -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 +#include + +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 #include +#include #include #include @@ -39,6 +40,8 @@ #include #include #include +#include +#include #include #include #include @@ -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 +#include +#include + +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 #include #include +#include +#include +#include +#include #include 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 #include +#include +#include #include - - #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 + +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 #include +#include +#include +#include #include +#include 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 #include #include - +#include +#include +#include +#include /* @@ -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 +#include + +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 #include #include +#include #include #include 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 #include +#include #include #include +#include +#include #include #include #include @@ -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 #include #include +#include +#include +#include +#include +#include + 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 +#include + 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 #include #include +#include +#include #include #include @@ -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 +#include +#include +#include +#include #include #include @@ -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 #include #include +#include +#include #include - +#include 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 +#include + +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 +#include +#include +#include #include +#include #include #include @@ -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 #include +#include #include #include #include +#include +#include +#include #include #include 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 #include #include +#include +#include #include #include -- cgit v1.2.3