diff options
Diffstat (limited to 'gdb/gdbtk/generic/gdbtk-wrapper.c')
-rw-r--r-- | gdb/gdbtk/generic/gdbtk-wrapper.c | 721 |
1 files changed, 0 insertions, 721 deletions
diff --git a/gdb/gdbtk/generic/gdbtk-wrapper.c b/gdb/gdbtk/generic/gdbtk-wrapper.c deleted file mode 100644 index bdbf6e7c2a0..00000000000 --- a/gdb/gdbtk/generic/gdbtk-wrapper.c +++ /dev/null @@ -1,721 +0,0 @@ -/* longjmp-free interface between gdb and gdbtk. - Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. - - This file is part of GDB. - - 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 - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "defs.h" -#include "frame.h" -#include "value.h" -#include "block.h" -#include "gdbtk-wrapper.h" - -/* - * Wrapper functions exported to the world - */ - -gdb_result GDB_value_fetch_lazy (value_ptr); - -gdb_result GDB_evaluate_expression (struct expression *, value_ptr *); - -gdb_result GDB_type_print (value_ptr, char *, struct ui_file *, int); - -gdb_result GDB_val_print (struct type *type, char *valaddr, - CORE_ADDR address, struct ui_file *stream, - int format, int deref_ref, int recurse, - enum val_prettyprint pretty); - -gdb_result GDB_value_equal (value_ptr, value_ptr, int *); - -gdb_result GDB_parse_exp_1 (char **stringptr, struct block *block, int comma, - struct expression **result); - -gdb_result GDB_evaluate_type (struct expression *exp, value_ptr * result); - -gdb_result GDB_block_for_pc (CORE_ADDR pc, struct block **result); - -gdb_result GDB_block_innermost_frame (struct block *block, - struct frame_info **result); - -gdb_result GDB_reinit_frame_cache (void); - -gdb_result GDB_value_ind (value_ptr val, value_ptr * rval); - -gdb_result GDB_value_slice (value_ptr val, int low, int num, - value_ptr * rval); - -gdb_result GDB_value_coerce_array (value_ptr val, value_ptr * rval); - -gdb_result GDB_value_struct_elt (value_ptr * argp, value_ptr * args, - char *name, int *static_memfunc, - char *err, value_ptr * rval); - -gdb_result GDB_value_cast (struct type *type, value_ptr val, - value_ptr * rval); - -gdb_result GDB_get_frame_block (struct frame_info *fi, struct block **rval); - -gdb_result GDB_get_prev_frame (struct frame_info *fi, - struct frame_info **result); - -gdb_result GDB_get_next_frame (struct frame_info *fi, - struct frame_info **result); - -gdb_result GDB_find_relative_frame (struct frame_info *fi, - int *start, struct frame_info **result); - -gdb_result GDB_get_current_frame (struct frame_info **result); - -/* - * Private functions for this file - */ -static gdb_result call_wrapped_function (catch_errors_ftype *, - struct gdb_wrapper_arguments *); - -static int wrap_type_print (char *); - -static int wrap_evaluate_expression (char *); - -static int wrap_value_fetch_lazy (char *); - -static int wrap_val_print (char *); - -static int wrap_value_equal (char *); - -static int wrap_parse_exp_1 (char *opaque_arg); - -static int wrap_evaluate_type (char *opaque_arg); - -static int wrap_block_for_pc (char *opaque_arg); - -static int wrap_block_innermost_frame (char *opaque_arg); - -static int wrap_reinit_frame_cache (char *opaque_arg); - -static int wrap_value_ind (char *opaque_arg); - -static int wrap_value_slice (char *opaque_arg); - -static int wrap_value_coerce_array (char *opaque_arg); - -static int wrap_value_struct_elt (char *opaque_arg); - -static int wrap_value_cast (char *opaque_arg); - -static int wrap_get_frame_block (char *opaque_arg); - -static int wrap_get_prev_frame (char *opaque_arg); - -static int wrap_get_next_frame (char *opaque_arg); - -static int wrap_find_relative_frame (char *opaque_arg); - -static int wrap_get_current_frame (char *opaque_arg); - -static gdb_result -call_wrapped_function (catch_errors_ftype *fn, struct gdb_wrapper_arguments *arg) -{ - if (!catch_errors (fn, (char *) &arg, "", RETURN_MASK_ERROR)) - { - /* An error occurred */ - return GDB_ERROR; - } - - return GDB_OK; -} - -gdb_result -GDB_type_print (value_ptr val, char *varstring, - struct ui_file *stream, int show) -{ - struct gdb_wrapper_arguments args; - - args.args[0] = (char *) val; - args.args[1] = varstring; - args.args[2] = (char *) stream; - args.args[3] = (char *) show; - return call_wrapped_function ((catch_errors_ftype *) wrap_type_print, &args); -} - -static int -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]; - type_print (VALUE_TYPE (val), varstring, stream, show); - return 1; -} - -gdb_result -GDB_val_print (struct type *type, - char *valaddr, - CORE_ADDR address, - struct ui_file *stream, - int format, - int deref_ref, - int recurse, - enum val_prettyprint pretty) -{ - 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; - - return call_wrapped_function ((catch_errors_ftype *) wrap_val_print, &args); -} - -static int -wrap_val_print (char *a) -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a; - struct type *type; - char *valaddr; - CORE_ADDR address; - struct ui_file *stream; - int format; - int deref_ref; - int recurse; - enum val_prettyprint pretty; - - type = (struct type *) (*args)->args[0]; - valaddr = (char *) (*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]; - - val_print (type, valaddr, 0, address, stream, format, deref_ref, - recurse, pretty); - return 1; -} - -gdb_result -GDB_value_fetch_lazy (value_ptr value) -{ - struct gdb_wrapper_arguments args; - - args.args[0] = (char *) value; - return call_wrapped_function ((catch_errors_ftype *) wrap_value_fetch_lazy, &args); -} - -static int -wrap_value_fetch_lazy (char *a) -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a; - - value_fetch_lazy ((value_ptr) (*args)->args[0]); - return 1; -} - -gdb_result -GDB_evaluate_expression (struct expression *exp, value_ptr *value) -{ - struct gdb_wrapper_arguments args; - gdb_result result; - args.args[0] = (char *) exp; - - result = call_wrapped_function ((catch_errors_ftype *) wrap_evaluate_expression, &args); - if (result != GDB_OK) - return result; - - *value = (value_ptr) args.result; - return GDB_OK; -} - -static int -wrap_evaluate_expression (char *a) -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a; - - (*args)->result = - (char *) evaluate_expression ((struct expression *) (*args)->args[0]); - return 1; -} - -gdb_result -GDB_value_equal (val1, val2, result) - value_ptr val1; - value_ptr val2; - int *result; -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) val1; - args.args[1] = (char *) val2; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_value_equal, &args); - if (r != GDB_OK) - return r; - - *result = (int) args.result; - return GDB_OK; -} - -static int -wrap_value_equal (char *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]; - - (*args)->result = (char *) value_equal (val1, val2); - return 1; -} - -gdb_result -GDB_parse_exp_1 (char **stringptr, struct block *block, - int comma, struct expression **result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) stringptr; - args.args[1] = (char *) block; - args.args[2] = (char *) comma; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_parse_exp_1, &args); - if (r != GDB_OK) - return r; - - *result = (struct expression *) args.result; - return GDB_OK; -} - -static int -wrap_parse_exp_1 (char *opaque_arg) -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg; - struct block *block; - char **stringptr; - int comma; - - stringptr = (char **) (*args)->args[0]; - block = (struct block *) (*args)->args[1]; - comma = (int) (*args)->args[2]; - - (*args)->result = (char *) parse_exp_1 (stringptr, block, comma); - return 1; -} - -gdb_result -GDB_evaluate_type (struct expression *exp, value_ptr *result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) exp; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_evaluate_type, &args); - if (r != GDB_OK) - return r; - - *result = (value_ptr) args.result; - return GDB_OK; -} - -static int -wrap_evaluate_type (char *opaque_arg) -{ - 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); - return 1; -} - -gdb_result -GDB_block_for_pc (CORE_ADDR pc, struct block **result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) &pc; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_block_for_pc, &args); - if (r != GDB_OK) - return r; - - *result = (struct block *) args.result; - return GDB_OK; -} - -static int -wrap_block_for_pc (char *opaque_arg) -{ - 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); - return 1; -} - -gdb_result -GDB_block_innermost_frame (struct block *block, struct frame_info **result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) 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; - return GDB_OK; -} - -static int -wrap_block_innermost_frame (char *opaque_arg) -{ - 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); - return 1; -} - -gdb_result -GDB_reinit_frame_cache () -{ - gdb_result r; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_reinit_frame_cache, NULL); - if (r != GDB_OK) - return r; - - return GDB_OK; -} - -static int -wrap_reinit_frame_cache (char *opaque_arg) -{ - reinit_frame_cache (); - return 1; -} - -gdb_result -GDB_value_ind (value_ptr val, value_ptr *rval) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) val; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_value_ind, &args); - if (r != GDB_OK) - return r; - - *rval = (value_ptr) args.result; - return GDB_OK; -} - -static int -wrap_value_ind (char *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); - return 1; -} - -gdb_result -GDB_value_slice (value_ptr val, int low, int num, value_ptr *rval) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) val; - args.args[1] = (char *) &low; - args.args[2] = (char *) # - - r = call_wrapped_function ((catch_errors_ftype *) wrap_value_slice, &args); - if (r != GDB_OK) - return r; - - *rval = (value_ptr) args.result; - return GDB_OK; -} - -static int -wrap_value_slice (char *opaque_arg) -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg; - 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); - return 1; -} - -gdb_result -GDB_value_coerce_array (val, rval) - value_ptr val; - value_ptr *rval; -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) val; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_value_coerce_array, - &args); - if (r != GDB_OK) - return r; - - *rval = (value_ptr) args.result; - return GDB_OK; -} - -static int -wrap_value_coerce_array (char *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_coerce_array (val); - return 1; -} - -gdb_result -GDB_value_struct_elt (value_ptr *argp, - value_ptr *args, - char *name, - int *static_memfunc, - char *err, - value_ptr *rval) -{ - 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; - r = call_wrapped_function ((catch_errors_ftype *) wrap_value_struct_elt, &argss); - if (r != GDB_OK) - return r; - - *rval = (value_ptr) argss.result; - return GDB_OK; -} - -static int -wrap_value_struct_elt (char *opaque_arg) -{ - struct gdb_wrapper_arguments **argss = (struct gdb_wrapper_arguments **) opaque_arg; - value_ptr *argp, *args; - char *name; - 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]; - - (*argss)->result = (char *) value_struct_elt (argp, args, name, static_memfunc, err); - return 1; -} - -gdb_result -GDB_value_cast (struct type *type, value_ptr val, value_ptr *rval) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) type; - args.args[1] = (char *) val; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_value_cast, &args); - if (r != GDB_OK) - return r; - - *rval = (value_ptr) args.result; - return GDB_OK; -} - -static int -wrap_value_cast (char *opaque_arg) -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg; - 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); - - return 1; -} - -gdb_result -GDB_get_frame_block (struct frame_info *fi, struct block **rval) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) fi; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_get_frame_block, &args); - if (r != GDB_OK) - return r; - - *rval = (struct block *) args.result; - return GDB_OK; -} - -static int -wrap_get_frame_block (char *opaque_arg) -{ - 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); - - return 1; -} - -gdb_result -GDB_get_prev_frame (struct frame_info *fi, struct frame_info **result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) 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; - return GDB_OK; -} - -static int -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]; - - (*args)->result = (char *) get_prev_frame (fi); - return 1; -} - -gdb_result -GDB_get_next_frame (struct frame_info *fi, struct frame_info **result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) 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; - return GDB_OK; -} - -static int -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]; - - (*args)->result = (char *) get_next_frame (fi); - return 1; -} - -gdb_result -GDB_find_relative_frame (struct frame_info *fi, int *start, - struct frame_info **result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) fi; - args.args[1] = (char *) 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; - return GDB_OK; -} - -static int -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]; - - (*args)->result = (char *) find_relative_frame (fi, start); - return 1; -} - -gdb_result -GDB_get_current_frame (struct frame_info **result) -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_get_current_frame, - &args); - if (r != GDB_OK) - return r; - - *result = (struct frame_info *) args.result; - return GDB_OK; -} - -static int -wrap_get_current_frame (char *opaque_arg) -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg; - - (*args)->result = (char *) get_current_frame (); - return 1; -} - |