* wrapper.h: Update copyright year. Properly wrap a few
authorMark Kettenis <kettenis@gnu.org>
Wed, 16 Feb 2005 13:21:48 +0000 (13:21 +0000)
committerMark Kettenis <kettenis@gnu.org>
Wed, 16 Feb 2005 13:21:48 +0000 (13:21 +0000)
prototypes.
(struct gdb_wrapper_arguments): Remove forward declaration.
* wrapper.c: Update copyright year.  Include "ui-out.h".
(struct gdb_wrapper_arguments): Remove.
(struct captured_value_struct_elt_args): Remove.
(wrapper_parse_exp_1, wrap_evaluate_expression)
(wrap_value_fetch_lazy, wrap_value_equal, wrap_value_assign)
(wrap_value_subscript, wrap_value_ind, wrap_parse_and_eval_type)
(do_captured_value_struct_elf): Remove functions.
(gdb_parse_exp_1, gdb_evaluate_expression, gdb_value_fetch_lazy)
(gdb_value_equal, gdb_value_assign, gdb_value_subscript)
(gdb_value_ind, gdb_parse_and_eval_type, gdb_value_struct_elt):
Re-implement using TRY_CATCH.

gdb/ChangeLog
gdb/Makefile.in
gdb/wrapper.c
gdb/wrapper.h

index 6493af46c6a3fcafb306641deac07838963590ad..bc62e5e879c597b1cb027c4eabebd2dff10e3f47 100644 (file)
@@ -1,3 +1,20 @@
+2005-02-16  Mark Kettenis  <kettenis@gnu.org>
+
+       * wrapper.h: Update copyright year.  Properly wrap a few
+       prototypes.
+       (struct gdb_wrapper_arguments): Remove forward declaration.
+       * wrapper.c: Update copyright year.  Include "ui-out.h".
+       (struct gdb_wrapper_arguments): Remove.
+       (struct captured_value_struct_elt_args): Remove.
+       (wrapper_parse_exp_1, wrap_evaluate_expression)
+       (wrap_value_fetch_lazy, wrap_value_equal, wrap_value_assign)
+       (wrap_value_subscript, wrap_value_ind, wrap_parse_and_eval_type)
+       (do_captured_value_struct_elf): Remove functions.
+       (gdb_parse_exp_1, gdb_evaluate_expression, gdb_value_fetch_lazy)
+       (gdb_value_equal, gdb_value_assign, gdb_value_subscript)
+       (gdb_value_ind, gdb_parse_and_eval_type, gdb_value_struct_elt):
+       Re-implement using TRY_CATCH.
+
 2005-02-16  Yoshinori Sato  <ysato@users.sourceforge.jp>
 
        * remote-e7000.c: unuse TM_FILE defined macro.
index 8ee2c3f0fc28622133f1668d82f60a5efc2ad0fb..225b83c6c350e8d7af0cea7d260657145bbe5b11 100644 (file)
@@ -2709,7 +2709,8 @@ wince.o: wince.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
        $(objfiles_h) $(gdb_string_h) $(gdbthread_h) $(gdbcmd_h) \
        $(wince_stub_h) $(regcache_h) $(mips_tdep_h)
 wince-stub.o: wince-stub.c $(wince_stub_h)
-wrapper.o: wrapper.c $(defs_h) $(value_h) $(exceptions_h) $(wrapper_h)
+wrapper.o: wrapper.c $(defs_h) $(value_h) $(exceptions_h) $(wrapper_h) \
+       $(ui_out_h)
 xcoffread.o: xcoffread.c $(defs_h) $(bfd_h) $(gdb_string_h) $(gdb_stat_h) \
        $(coff_internal_h) $(libcoff_h) $(coff_xcoff_h) $(libxcoff_h) \
        $(coff_rs6000_h) $(symtab_h) $(gdbtypes_h) $(symfile_h) \
