* [PATCH] Fix pointer conversion errors
@ 2008-03-07 8:06 Keith Seitz
0 siblings, 0 replies; only message in thread
From: Keith Seitz @ 2008-03-07 8:06 UTC (permalink / raw)
To: insight
[-- Attachment #1: Type: text/plain, Size: 911 bytes --]
Hi,
Following up on my last note about build problems on x86_64, I've
committed the following patch which should fix all the compiler warnings
about type conversions and pointer size assumptions.
Keith
ChangeLog
2008-03-07 Keith Seitz <kseitz@sourceware.org>
* generic/gdbtk-register.c (map_arg): New data type
for passing arguments to mapping functions.
(map_func): New definition of mapping function.
Changed all callers to use these new types.
* generic/gdbtk-stack.c (gdb_get_vars_command): Change
cast to int to dereference of int *.
* generic/gdbtk-wrapper.c: Change all casts to char * for
results and args to use pointer or integer flavor of
gdb_wrapper_args.results and .args.
* generic/gdbtk-wrapper.h: struct gdb_wrapper_arguments
members result and args now return a union of void * and int.
[-- Attachment #2: insight-ptrs.diff --]
[-- Type: text/x-patch, Size: 23469 bytes --]
Index: generic/gdbtk-register.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-register.c,v
retrieving revision 1.33
diff -u -r1.33 gdbtk-register.c
--- generic/gdbtk-register.c 28 Jun 2007 03:54:31 -0000 1.33
+++ generic/gdbtk-register.c 7 Mar 2008 08:02:32 -0000
@@ -30,24 +30,34 @@
#include "gdbtk.h"
#include "gdbtk-cmds.h"
+/* Argument passed to our register-mapping functions */
+typedef union
+{
+ int integer;
+ void *ptr;
+} map_arg;
+
+/* Type of our mapping functions */
+typedef void (*map_func)(int, map_arg);
+
/* This contains the previous values of the registers, since the last call to
gdb_changed_register_list.
It is an array of (NUM_REGS+NUM_PSEUDO_REGS)*MAX_REGISTER_RAW_SIZE bytes. */
static int gdb_register_info (ClientData, Tcl_Interp *, int, Tcl_Obj **);
-static void get_register (int, void *);
-static void get_register_name (int, void *);
-static void get_register_size (int regnum, void *arg);
+static void get_register (int, map_arg);
+static void get_register_name (int, map_arg);
+static void get_register_size (int, map_arg);
static int map_arg_registers (Tcl_Interp *, int, Tcl_Obj **,
- void (*)(int, void *), void *);
-static void register_changed_p (int, void *);
+ map_func, map_arg);
+static void register_changed_p (int, map_arg);
static void setup_architecture_data (void);
static int gdb_regformat (ClientData, Tcl_Interp *, int, Tcl_Obj **);
static int gdb_reggroup (ClientData, Tcl_Interp *, int, Tcl_Obj **);
static int gdb_reggrouplist (ClientData, Tcl_Interp *, int, Tcl_Obj **);
-static void get_register_types (int regnum, void *arg);
+static void get_register_types (int regnum, map_arg);
static char *old_regs = NULL;
static int *regformat = (int *)NULL;
@@ -116,8 +126,8 @@
Tcl_Obj **objv)
{
int index;
- void *argp;
- void (*func)(int, void *);
+ map_arg arg;
+ map_func func;
static const char *commands[] = {"changed", "name", "size", "value", "type",
"format", "group", "grouplist", NULL};
enum commands_enum { REGINFO_CHANGED, REGINFO_NAME, REGINFO_SIZE, REGINFO_VALUE,
@@ -144,7 +154,7 @@
{
case REGINFO_CHANGED:
func = register_changed_p;
- argp = NULL;
+ arg.ptr = NULL;
break;
case REGINFO_NAME:
@@ -153,12 +163,12 @@
char *s = Tcl_GetStringFromObj (objv[0], &len);
if (objc != 0 && strncmp (s, "-numbers", len) == 0)
{
- argp = (void *) 1;
+ arg.integer = 1;
objc--;
objv++;
}
else
- argp = NULL;
+ arg.ptr = NULL;
func = get_register_name;
}
@@ -166,17 +176,17 @@
case REGINFO_SIZE:
func = get_register_size;
- argp = NULL;
+ arg.ptr = NULL;
break;
case REGINFO_VALUE:
func = get_register;
- argp = NULL;
+ arg.ptr = NULL;
break;
case REGINFO_TYPE:
func = get_register_types;
- argp = NULL;
+ arg.ptr = NULL;
break;
case REGINFO_FORMAT:
@@ -192,11 +202,11 @@
return TCL_ERROR;
}
- return map_arg_registers (interp, objc, objv, func, argp);
+ return map_arg_registers (interp, objc, objv, func, arg);
}
static void
-get_register_size (int regnum, void *arg)
+get_register_size (int regnum, map_arg arg)
{
Tcl_ListObjAppendElement (gdbtk_interp, result_ptr->obj_ptr,
Tcl_NewIntObj (register_size (current_gdbarch, regnum)));
@@ -207,7 +217,7 @@
/* special registers. */
static void
-get_register_types (int regnum, void *arg)
+get_register_types (int regnum, map_arg arg)
{
struct type *reg_vtype;
int i,n;
@@ -256,7 +266,7 @@
static void
-get_register (int regnum, void *arg)
+get_register (int regnum, map_arg arg)
{
int realnum;
CORE_ADDR addr;
@@ -342,10 +352,10 @@
}
static void
-get_register_name (int regnum, void *argp)
+get_register_name (int regnum, map_arg arg)
{
/* Non-zero if the caller wants the register numbers, too. */
- int numbers = (int) argp;
+ int numbers = arg.integer;
Tcl_Obj *name
= Tcl_NewStringObj (gdbarch_register_name (current_gdbarch, regnum), -1);
Tcl_Obj *elt;
@@ -370,7 +380,7 @@
static int
map_arg_registers (Tcl_Interp *interp, int objc, Tcl_Obj **objv,
- void (*func) (int regnum, void *argp), void *argp)
+ map_func func, map_arg arg)
{
int regnum, numregs;
@@ -391,7 +401,7 @@
if (gdbarch_register_name (current_gdbarch, regnum) == NULL
|| *(gdbarch_register_name (current_gdbarch, regnum)) == '\0')
continue;
- func (regnum, argp);
+ func (regnum, arg);
}
return TCL_OK;
}
@@ -413,7 +423,7 @@
}
if (regnum >= 0 && regnum < numregs)
- func (regnum, argp);
+ func (regnum, arg);
else
{
Tcl_SetStringObj (result_ptr->obj_ptr, "bad register number", -1);
@@ -424,7 +434,7 @@
}
static void
-register_changed_p (int regnum, void *argp)
+register_changed_p (int regnum, map_arg arg)
{
char raw_buffer[MAX_REGISTER_SIZE];
Index: generic/gdbtk-stack.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-stack.c,v
retrieving revision 1.26
diff -u -r1.26 gdbtk-stack.c
--- generic/gdbtk-stack.c 2 Jul 2007 18:33:22 -0000 1.26
+++ generic/gdbtk-stack.c 7 Mar 2008 08:02:32 -0000
@@ -295,7 +295,7 @@
return TCL_ERROR;
}
- arguments = (int) clientData;
+ arguments = *(int*) clientData;
/* Initialize the result pointer to an empty list. */
Index: generic/gdbtk-wrapper.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-wrapper.c,v
retrieving revision 1.14
diff -u -r1.14 gdbtk-wrapper.c
--- generic/gdbtk-wrapper.c 27 Apr 2007 15:39:50 -0000 1.14
+++ generic/gdbtk-wrapper.c 7 Mar 2008 08:02:33 -0000
@@ -152,10 +152,10 @@
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) val;
- args.args[1] = varstring;
- args.args[2] = (char *) stream;
- args.args[3] = (char *) show;
+ args.args[0].ptr = val;
+ args.args[1].ptr = varstring;
+ args.args[2].ptr = stream;
+ args.args[3].integer = show;
return call_wrapped_function ((catch_errors_ftype *) wrap_type_print, &args);
}
@@ -163,10 +163,10 @@
wrap_type_print (char *a)
{
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a;
- value_ptr val = (value_ptr) (*args)->args[0];
- char *varstring = (*args)->args[1];
- struct ui_file *stream = (struct ui_file *) (*args)->args[2];
- int show = (int) (*args)->args[3];
+ value_ptr val = (value_ptr) (*args)->args[0].ptr;
+ char *varstring = (*args)->args[1].ptr;
+ struct ui_file *stream = (struct ui_file *) (*args)->args[2].ptr;
+ int show = (*args)->args[3].integer;
type_print (value_type (val), varstring, stream, show);
return 1;
}
@@ -183,14 +183,14 @@
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) type;
- args.args[1] = (char *) valaddr;
- args.args[2] = (char *) &address;
- args.args[3] = (char *) stream;
- args.args[4] = (char *) format;
- args.args[5] = (char *) deref_ref;
- args.args[6] = (char *) recurse;
- args.args[7] = (char *) pretty;
+ args.args[0].ptr = type;
+ args.args[1].ptr = valaddr;
+ args.args[2].ptr = &address;
+ args.args[3].ptr = stream;
+ args.args[4].integer = format;
+ args.args[5].integer = deref_ref;
+ args.args[6].integer = recurse;
+ args.args[7].integer = pretty;
return call_wrapped_function ((catch_errors_ftype *) wrap_val_print, &args);
}
@@ -208,14 +208,14 @@
int recurse;
enum val_prettyprint pretty;
- type = (struct type *) (*args)->args[0];
- valaddr = (gdb_byte *) (*args)->args[1];
- address = *(CORE_ADDR *) (*args)->args[2];
- stream = (struct ui_file *) (*args)->args[3];
- format = (int) (*args)->args[4];
- deref_ref = (int) (*args)->args[5];
- recurse = (int) (*args)->args[6];
- pretty = (enum val_prettyprint) (*args)->args[7];
+ type = (struct type *) (*args)->args[0].ptr;
+ valaddr = (gdb_byte *) (*args)->args[1].ptr;
+ address = *(CORE_ADDR *) (*args)->args[2].ptr;
+ stream = (struct ui_file *) (*args)->args[3].ptr;
+ format = (*args)->args[4].integer;
+ deref_ref = (*args)->args[5].integer;
+ recurse = (*args)->args[6].integer;
+ pretty = (enum val_prettyprint) (*args)->args[7].integer;
val_print (type, valaddr, 0, address, stream, format, deref_ref,
recurse, pretty);
@@ -227,7 +227,7 @@
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) value;
+ args.args[0].ptr = value;
return call_wrapped_function ((catch_errors_ftype *) wrap_value_fetch_lazy, &args);
}
@@ -236,7 +236,7 @@
{
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a;
- value_fetch_lazy ((value_ptr) (*args)->args[0]);
+ value_fetch_lazy ((value_ptr) (*args)->args[0].ptr);
return 1;
}
@@ -245,13 +245,13 @@
{
struct gdb_wrapper_arguments args;
gdb_result result;
- args.args[0] = (char *) exp;
+ args.args[0].ptr = exp;
result = call_wrapped_function ((catch_errors_ftype *) wrap_evaluate_expression, &args);
if (result != GDB_OK)
return result;
- *value = (value_ptr) args.result;
+ *value = (value_ptr) args.result.ptr;
return GDB_OK;
}
@@ -260,8 +260,8 @@
{
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a;
- (*args)->result =
- (char *) evaluate_expression ((struct expression *) (*args)->args[0]);
+ (*args)->result.ptr =
+ evaluate_expression ((struct expression *) (*args)->args[0].ptr);
return 1;
}
@@ -274,14 +274,14 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) val1;
- args.args[1] = (char *) val2;
+ args.args[0].ptr = val1;
+ args.args[1].ptr = val2;
r = call_wrapped_function ((catch_errors_ftype *) wrap_value_equal, &args);
if (r != GDB_OK)
return r;
- *result = (int) args.result;
+ *result = args.result.integer;
return GDB_OK;
}
@@ -291,10 +291,10 @@
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a;
value_ptr val1, val2;
- val1 = (value_ptr) (*args)->args[0];
- val2 = (value_ptr) (*args)->args[1];
+ val1 = (value_ptr) (*args)->args[0].ptr;
+ val2 = (value_ptr) (*args)->args[1].ptr;
- (*args)->result = (char *) value_equal (val1, val2);
+ (*args)->result.integer = value_equal (val1, val2);
return 1;
}
@@ -305,15 +305,15 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) stringptr;
- args.args[1] = (char *) block;
- args.args[2] = (char *) comma;
+ args.args[0].ptr = stringptr;
+ args.args[1].ptr = block;
+ args.args[2].integer = comma;
r = call_wrapped_function ((catch_errors_ftype *) wrap_parse_exp_1, &args);
if (r != GDB_OK)
return r;
- *result = (struct expression *) args.result;
+ *result = (struct expression *) args.result.ptr;
return GDB_OK;
}
@@ -325,11 +325,11 @@
char **stringptr;
int comma;
- stringptr = (char **) (*args)->args[0];
- block = (struct block *) (*args)->args[1];
- comma = (int) (*args)->args[2];
+ stringptr = (char **) (*args)->args[0].ptr;
+ block = (struct block *) (*args)->args[1].ptr;
+ comma = (*args)->args[2].integer;
- (*args)->result = (char *) parse_exp_1 (stringptr, block, comma);
+ (*args)->result.ptr = parse_exp_1 (stringptr, block, comma);
return 1;
}
@@ -339,13 +339,13 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) exp;
+ args.args[0].ptr = exp;
r = call_wrapped_function ((catch_errors_ftype *) wrap_evaluate_type, &args);
if (r != GDB_OK)
return r;
- *result = (value_ptr) args.result;
+ *result = (value_ptr) args.result.ptr;
return GDB_OK;
}
@@ -355,8 +355,8 @@
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
struct expression *exp;
- exp = (struct expression *) (*args)->args[0];
- (*args)->result = (char *) evaluate_type (exp);
+ exp = (struct expression *) (*args)->args[0].ptr;
+ (*args)->result.ptr = evaluate_type (exp);
return 1;
}
@@ -366,13 +366,13 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) &pc;
+ args.args[0].ptr = &pc;
r = call_wrapped_function ((catch_errors_ftype *) wrap_block_for_pc, &args);
if (r != GDB_OK)
return r;
- *result = (struct block *) args.result;
+ *result = (struct block *) args.result.ptr;
return GDB_OK;
}
@@ -382,8 +382,8 @@
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
CORE_ADDR pc;
- pc = *(CORE_ADDR *) (*args)->args[0];
- (*args)->result = (char *) block_for_pc (pc);
+ pc = *(CORE_ADDR *) (*args)->args[0].ptr;
+ (*args)->result.ptr = block_for_pc (pc);
return 1;
}
@@ -393,13 +393,13 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) block;
+ args.args[0].ptr = block;
r = call_wrapped_function ((catch_errors_ftype *) wrap_block_innermost_frame, &args);
if (r != GDB_OK)
return r;
- *result = (struct frame_info *) args.result;
+ *result = (struct frame_info *) args.result.ptr;
return GDB_OK;
}
@@ -409,8 +409,8 @@
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
struct block *block;
- block = (struct block *) (*args)->args[0];
- (*args)->result = (char *) block_innermost_frame (block);
+ block = (struct block *) (*args)->args[0].ptr;
+ (*args)->result.ptr = block_innermost_frame (block);
return 1;
}
@@ -439,13 +439,13 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) val;
+ args.args[0].ptr = val;
r = call_wrapped_function ((catch_errors_ftype *) wrap_value_ind, &args);
if (r != GDB_OK)
return r;
- *rval = (value_ptr) args.result;
+ *rval = (value_ptr) args.result.ptr;
return GDB_OK;
}
@@ -455,8 +455,8 @@
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
value_ptr val;
- val = (value_ptr) (*args)->args[0];
- (*args)->result = (char *) value_ind (val);
+ val = (value_ptr) (*args)->args[0].ptr;
+ (*args)->result.ptr = value_ind (val);
return 1;
}
@@ -466,15 +466,15 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) val;
- args.args[1] = (char *) &low;
- args.args[2] = (char *) #
+ args.args[0].ptr = val;
+ args.args[1].integer = low;
+ args.args[2].integer = num;
r = call_wrapped_function ((catch_errors_ftype *) wrap_value_slice, &args);
if (r != GDB_OK)
return r;
- *rval = (value_ptr) args.result;
+ *rval = (value_ptr) args.result.ptr;
return GDB_OK;
}
@@ -485,10 +485,10 @@
value_ptr val;
int low, num;
- val = (value_ptr) (*args)->args[0];
- low = *(int *) (*args)->args[1];
- num = *(int *) (*args)->args[2];
- (*args)->result = (char *) value_slice (val, low, num);
+ val = (value_ptr) (*args)->args[0].ptr;
+ low = (*args)->args[1].integer;
+ num = (*args)->args[2].integer;
+ (*args)->result.ptr = value_slice (val, low, num);
return 1;
}
@@ -500,14 +500,14 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) val;
+ args.args[0].ptr = val;
r = call_wrapped_function ((catch_errors_ftype *) wrap_value_coerce_array,
&args);
if (r != GDB_OK)
return r;
- *rval = (value_ptr) args.result;
+ *rval = (value_ptr) args.result.ptr;
return GDB_OK;
}
@@ -517,8 +517,8 @@
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
value_ptr val;
- val = (value_ptr) (*args)->args[0];
- (*args)->result = (char *) value_coerce_array (val);
+ val = (value_ptr) (*args)->args[0].ptr;
+ (*args)->result.ptr = value_coerce_array (val);
return 1;
}
@@ -533,16 +533,16 @@
struct gdb_wrapper_arguments argss;
gdb_result r;
- argss.args[0] = (char *) argp;
- argss.args[1] = (char *) args;
- argss.args[2] = name;
- argss.args[3] = (char *) static_memfunc;
- argss.args[4] = err;
+ argss.args[0].ptr = argp;
+ argss.args[1].ptr = args;
+ argss.args[2].ptr = name;
+ argss.args[3].ptr = static_memfunc;
+ argss.args[4].ptr = err;
r = call_wrapped_function ((catch_errors_ftype *) wrap_value_struct_elt, &argss);
if (r != GDB_OK)
return r;
- *rval = (value_ptr) argss.result;
+ *rval = (value_ptr) argss.result.ptr;
return GDB_OK;
}
@@ -555,13 +555,13 @@
int *static_memfunc;
char *err;
- argp = (value_ptr *) (*argss)->args[0];
- args = (value_ptr *) (*argss)->args[1];
- name = (*argss)->args[2];
- static_memfunc = (int *) (*argss)->args[3];
- err = (*argss)->args[4];
+ argp = (value_ptr *) (*argss)->args[0].ptr;
+ args = (value_ptr *) (*argss)->args[1].ptr;
+ name = (char *) (*argss)->args[2].ptr;
+ static_memfunc = (int *) (*argss)->args[3].ptr;
+ err = (char *) (*argss)->args[4].ptr;
- (*argss)->result = (char *) value_struct_elt (argp, args, name, static_memfunc, err);
+ (*argss)->result.ptr = value_struct_elt (argp, args, name, static_memfunc, err);
return 1;
}
@@ -571,14 +571,14 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) type;
- args.args[1] = (char *) val;
+ args.args[0].ptr = type;
+ args.args[1].ptr = val;
r = call_wrapped_function ((catch_errors_ftype *) wrap_value_cast, &args);
if (r != GDB_OK)
return r;
- *rval = (value_ptr) args.result;
+ *rval = (value_ptr) args.result.ptr;
return GDB_OK;
}
@@ -589,9 +589,9 @@
value_ptr val;
struct type *type;
- type = (struct type *) (*args)->args[0];
- val = (value_ptr) (*args)->args[1];
- (*args)->result = (char *) value_cast (type, val);
+ type = (struct type *) (*args)->args[0].ptr;
+ val = (value_ptr) (*args)->args[1].ptr;
+ (*args)->result.ptr = value_cast (type, val);
return 1;
}
@@ -602,13 +602,13 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) fi;
+ args.args[0].ptr = fi;
r = call_wrapped_function ((catch_errors_ftype *) wrap_get_frame_block, &args);
if (r != GDB_OK)
return r;
- *rval = (struct block *) args.result;
+ *rval = (struct block *) args.result.ptr;
return GDB_OK;
}
@@ -618,8 +618,8 @@
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
struct frame_info *fi;
- fi = (struct frame_info *) (*args)->args[0];
- (*args)->result = (char *) get_frame_block (fi, NULL);
+ fi = (struct frame_info *) (*args)->args[0].ptr;
+ (*args)->result.ptr = get_frame_block (fi, NULL);
return 1;
}
@@ -630,12 +630,12 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) fi;
+ args.args[0].ptr = fi;
r = call_wrapped_function ((catch_errors_ftype *) wrap_get_prev_frame, &args);
if (r != GDB_OK)
return r;
- *result = (struct frame_info *) args.result;
+ *result = (struct frame_info *) args.result.ptr;
return GDB_OK;
}
@@ -643,9 +643,9 @@
wrap_get_prev_frame (char *opaque_arg)
{
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
- struct frame_info *fi = (struct frame_info *) (*args)->args[0];
+ struct frame_info *fi = (struct frame_info *) (*args)->args[0].ptr;
- (*args)->result = (char *) get_prev_frame (fi);
+ (*args)->result.ptr = get_prev_frame (fi);
return 1;
}
@@ -655,12 +655,12 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) fi;
+ args.args[0].ptr = fi;
r = call_wrapped_function ((catch_errors_ftype *) wrap_get_next_frame, &args);
if (r != GDB_OK)
return r;
- *result = (struct frame_info *) args.result;
+ *result = (struct frame_info *) args.result.ptr;
return GDB_OK;
}
@@ -668,9 +668,9 @@
wrap_get_next_frame (char *opaque_arg)
{
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
- struct frame_info *fi = (struct frame_info *) (*args)->args[0];
+ struct frame_info *fi = (struct frame_info *) (*args)->args[0].ptr;
- (*args)->result = (char *) get_next_frame (fi);
+ (*args)->result.ptr = get_next_frame (fi);
return 1;
}
@@ -681,15 +681,15 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) fi;
- args.args[1] = (char *) start;
+ args.args[0].ptr = fi;
+ args.args[1].ptr = start;
r = call_wrapped_function ((catch_errors_ftype *) wrap_find_relative_frame,
&args);
if (r != GDB_OK)
return r;
- *result = (struct frame_info *) args.result;
+ *result = (struct frame_info *) args.result.ptr;
return GDB_OK;
}
@@ -697,10 +697,10 @@
wrap_find_relative_frame (char *opaque_arg)
{
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
- struct frame_info *fi = (struct frame_info *) (*args)->args[0];
- int *start = (int *) (*args)->args[1];
+ struct frame_info *fi = (struct frame_info *) (*args)->args[0].ptr;
+ int *start = (int *) (*args)->args[1].ptr;
- (*args)->result = (char *) find_relative_frame (fi, start);
+ (*args)->result.ptr = find_relative_frame (fi, start);
return 1;
}
@@ -715,7 +715,7 @@
if (r != GDB_OK)
return r;
- *result = (struct frame_info *) args.result;
+ *result = (struct frame_info *) args.result.ptr;
return GDB_OK;
}
@@ -724,7 +724,7 @@
{
struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg;
- (*args)->result = (char *) get_current_frame ();
+ (*args)->result.ptr = get_current_frame ();
return 1;
}
@@ -735,15 +735,15 @@
struct gdb_wrapper_arguments args;
gdb_result r;
- args.args[0] = (char *) varp;
- args.args[1] = (char *) changelist;
- args.args[2] = (char *) explicit;
+ args.args[0].ptr = varp;
+ args.args[1].ptr = changelist;
+ args.args[2].integer = explicit;
r = call_wrapped_function ((catch_errors_ftype *) wrap_varobj_update, &args);
if (r != GDB_OK)
return r;
- *result = (int) args.result;
+ *result = args.result.integer;
return GDB_OK;
}
@@ -751,10 +751,10 @@
{
struct gdb_wrapper_arguments **args
= (struct gdb_wrapper_arguments **) opaque_arg;
- struct varobj **varp = (struct varobj **) (*args)->args[0];
- struct varobj ***changelist = (struct varobj ***) (*args)->args[1];
- int explicit = (int) (*args)->args[2];
+ 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 = (char *) varobj_update (varp, changelist, explicit);
+ (*args)->result.integer = varobj_update (varp, changelist, explicit);
return 1;
}
Index: generic/gdbtk-wrapper.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-wrapper.h,v
retrieving revision 1.9
diff -u -r1.9 gdbtk-wrapper.h
--- generic/gdbtk-wrapper.h 27 Apr 2007 15:39:50 -0000 1.9
+++ generic/gdbtk-wrapper.h 7 Mar 2008 08:02:33 -0000
@@ -26,10 +26,18 @@
struct gdb_wrapper_arguments {
/* Pointer to some result from the gdb function call, if any */
- char *result;
+ union
+ {
+ int integer;
+ void *ptr;
+ } result;
/* The list of arguments. */
- char *args[10];
+ union
+ {
+ void *ptr;
+ int integer;
+ } args[10];
};
/* FIXME: cagney/2002-01-04: GDB no longer uses or supplies the
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-03-07 8:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-07 8:06 [PATCH] Fix pointer conversion errors Keith Seitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).