diff options
Diffstat (limited to 'gdb/gdbtk-wrapper.c')
-rw-r--r-- | gdb/gdbtk-wrapper.c | 475 |
1 files changed, 0 insertions, 475 deletions
diff --git a/gdb/gdbtk-wrapper.c b/gdb/gdbtk-wrapper.c deleted file mode 100644 index 9d9a263..0000000 --- a/gdb/gdbtk-wrapper.c +++ /dev/null @@ -1,475 +0,0 @@ -/* longjmp-free interface between gdb and gdbtk. - Copyright (C) 1999 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 "gdbtk-wrapper.h" - -/* - * Wrapper functions exported to the world - */ - -gdb_result GDB_value_fetch_lazy PARAMS ((value_ptr)); - -gdb_result GDB_evaluate_expression PARAMS ((struct expression *, value_ptr *)); - -gdb_result GDB_type_print PARAMS ((value_ptr, char *, GDB_FILE *, int)); - -gdb_result GDB_val_print PARAMS ((struct type *type, char *valaddr, - CORE_ADDR address, GDB_FILE *stream, - int format, int deref_ref, int recurse, - enum val_prettyprint pretty)); - -gdb_result GDB_select_frame PARAMS ((struct frame_info *, int)); - -gdb_result GDB_value_equal PARAMS ((value_ptr, value_ptr, int *)); - -gdb_result GDB_parse_exp_1 PARAMS ((char **stringptr, struct block *block, int comma, - struct expression **result)); - -gdb_result GDB_evaluate_type PARAMS ((struct expression *exp, value_ptr *result)); - -gdb_result GDB_block_for_pc PARAMS ((CORE_ADDR pc, struct block **result)); - -gdb_result GDB_block_innermost_frame PARAMS ((struct block *block, - struct frame_info **result)); - -gdb_result GDB_reinit_frame_cache PARAMS ((void)); - -gdb_result GDB_find_frame_addr_in_frame_chain PARAMS ((CORE_ADDR addr, - struct frame_info **result)); - -/* - * Private functions for this file - */ -static gdb_result call_wrapped_function PARAMS ((catch_errors_ftype *, - struct gdb_wrapper_arguments *)); - -static int wrap_type_print PARAMS ((char *)); - -static int wrap_evaluate_expression PARAMS ((char *)); - -static int wrap_value_fetch_lazy PARAMS ((char *)); - -static int wrap_val_print PARAMS ((char*)); - -static int wrap_select_frame PARAMS ((char *)); - -static int wrap_value_equal PARAMS ((char *)); - -static int wrap_parse_exp_1 PARAMS ((char *opaque_arg)); - -static int wrap_evaluate_type PARAMS ((char *opaque_arg)); - -static int wrap_block_for_pc PARAMS ((char *opaque_arg)); - -static int wrap_block_innermost_frame PARAMS ((char *opaque_arg)); - -static int wrap_reinit_frame_cache PARAMS ((char *opaque_arg)); - -static int wrap_find_frame_addr_in_frame_chain PARAMS ((char *opaque_arg)); - -static gdb_result -call_wrapped_function (fn, arg) - 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 (val, varstring, stream, show) - value_ptr val; - char *varstring; - GDB_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 (a) - 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]; - GDB_FILE *stream = (GDB_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 (type, valaddr, address, stream, format, deref_ref, - recurse, pretty) - struct type *type; - char *valaddr; - CORE_ADDR address; - GDB_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 (a) - char *a; -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a; - struct type *type; - char *valaddr; - CORE_ADDR address; - GDB_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 = (GDB_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) - 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 (a) - 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 (exp, value) - 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 (a) - 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_select_frame (fi, level) - struct frame_info *fi; - int level; -{ - struct gdb_wrapper_arguments args; - - args.args[0] = (char *) fi; - args.args[1] = (char *) &level; - - return call_wrapped_function ((catch_errors_ftype *) wrap_select_frame, &args); -} - -static int -wrap_select_frame (a) - char *a; -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) a; - int level = * (int *) (*args)->args[1]; - struct frame_info *fi = (struct frame_info *) (*args)->args[0]; - - select_frame (fi, level); - 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 (a) - 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 (stringptr, block, comma, result) - 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 (opaque_arg) - 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 (exp, result) - 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 (opaque_arg) - 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 (pc, result) - 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 (opaque_arg) - 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 (block, result) - 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 (opaque_arg) - 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 (opaque_arg) - char *opaque_arg; -{ - reinit_frame_cache (); - return 1; -} - -gdb_result -GDB_find_frame_addr_in_frame_chain (addr, result) - CORE_ADDR addr; - struct frame_info **result; -{ - struct gdb_wrapper_arguments args; - gdb_result r; - - args.args[0] = (char *) addr; - - r = call_wrapped_function ((catch_errors_ftype *) wrap_find_frame_addr_in_frame_chain, &args); - if (r != GDB_OK) - return r; - - *result = (struct frame_info *) args.result; - return GDB_OK; -} - -static int -wrap_find_frame_addr_in_frame_chain (opaque_arg) - char *opaque_arg; -{ - struct gdb_wrapper_arguments **args = (struct gdb_wrapper_arguments **) opaque_arg; - CORE_ADDR addr; - - addr = (CORE_ADDR) (*args)->args[0]; - (*args)->result = (char *) find_frame_addr_in_frame_chain (addr); - return 1; -} - - -/* Local variables: */ -/* change-log-default-name: "ChangeLog-gdbtk" */ -/* End: */ |