index 706394baa6eccbceee9e5c92b41b891eab22dea7..39f8eaa44abe743f74c8b9ed3ebc3ccc8b970e28 100644 (file)
@@ -1,5 +1,6 @@
-/* Longjump free calls to gdb internal routines.
-   Copyright 1999, 2000 Free Software Foundation, Inc.
+/* Longjump free calls to GDB internal routines.
+
+   Copyright 1999, 2000, 2005 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
 #include "value.h"
 #include "exceptions.h"
 #include "wrapper.h"
-
-/* 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 */
-    union wrapper_results 
-      {
-       int   integer;
-       void *pointer;
-      } result;
-       
-
-    /* The list of arguments. */
-    union wrapper_args 
-      {
-       int   integer;
-       void *pointer;
-      } args[10];
-  };
-
-struct captured_value_struct_elt_args
-{
-  struct value **argp;
-  struct value **args;
-  char *name;
-  int *static_memfuncp;
-  char *err;
-  struct value **result_ptr;
-};
-
-static int wrap_parse_exp_1 (char *);
-
-static int wrap_evaluate_expression (char *);
-
-static int wrap_value_fetch_lazy (char *);
-
-static int wrap_value_equal (char *);
-
-static int wrap_value_assign (char *);
-
-static int wrap_value_subscript (char *);
-
-static int wrap_value_ind (char *opaque_arg);
-
-static int do_captured_value_struct_elt (struct ui_out *uiout, void *data);
-
-static int wrap_parse_and_eval_type (char *);
+#include "ui-out.h"
 
 int
 gdb_parse_exp_1 (char **stringptr, struct block *block, int comma,
                 struct expression **expression)
 {
-  struct gdb_wrapper_arguments args;
-  args.args[0].pointer = stringptr;
-  args.args[1].pointer = block;
-  args.args[2].integer = comma;
+  volatile struct exception except;
 
-  if (!catch_errors ((catch_errors_ftype *) wrap_parse_exp_1, &args,
-                    "", RETURN_MASK_ERROR))
+  TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      /* An error occurred */
-      return 0;
+      *expression = parse_exp_1 (stringptr, block, comma);
     }
 
