summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2008-07-14 23:43:36 +0000
committerKeith Seitz <keiths@redhat.com>2008-07-14 23:43:36 +0000
commite5c3fc0ff7ac1a82d6eaad862a85cb2ea64d45b9 (patch)
treed289745e165839fc0aaf5f58d46c8e347304362f
parent82bc1f294a4e544e5d35699eaa966de37b0016ad (diff)
downloadgdb-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/ChangeLog27
-rw-r--r--gdb/gdbtk/generic/gdbtk-cmds.c7
-rw-r--r--gdb/gdbtk/generic/gdbtk-hooks.c11
-rw-r--r--gdb/gdbtk/generic/gdbtk-stack.c19
-rw-r--r--gdb/gdbtk/generic/gdbtk-varobj.c38
-rw-r--r--gdb/gdbtk/generic/gdbtk-wrapper.c22
-rw-r--r--gdb/gdbtk/generic/gdbtk-wrapper.h9
-rw-r--r--gdb/gdbtk/generic/gdbtk.h4
-rw-r--r--gdb/gdbtk/library/targetselection.itb7
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