/* Interface between gdb and its extension languages.
- Copyright (C) 2014 Free Software Foundation, Inc.
+ Copyright (C) 2014-2015 Free Software Foundation, Inc.
This file is part of GDB.
{
source_gdb_script,
source_gdb_objfile_script,
+ NULL, /* objfile_script_executor */
auto_load_gdb_scripts_enabled
};
return extlang->script_ops->objfile_script_sourcer;
}
+/* Return the objfile script "executor" function for EXTLANG.
+ This is the function that executes a script for a particular objfile.
+ If support for this language isn't compiled in, NULL is returned.
+ The extension language is not required to implement this function. */
+
+objfile_script_executor_func *
+ext_lang_objfile_script_executor
+ (const struct extension_language_defn *extlang)
+{
+ if (extlang->script_ops == NULL)
+ return NULL;
+
+ return extlang->script_ops->objfile_script_executor;
+}
+
/* Return non-zero if auto-loading of EXTLANG scripts is enabled.
Zero is returned if support for this language isn't compiled in. */
install_gdb_sigint_handler (struct signal_handler *previous)
{
/* Save here to simplify comparison. */
- RETSIGTYPE (*handle_sigint_for_compare) () = handle_sigint;
+ sighandler_t handle_sigint_for_compare = handle_sigint;
previous->handler = signal (SIGINT, handle_sigint);
if (previous->handler != handle_sigint_for_compare)
return type_array;
}
+/* Return the type of the result of the xmethod encapsulated in WORKER.
+ OBJECT, ARGS, NARGS are the same as for invoke_xmethod. */
+
+struct type *
+get_xmethod_result_type (struct xmethod_worker *worker,
+ struct value *object, struct value **args, int nargs)
+{
+ enum ext_lang_rc rc;
+ struct type *result_type;
+ const struct extension_language_defn *extlang = worker->extlang;
+
+ gdb_assert (extlang->ops->get_xmethod_arg_types != NULL);
+
+ rc = extlang->ops->get_xmethod_result_type (extlang, worker,
+ object, args, nargs,
+ &result_type);
+ if (rc == EXT_LANG_RC_ERROR)
+ {
+ error (_("Error while fetching result type of an xmethod worker "
+ "defined in %s."), extlang->capitalized_name);
+ }
+
+ return result_type;
+}
+
/* Invokes the xmethod encapsulated in WORKER and returns the result.
The method is invoked on OBJ with arguments in the ARGS array. NARGS is
the length of the this array. */