-  *expression = (struct expression *) args.result.pointer;
-  return 1;
-  
-}
-
-static int
-wrap_parse_exp_1 (char *argptr)
-{
-  struct gdb_wrapper_arguments *args 
-    = (struct gdb_wrapper_arguments *) argptr;
-  args->result.pointer = parse_exp_1((char **) args->args[0].pointer,
-                                    (struct block *) args->args[1].pointer,
-                                    args->args[2].integer);
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 int
 gdb_evaluate_expression (struct expression *exp, struct value **value)
 {
-  struct gdb_wrapper_arguments args;
-  args.args[0].pointer = exp;
+  volatile struct exception except;
 
-  if (!catch_errors ((catch_errors_ftype *) wrap_evaluate_expression, &args,
-                    "", RETURN_MASK_ERROR))
+  TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      /* An error occurred */
-      return 0;
+      *value = evaluate_expression(exp);
     }
 
-  *value = (struct value *) args.result.pointer;
-  return 1;
-}
-
-static int
-wrap_evaluate_expression (char *a)
-{
-  struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
-
-  (args)->result.pointer =
-    (char *) evaluate_expression ((struct expression *) args->args[0].pointer);
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 int
-gdb_value_fetch_lazy (struct value *value)
+gdb_value_fetch_lazy (struct value *val)
 {
-  struct gdb_wrapper_arguments args;
+  volatile struct exception except;
 
-  args.args[0].pointer = value;
-  return catch_errors ((catch_errors_ftype *) wrap_value_fetch_lazy, &args,
-                      "", RETURN_MASK_ERROR);
-}
-
-static int
-wrap_value_fetch_lazy (char *a)
-{
-  struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
+  TRY_CATCH (except, RETURN_MASK_ERROR)
+    {
+      value_fetch_lazy (val);
+    }
 
-  value_fetch_lazy ((struct value *) (args)->args[0].pointer);
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 int
 gdb_value_equal (struct value *val1, struct value *val2, int *result)
 {
-  struct gdb_wrapper_arguments args;
-
-  args.args[0].pointer = val1;
-  args.args[1].pointer = val2;
+  volatile struct exception except;
 
-  if (!catch_errors ((catch_errors_ftype *) wrap_value_equal, &args,
-                    "", RETURN_MASK_ERROR))
+  TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      /* An error occurred */
-      return 0;
+      *result = value_equal (val1, val2);
     }
 
-  *result = args.result.integer;
-  return 1;
-}
-
-static int
-wrap_value_equal (char *a)
-{
-  struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
-  struct value *val1;
-  struct value *val2;
-
-  val1 = (struct value *) (args)->args[0].pointer;
-  val2 = (struct value *) (args)->args[1].pointer;
-
-  (args)->result.integer = value_equal (val1, val2);
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 int
-gdb_value_assign (struct value *val1, struct value *val2, struct value **result)
+gdb_value_assign (struct value *val1, struct value *val2,
+                 struct value **result)
 {
-  struct gdb_wrapper_arguments args;
+  volatile struct exception except;
 
-  args.args[0].pointer = val1;
-  args.args[1].pointer = val2;
-
-  if (!catch_errors ((catch_errors_ftype *) wrap_value_assign, &args,
-                    "", RETURN_MASK_ERROR))
+  TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      /* An error occurred */
-      return 0;
+      *result = value_assign (val1, val2);
     }
 
-  *result = (struct value *) args.result.pointer;
-  return 1;
-}
-
-static int
-wrap_value_assign (char *a)
-{
-  struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
-  struct value *val1;
-  struct value *val2;
-
-  val1 = (struct value *) (args)->args[0].pointer;
-  val2 = (struct value *) (args)->args[1].pointer;
-
-  (args)->result.pointer = value_assign (val1, val2);
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 int
-gdb_value_subscript (struct value *val1, struct value *val2, struct value **rval)
+gdb_value_subscript (struct value *val1, struct value *val2,
+                    struct value **result)
 {
-  struct gdb_wrapper_arguments args;
+  volatile struct exception except;
 
-  args.args[0].pointer = val1;
-  args.args[1].pointer = val2;
-
-  if (!catch_errors ((catch_errors_ftype *) wrap_value_subscript, &args,
-                    "", RETURN_MASK_ERROR))
+  TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      /* An error occurred */
-      return 0;
+      *result = value_subscript (val1, val2);
     }
 
-  *rval = (struct value *) args.result.pointer;
-  return 1;
-}
-
-static int
-wrap_value_subscript (char *a)
-{
-  struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
-  struct value *val1;
-  struct value *val2;
-
-  val1 = (struct value *) (args)->args[0].pointer;
-  val2 = (struct value *) (args)->args[1].pointer;
-
-  (args)->result.pointer = value_subscript (val1, val2);
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 int
-gdb_value_ind (struct value *val, struct value **rval)
+gdb_value_ind (struct value *val, struct value **result)
 {
-  struct gdb_wrapper_arguments args;
-
-  args.args[0].pointer = val;
+  volatile struct exception except;
 
-  if (!catch_errors ((catch_errors_ftype *) wrap_value_ind, &args,
-                    "", RETURN_MASK_ERROR))
+  TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      /* An error occurred */
-      return 0;
+      *result = value_ind (val);
     }
 
-  *rval = (struct value *) args.result.pointer;
-  return 1;
-}
-
-static int
-wrap_value_ind (char *opaque_arg)
-{
-  struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) opaque_arg;
-  struct value *val;
-
-  val = (struct value *) (args)->args[0].pointer;
-  (args)->result.pointer = value_ind (val);
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 int
 gdb_parse_and_eval_type (char *p, int length, struct type **type)
 {
-  struct gdb_wrapper_arguments args;
-  args.args[0].pointer = p;
-  args.args[1].integer = length;
+  volatile struct exception except;
 
-  if (!catch_errors ((catch_errors_ftype *) wrap_parse_and_eval_type, &args,
-                    "", RETURN_MASK_ALL))
+  TRY_CATCH (except, RETURN_MASK_ERROR)
     {
-      /* An error occurred */
-      return 0;
+      *type = parse_and_eval_type (p, length);
     }
 
-  *type = (struct type *) args.result.pointer;
-  return 1;
-}
-
-static int
-wrap_parse_and_eval_type (char *a)
-{
-  struct gdb_wrapper_arguments *args = (struct gdb_wrapper_arguments *) a;
-
-  char *p = (char *) args->args[0].pointer;
-  int length = args->args[1].integer;
-
-  args->result.pointer = (char *) parse_and_eval_type (p, length);
-
+  if (except.reason < 0)
+    return 0;
   return 1;
 }
 
 enum gdb_rc
-gdb_value_struct_elt (struct ui_out *uiout, struct value **result, struct value **argp,
-                     struct value **args, char *name, int *static_memfuncp,
-                     char *err)
+gdb_value_struct_elt (struct ui_out *uiout, struct value **result,
+                     struct value **argp, struct value **args, char *name,
+                     int *static_memfuncp, char *err)
 {
-  struct captured_value_struct_elt_args cargs;
-  cargs.argp = argp;
-  cargs.args = args;
-  cargs.name = name;
-  cargs.static_memfuncp = static_memfuncp;
-  cargs.err = err;
-  cargs.result_ptr = result;
-  return catch_exceptions (uiout, do_captured_value_struct_elt, &cargs,
-                          RETURN_MASK_ALL);
-}
+  volatile struct exception except;
 
-static int
-do_captured_value_struct_elt (struct ui_out *uiout, void *data)
-{
-  struct captured_value_struct_elt_args *cargs = data;
-  *cargs->result_ptr = value_struct_elt (cargs->argp, cargs->args, cargs->name,
-                            cargs->static_memfuncp, cargs->err);
+  TRY_CATCH (except, RETURN_MASK_ALL)
+    {
+      *result = value_struct_elt (argp, args, name, static_memfuncp, err);
+    }
+
+  if (except.reason < 0)
+    return GDB_RC_FAIL;
   return GDB_RC_OK;
 }
-
index b287b29db1e91440b975446f15867de5f5b71cc3..886c7080ee91a6142cc2a3f1a73769461d779e94 100644 (file)
@@ -1,5 +1,6 @@
-/* Longjump free calls to gdb internal routines.
-   Copyright 1999, 2000 Free Software Foundation, Inc.
+/* Longjump free calls to GDB internal routines.
+
+   Copyright 1999, 2000, 2005 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
 
 #ifndef WRAPPER_H
 #define WRAPPER_H 1
+
 #include "gdb.h"
 
 struct value;
 struct expression;
 struct block;
 
-/* Use this struct to pass arguments to wrapper routines. */
-struct gdb_wrapper_arguments;
-
 extern int gdb_parse_exp_1 (char **, struct block *,
                            int, struct expression **);
 
@@ -38,14 +37,17 @@ extern int gdb_value_equal (struct value *, struct value *, int *);
 
 extern int gdb_value_assign (struct value *, struct value *, struct value **);
 
-extern int gdb_value_subscript (struct value *, struct value *, struct value **);
+extern int gdb_value_subscript (struct value *, struct value *,
+                               struct value **);
 
-extern enum gdb_rc gdb_value_struct_elt (struct ui_out *uiout, struct value **result_ptr,
-                                        struct value **argp, struct value **args,
-                                        char *name, int *static_memfuncp, char *err);
+extern enum gdb_rc gdb_value_struct_elt (struct ui_out *uiout,
+                                        struct value **result_ptr,
+                                        struct value **argp,
+                                        struct value **args, char *name,
+                                        int *static_memfuncp, char *err);
 
 extern int gdb_value_ind (struct value *val, struct value ** rval);
 
 extern int gdb_parse_and_eval_type (char *, int, struct type **);
 
-#endif /* WRAPPER_H */
+#endif /* wrapper.h */