gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gdb / infcall.h
index 2db7ee01f09a03e333dde1cbcb0e679c84c55d7f..a77a6ce44f84afedc9ea8f38ce8e78f8fcb80a75 100644 (file)
@@ -1,6 +1,6 @@
 /* Perform an inferior function call, for GDB, the GNU debugger.
 
-   Copyright (C) 2003, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+   Copyright (C) 2003-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #ifndef INFCALL_H
 #define INFCALL_H
 
+#include "dummy-frame.h"
+#include "gdbsupport/array-view.h"
+
 struct value;
 struct type;
 
+/* Determine a function's address and its return type from its value.
+   If the function is a GNU ifunc, then return the address of the
+   target function, and set *FUNCTION_TYPE to the target function's
+   type, and *RETVAL_TYPE to the target function's return type.
+   Calls error() if the function is not valid for calling.  */
+
 extern CORE_ADDR find_function_addr (struct value *function, 
-                                    struct type **retval_type);
+                                    struct type **retval_type,
+                                    struct type **function_type = NULL);
 
 /* Perform a function call in the inferior.
 
-   ARGS is a vector of values of arguments (NARGS of them).  FUNCTION
-   is a value, the function to be called.  Returns a value
-   representing what the function returned.  May fail to return, if a
-   breakpoint or signal is hit during the execution of the function.
+   ARGS is a vector of values of arguments.  FUNCTION is a value, the
+   function to be called.  Returns a value representing what the
+   function returned.  May fail to return, if a breakpoint or signal
+   is hit during the execution of the function.
+
+   DEFAULT_RETURN_TYPE is used as function return type if the return
+   type is unknown.  This is used when calling functions with no debug
+   info.
+
+   ARGS is modified to contain coerced values.  */
+
+extern struct value *call_function_by_hand (struct value *function,
+                                           type *default_return_type,
+                                           gdb::array_view<value *> args);
+
+/* Similar to call_function_by_hand and additional call
+   register_dummy_frame_dtor with DUMMY_DTOR and DUMMY_DTOR_DATA for the
+   created inferior call dummy frame.  */
+
+extern struct value *
+  call_function_by_hand_dummy (struct value *function,
+                              type *default_return_type,
+                              gdb::array_view<value *> args,
+                              dummy_frame_dtor_ftype *dummy_dtor,
+                              void *dummy_dtor_data);
 
-   ARGS is modified to contain coerced values. */
+/* Throw an error indicating that the user tried to call a function
+   that has unknown return type.  FUNC_NAME is the name of the
+   function to be included in the error message; may be NULL, in which
+   case the error message doesn't include a function name.  */
 
-extern struct value *call_function_by_hand (struct value *function, int nargs,
-                                           struct value **args);
+extern void error_call_unknown_return_type (const char *func_name);
 
 #endif
This page took 0.025918 seconds and 4 git commands to generate.