aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2000-03-30 19:52:35 +0000
committerMichael Snyder <msnyder@vmware.com>2000-03-30 19:52:35 +0000
commit1d1358b6679fee0ea559723c6c9b06c900e7c330 (patch)
tree79754fb613fcc6b734b903469b8bb60ed70edaa3
parent213c01f70eb6b3c7ee893a2763aaa9cbfbfa5d29 (diff)
downloadgdb-1d1358b6679fee0ea559723c6c9b06c900e7c330.zip
gdb-1d1358b6679fee0ea559723c6c9b06c900e7c330.tar.gz
gdb-1d1358b6679fee0ea559723c6c9b06c900e7c330.tar.bz2
2000-03-30 Michael Snyder <msnyder@cleaver.cygnus.com>
* ui-file.c: Include "gdb_string.h" * cli-out.c: Include gdb_string.h to avoid compiler warnings. * wrapper.[ch] (struct gdb_wrapper_arguments): Change fields into unions, since they are all used to hold both pointers and ints at various times. Casting pointer to int and vice versa gives warnings (and is not safe) if they are not the same size.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/cli-out.c1
-rw-r--r--gdb/ui-file.c1
-rw-r--r--gdb/wrapper.c61
4 files changed, 46 insertions, 26 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c7330c2..af463a0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2000-03-30 Michael Snyder <msnyder@cleaver.cygnus.com>
+ * ui-file.c: Include "gdb_string.h"
+ * cli-out.c: Include gdb_string.h to avoid compiler warnings.
+ * wrapper.[ch] (struct gdb_wrapper_arguments): Change fields into
+ unions, since they are all used to hold both pointers and ints
+ at various times. Casting pointer to int and vice versa gives
+ warnings (and is not safe) if they are not the same size.
+
+2000-03-30 Michael Snyder <msnyder@cleaver.cygnus.com>
+
* defs.h (struct continuation_arg): Make 'data' a union, to avoid
casting problems when int and pointer are not the same size.
* event-top.c (command_handler): Use data as a union.
diff --git a/gdb/cli-out.c b/gdb/cli-out.c
index ed9817f..c7abdbe 100644
--- a/gdb/cli-out.c
+++ b/gdb/cli-out.c
@@ -23,6 +23,7 @@
#include "defs.h"
#include "ui-out.h"
#include "cli-out.h"
+#include "gdb_string.h"
/* Convenience macro for allocting typesafe memory. */
diff --git a/gdb/ui-file.c b/gdb/ui-file.c
index d077009..f9d5331 100644
--- a/gdb/ui-file.c
+++ b/gdb/ui-file.c
@@ -22,6 +22,7 @@
#include "defs.h"
#include "ui-file.h"
+#include "gdb_string.h"
#undef XMALLOC
#define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
diff --git a/gdb/wrapper.c b/gdb/wrapper.c
index ea43fd9..07ac39a 100644
--- a/gdb/wrapper.c
+++ b/gdb/wrapper.c
@@ -21,16 +21,25 @@
#include "frame.h"
#include "wrapper.h"
-/* Use this struct used to pass arguments to wrapper routines. We assume
+/* Use this struct to pass arguments to wrapper routines. We assume
(arbitrarily) that no gdb function takes more than ten arguments. */
struct gdb_wrapper_arguments
{
/* Pointer to some result from the gdb function call, if any */
- char *result;
+ union wrapper_results
+ {
+ int integer;
+ void *pointer;
+ } result;
+
/* The list of arguments. */
- char *args[10];
+ union wrapper_args
+ {
+ int integer;
+ void *pointer;
+ } args[10];
};
int gdb_parse_exp_1 PARAMS ((char **, struct block *,
@@ -57,9 +66,9 @@ gdb_parse_exp_1 (stringptr, block, comma, expression)
struct expression **expression;
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) stringptr;
- args.args[1] = (char *) block;
- args.args[2] = (char *) comma;
+ args.args[0].pointer = stringptr;
+ args.args[1].pointer = block;
+ args.args[2].integer = comma;
if (!catch_errors ((catch_errors_ftype *) wrap_parse_exp_1, &args,
"", RETURN_MASK_ERROR))
@@ -68,7 +77,7 @@ gdb_parse_exp_1 (stringptr, block, comma, expression)
return 0;
}
- *expression = (struct expression *) args.result;
+ *expression = (struct expression *) args.result.pointer;
return 1;
}
@@ -79,9 +88,9 @@ wrap_parse_exp_1 (argptr)
{
struct gdb_wrapper_arguments *args
= (struct gdb_wrapper_arguments *) argptr;
- args->result = (char *) parse_exp_1((char **) args->args[0],
- (struct block *) args->args[1],
- (int) args->args[2]);
+ args->result.pointer = parse_exp_1((char **) args->args[0].pointer,
+ (struct block *) args->args[1].pointer,
+ args->args[2].integer);
return 1;
}
@@ -91,7 +100,7 @@ gdb_evaluate_expression (exp, value)
value_ptr *value;
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) exp;
+ args.args[0].pointer = exp;
if (!catch_errors ((catch_errors_ftype *) wrap_evaluate_expression, &args,
"", RETURN_MASK_ERROR))
@@ -100,7 +109,7 @@ gdb_evaluate_expression (exp, value)
return 0;
}
- *value = (value_ptr) args.result;
+ *value = (value_ptr) args.result.pointer;
return 1;
}
@@ -110,8 +119,8 @@ wrap_evaluate_expression (a)
{
struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
- (args)->result =
- (char *) evaluate_expression ((struct expression *) (args)->args[0]);
+ (args)->result.pointer =
+ (char *) evaluate_expression ((struct expression *) args->args[0].pointer);
return 1;
}
@@ -121,7 +130,7 @@ gdb_value_fetch_lazy (value)
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) value;
+ args.args[0].pointer = value;
return catch_errors ((catch_errors_ftype *) wrap_value_fetch_lazy, &args,
"", RETURN_MASK_ERROR);
}
@@ -132,7 +141,7 @@ wrap_value_fetch_lazy (a)
{
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].pointer);
return 1;
}
@@ -144,8 +153,8 @@ gdb_value_equal (val1, val2, result)
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) val1;
- args.args[1] = (char *) val2;
+ args.args[0].pointer = val1;
+ args.args[1].pointer = val2;
if (!catch_errors ((catch_errors_ftype *) wrap_value_equal, &args,
"", RETURN_MASK_ERROR))
@@ -154,7 +163,7 @@ gdb_value_equal (val1, val2, result)
return 0;
}
- *result = (int) args.result;
+ *result = args.result.integer;
return 1;
}
@@ -165,10 +174,10 @@ wrap_value_equal (a)
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].pointer;
+ val2 = (value_ptr) (args)->args[1].pointer;
- (args)->result = (char *) value_equal (val1, val2);
+ (args)->result.integer = value_equal (val1, val2);
return 1;
}
@@ -179,7 +188,7 @@ gdb_value_ind (val, rval)
{
struct gdb_wrapper_arguments args;
- args.args[0] = (char *) val;
+ args.args[0].pointer = val;
if (!catch_errors ((catch_errors_ftype *) wrap_value_ind, &args,
"", RETURN_MASK_ERROR))
@@ -188,7 +197,7 @@ gdb_value_ind (val, rval)
return 0;
}
- *rval = (value_ptr) args.result;
+ *rval = (value_ptr) args.result.pointer;
return 1;
}
@@ -199,8 +208,8 @@ wrap_value_ind (opaque_arg)
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].pointer;
+ (args)->result.pointer = value_ind (val);
return 1;
}