diff options
author | Keith Seitz <keiths@redhat.com> | 2008-07-14 23:43:36 +0000 |
---|---|---|
committer | Keith Seitz <keiths@redhat.com> | 2008-07-14 23:43:36 +0000 |
commit | e5c3fc0ff7ac1a82d6eaad862a85cb2ea64d45b9 (patch) | |
tree | d289745e165839fc0aaf5f58d46c8e347304362f | |
parent | 82bc1f294a4e544e5d35699eaa966de37b0016ad (diff) | |
download | gdb-e5c3fc0ff7ac1a82d6eaad862a85cb2ea64d45b9.tar.gz |
* generic/gdbtk-stack.c (gdb_block_args): Remove deprecated values
LOC_LOCAL_ARG, LOC_COMPUTED_ARG, LOC_REGPARM, LOC_BASEARG_ARG, and
LOC_BASEARG.
(gdb_get_blocks): Likewise.
(gdb_get_vars_command): Likewise.
Fix type-punned pointer error introduced on 03-07.
* generic/gdbtk-cmds.c (gdbtk_load_asm): Use paddress instead
of deprecated_print_address_numeric.
(gdb_stop): Update use of target_stop.
* generic/gdbtk.h (gdbtk_get_ptid): Declare new function.
* generic/gdbtk-hooks.c (gdbtk_wait): Save inferior's ptid.
(gdbtk_get_ptid): Define new function.
* generic/gdbtk-varobj.c (variable_update): Update for recent
varobj_update API change.
* generic/gdbtk-wrapper.h (GDB_varobj_update): Likewise.
* generic/gdbtk-wrapper.c (GDB_varobj_update): Likewise.
(wrap_varobj_update): Likewise.
* library/targetselection.itb (init_target_db): Initialize
preferences here instead of ...
(_init): ... here.
(_init_prefs): Define gdb/load/default-portname, too.
-rw-r--r-- | gdb/gdbtk/ChangeLog | 27 | ||||
-rw-r--r-- | gdb/gdbtk/generic/gdbtk-cmds.c | 7 | ||||
-rw-r--r-- | gdb/gdbtk/generic/gdbtk-hooks.c | 11 | ||||
-rw-r--r-- | gdb/gdbtk/generic/gdbtk-stack.c | 19 | ||||
-rw-r--r-- | gdb/gdbtk/generic/gdbtk-varobj.c | 38 | ||||
-rw-r--r-- | gdb/gdbtk/generic/gdbtk-wrapper.c | 22 | ||||
-rw-r--r-- | gdb/gdbtk/generic/gdbtk-wrapper.h | 9 | ||||
-rw-r--r-- | gdb/gdbtk/generic/gdbtk.h | 4 | ||||
-rw-r--r-- | gdb/gdbtk/library/targetselection.itb | 7 |
9 files changed, 88 insertions, 56 deletions
diff --git a/gdb/gdbtk/ChangeLog b/gdb/gdbtk/ChangeLog index 2645ff4cadb..6df5d05baea 100644 --- a/gdb/gdbtk/ChangeLog +++ b/gdb/gdbtk/ChangeLog @@ -1,3 +1,30 @@ +2008-07-14 Keith Seitz <keiths@redhat.com> + + * generic/gdbtk-stack.c (gdb_block_args): Remove deprecated values + LOC_LOCAL_ARG, LOC_COMPUTED_ARG, LOC_REGPARM, LOC_BASEARG_ARG, and + LOC_BASEARG. + (gdb_get_blocks): Likewise. + (gdb_get_vars_command): Likewise. + Fix type-punned pointer error introduced on 03-07. + + * generic/gdbtk-cmds.c (gdbtk_load_asm): Use paddress instead + of deprecated_print_address_numeric. + (gdb_stop): Update use of target_stop. + + * generic/gdbtk.h (gdbtk_get_ptid): Declare new function. + * generic/gdbtk-hooks.c (gdbtk_wait): Save inferior's ptid. + (gdbtk_get_ptid): Define new function. + * generic/gdbtk-varobj.c (variable_update): Update for recent + varobj_update API change. + * generic/gdbtk-wrapper.h (GDB_varobj_update): Likewise. + * generic/gdbtk-wrapper.c (GDB_varobj_update): Likewise. + (wrap_varobj_update): Likewise. + + * library/targetselection.itb (init_target_db): Initialize + preferences here instead of ... + (_init): ... here. + (_init_prefs): Define gdb/load/default-portname, too. + 2008-05-12 Pierre Muller <muller@ics.u-strasbg.fr> * Update uses of val_print functions with additional language argument. diff --git a/gdb/gdbtk/generic/gdbtk-cmds.c b/gdb/gdbtk/generic/gdbtk-cmds.c index 043da9fe7e6..1d6effeba8d 100644 --- a/gdb/gdbtk/generic/gdbtk-cmds.c +++ b/gdb/gdbtk/generic/gdbtk-cmds.c @@ -42,6 +42,7 @@ #include "varobj.h" #include "exceptions.h" #include "language.h" +#include "target.h" /* tcl header files includes varargs.h unless HAS_STDARG is defined, but gdb uses stdarg.h, so make sure HAS_STDARG is defined. */ @@ -567,8 +568,8 @@ gdb_stop (ClientData clientData, Tcl_Interp *interp, } else { - if (target_stop != target_ignore) - target_stop (); + if (target_ignore != (void (*) (void)) current_target.to_stop) + target_stop (gdbtk_get_ptid ()); else quit_flag = 1; /* hope something sees this */ } @@ -1889,7 +1890,7 @@ gdbtk_load_asm (ClientData clientData, CORE_ADDR pc, for (i = 0; i < 3; i++) Tcl_SetObjLength (client_data->result_obj[i], 0); - deprecated_print_address_numeric (pc, 1, gdb_stdout); + fputs_filtered (paddress (pc), gdb_stdout); gdb_flush (gdb_stdout); result_ptr->obj_ptr = client_data->result_obj[1]; diff --git a/gdb/gdbtk/generic/gdbtk-hooks.c b/gdb/gdbtk/generic/gdbtk-hooks.c index e9118d19fca..a34acff7230 100644 --- a/gdb/gdbtk/generic/gdbtk-hooks.c +++ b/gdb/gdbtk/generic/gdbtk-hooks.c @@ -1,6 +1,6 @@ /* Startup code for Insight. - Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 200, 2002, 2003, 2004 + Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 200, 2002, 2003, 2004, 2008 Free Software Foundation, Inc. Written by Stu Grossman <grossman@cygnus.com> of Cygnus Support. @@ -111,6 +111,8 @@ long gdbtk_read (struct ui_file *, char *, long); void gdbtk_fputs (const char *, struct ui_file *); static int gdbtk_load_hash (const char *, unsigned long); +static ptid_t gdbtk_ptid; + /* * gdbtk_add_hooks - add all the hooks to gdb. This will get called by the * startup code to fill in the hooks needed by core gdb. @@ -665,6 +667,7 @@ gdbtk_wait (ptid_t ptid, struct target_waitstatus *ourstatus) gdbtk_start_timer (); ptid = target_wait (ptid, ourstatus); gdbtk_stop_timer (); + gdbtk_ptid = ptid; return ptid; } @@ -836,3 +839,9 @@ gdbtk_architecture_changed (void) { Tcl_Eval (gdbtk_interp, "gdbtk_tcl_architecture_changed"); } + +ptid_t +gdbtk_get_ptid (void) +{ + return gdbtk_ptid; +} diff --git a/gdb/gdbtk/generic/gdbtk-stack.c b/gdb/gdbtk/generic/gdbtk-stack.c index bc5bcfbcaf4..b41c9d74f59 100644 --- a/gdb/gdbtk/generic/gdbtk-stack.c +++ b/gdb/gdbtk/generic/gdbtk-stack.c @@ -1,5 +1,5 @@ /* Tcl/Tk command definitions for Insight - Stack. - Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2008 Free Software Foundation, Inc. This file is part of GDB. @@ -116,16 +116,11 @@ gdb_block_vars (ClientData clientData, Tcl_Interp *interp, { case LOC_ARG: /* argument */ case LOC_REF_ARG: /* reference arg */ - case LOC_REGPARM: /* register arg */ case LOC_REGPARM_ADDR: /* indirect register arg */ - case LOC_LOCAL_ARG: /* stack arg */ - case LOC_BASEREG_ARG: /* basereg arg */ case LOC_LOCAL: /* stack local */ - case LOC_BASEREG: /* basereg local */ case LOC_STATIC: /* static */ case LOC_REGISTER: /* register */ case LOC_COMPUTED: /* computed location */ - case LOC_COMPUTED_ARG: /* computed location arg */ Tcl_ListObjAppendElement (interp, result_ptr->obj_ptr, Tcl_NewStringObj (DEPRECATED_SYMBOL_NAME (sym), -1)); @@ -196,14 +191,9 @@ gdb_get_blocks (ClientData clientData, Tcl_Interp *interp, case LOC_ARG: /* argument */ case LOC_REF_ARG: /* reference arg */ - case LOC_REGPARM: /* register arg */ case LOC_REGPARM_ADDR: /* indirect register arg */ - case LOC_LOCAL_ARG: /* stack arg */ - case LOC_BASEREG_ARG: /* basereg arg */ - case LOC_COMPUTED_ARG: /* computed location arg */ case LOC_LOCAL: /* stack local */ - case LOC_BASEREG: /* basereg local */ case LOC_STATIC: /* static */ case LOC_REGISTER: /* register */ case LOC_COMPUTED: /* computed location */ @@ -295,7 +285,7 @@ gdb_get_vars_command (ClientData clientData, Tcl_Interp *interp, return TCL_ERROR; } - arguments = *(int*) clientData; + arguments = *(int*) &clientData; /* Initialize the result pointer to an empty list. */ @@ -344,17 +334,12 @@ gdb_get_vars_command (ClientData clientData, Tcl_Interp *interp, break; case LOC_ARG: /* argument */ case LOC_REF_ARG: /* reference arg */ - case LOC_REGPARM: /* register arg */ case LOC_REGPARM_ADDR: /* indirect register arg */ - case LOC_LOCAL_ARG: /* stack arg */ - case LOC_BASEREG_ARG: /* basereg arg */ - case LOC_COMPUTED_ARG: /* computed location arg */ if (arguments) Tcl_ListObjAppendElement (interp, result_ptr->obj_ptr, Tcl_NewStringObj (DEPRECATED_SYMBOL_NAME (sym), -1)); break; case LOC_LOCAL: /* stack local */ - case LOC_BASEREG: /* basereg local */ case LOC_STATIC: /* static */ case LOC_REGISTER: /* register */ case LOC_COMPUTED: /* computed location */ diff --git a/gdb/gdbtk/generic/gdbtk-varobj.c b/gdb/gdbtk/generic/gdbtk-varobj.c index 776c6bf747c..a527cd4b765 100644 --- a/gdb/gdbtk/generic/gdbtk-varobj.c +++ b/gdb/gdbtk/generic/gdbtk-varobj.c @@ -440,28 +440,34 @@ variable_children (Tcl_Interp *interp, struct varobj *var) static Tcl_Obj * variable_update (Tcl_Interp *interp, struct varobj **var) { + int i; Tcl_Obj *changed; - struct varobj **changelist; - struct varobj **vc; - int result; - - /* varobj_update() throws an error for a non-root variable - and otherwise it returns a value < 0 if the variable is - not in scope, not valid anymore or has changed type. */ - if (GDB_varobj_update (var, &changelist, 1, &result) != GDB_OK || result < 0) + VEC (varobj_update_result) *changes; + varobj_update_result *r; + + if (GDB_varobj_update (var, 1, &changes) != GDB_OK) return Tcl_NewStringObj ("-1", -1); - changed = Tcl_NewListObj (0, NULL); - vc = changelist; - while (*vc != NULL) + changed = Tcl_NewListObj (0, NULL); + for (i = 0; VEC_iterate (varobj_update_result, changes, i, r); ++i) { - /* Add changed variable object to result list */ - Tcl_ListObjAppendElement (NULL, changed, - Tcl_NewStringObj (varobj_get_objname (*vc), -1)); - vc++; + switch (r->status) + { + case VAROBJ_IN_SCOPE: + { + Tcl_Obj *var + = Tcl_NewStringObj (varobj_get_objname (r->varobj), -1); + Tcl_ListObjAppendElement (NULL, changed, var); + } + break; + + case VAROBJ_NOT_IN_SCOPE: + case VAROBJ_INVALID: + /* These need to be (re-)implemented in the UI */ + break; + } } - xfree (changelist); return changed; } diff --git a/gdb/gdbtk/generic/gdbtk-wrapper.c b/gdb/gdbtk/generic/gdbtk-wrapper.c index a950fde560c..b2252fb2cc6 100644 --- a/gdb/gdbtk/generic/gdbtk-wrapper.c +++ b/gdb/gdbtk/generic/gdbtk-wrapper.c @@ -1,5 +1,5 @@ /* longjmp-free interface between gdb and gdbtk. - Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2002, 2008 Free Software Foundation, Inc. This file is part of GDB. @@ -83,9 +83,8 @@ gdb_result GDB_find_relative_frame (struct frame_info *fi, gdb_result GDB_get_current_frame (struct frame_info **result); -gdb_result GDB_varobj_update (struct varobj **varp, - struct varobj ***changelist, int explicit, - int *result); +gdb_result GDB_varobj_update (struct varobj **varp, int explicit, + VEC (varobj_update_result) **changes); /* * Private functions for this file @@ -730,21 +729,20 @@ wrap_get_current_frame (char *opaque_arg) } gdb_result -GDB_varobj_update (struct varobj **varp, struct varobj ***changelist, - int explicit, int *result) +GDB_varobj_update (struct varobj **varp, int explicit, + VEC (varobj_update_result) **changes) { struct gdb_wrapper_arguments args; gdb_result r; args.args[0].ptr = varp; - args.args[1].ptr = changelist; - args.args[2].integer = explicit; + args.args[1].integer = explicit; r = call_wrapped_function ((catch_errors_ftype *) wrap_varobj_update, &args); if (r != GDB_OK) return r; - *result = args.result.integer; + *changes = args.result.ptr; return GDB_OK; } @@ -753,9 +751,7 @@ static int wrap_varobj_update (char *opaque_arg) struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg; struct varobj **varp = (struct varobj **) (*args)->args[0].ptr; - struct varobj ***changelist = (struct varobj ***) (*args)->args[1].ptr; - int explicit = (*args)->args[2].integer; - - (*args)->result.integer = varobj_update (varp, changelist, explicit); + int explicit = (*args)->args[1].integer; + (*args)->result.ptr = varobj_update (varp, explicit); return 1; } diff --git a/gdb/gdbtk/generic/gdbtk-wrapper.h b/gdb/gdbtk/generic/gdbtk-wrapper.h index 57d7eabfbac..e9d290f5647 100644 --- a/gdb/gdbtk/generic/gdbtk-wrapper.h +++ b/gdb/gdbtk/generic/gdbtk-wrapper.h @@ -1,5 +1,5 @@ /* longjmp-free interface between gdb and gdbtk. - Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2002, 2008 Free Software Foundation, Inc. This file is part of GDB. It contains routines to safely call common gdb functions without the fear of longjmp'ing. @@ -21,6 +21,8 @@ Boston, MA 02110-1301, USA. */ #ifndef GDBTK_WRAPPER_H #define GDBTK_WRAPPER_H +#include "vec.h" + /* Use this struct used to pass arguments to wrapper routines. We assume (arbitrarily) that no gdb function takes more than ten arguments. */ struct gdb_wrapper_arguments { @@ -88,8 +90,7 @@ extern gdb_result GDB_find_relative_frame (struct frame_info *fi, int *start, struct frame_info **result); extern gdb_result GDB_get_current_frame (struct frame_info **result); -extern gdb_result GDB_varobj_update (struct varobj **varp, - struct varobj ***changelist, int explicit, - int *result); +extern gdb_result GDB_varobj_update (struct varobj **varp, int explicit, + VEC (varobj_update_result) **changes); #endif /* GDBTK_WRAPPER_H */ diff --git a/gdb/gdbtk/generic/gdbtk.h b/gdb/gdbtk/generic/gdbtk.h index 5e2fdbb3bbb..e5e5d1da389 100644 --- a/gdb/gdbtk/generic/gdbtk.h +++ b/gdb/gdbtk/generic/gdbtk.h @@ -1,5 +1,5 @@ /* Tcl/Tk interface routines header file. - Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2003 + Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2003, 2008 Free Software Foundation, Inc. Written by Stu Grossman <grossman@cygnus.com> of Cygnus Support. @@ -98,6 +98,7 @@ typedef struct gdbtk_result gdbtk_result; struct target_ops; +struct ptid_t; /* These defines give the allowed values for the gdbtk_result.flags field. */ @@ -161,6 +162,7 @@ extern void gdbtk_fputs (const char *, struct ui_file *); extern struct ui_file *gdbtk_fileopen (void); extern struct ui_file *gdbtk_fileopenin (void); extern int gdbtk_disable_fputs; +extern ptid_t gdbtk_get_ptid (void); #ifdef _WIN32 extern void close_bfds (); diff --git a/gdb/gdbtk/library/targetselection.itb b/gdb/gdbtk/library/targetselection.itb index 9e547dac4dd..7f9d531ff45 100644 --- a/gdb/gdbtk/library/targetselection.itb +++ b/gdb/gdbtk/library/targetselection.itb @@ -44,6 +44,11 @@ itcl::body TargetSelection::init_target_db {} { } set db_inited 1 + # We really need to have the preferences defined, too, + # otherwise set_target and company won't work properly + # unless the user has first opened a TargetSelection dialog. + _init_prefs + # Target Database # Set the following members: # TARGET,pretty-name: Name to display to user @@ -323,6 +328,7 @@ itcl::body TargetSelection::_init_prefs {} { pref define gdb/load/default-port [default_port] pref define gdb/load/default-hostname "" pref define gdb/load/default-after_attaching {} + pref define gdb/load/default-portname 32767 } itcl::body TargetSelection::_init_target {} { @@ -371,7 +377,6 @@ itcl::body TargetSelection::_init {} { set trace_inited 1 init_target_db ;# initialize database - _init_prefs ;# initialize load prefs _init_target ;# initialize target prefs set_saved |