X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Finfcall.h;h=a77a6ce44f84afedc9ea8f38ce8e78f8fcb80a75;hb=b2c759ce68102931140ce34c2ac00619ba363622;hp=a3861fb1bf306b4ac6a513a889f245d0b33c9279;hpb=e2882c85786571175a0b0bfc3bcd2f14620b1ea3;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/infcall.h b/gdb/infcall.h index a3861fb1bf..a77a6ce44f 100644 --- a/gdb/infcall.h +++ b/gdb/infcall.h @@ -1,6 +1,6 @@ /* Perform an inferior function call, for GDB, the GNU debugger. - Copyright (C) 2003-2018 Free Software Foundation, Inc. + Copyright (C) 2003-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -21,21 +21,29 @@ #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. - DFEAULT_RETURN_TYPE is used as function return type if the return + 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. @@ -43,8 +51,7 @@ extern CORE_ADDR find_function_addr (struct value *function, extern struct value *call_function_by_hand (struct value *function, type *default_return_type, - int nargs, - struct value **args); + gdb::array_view args); /* Similar to call_function_by_hand and additional call register_dummy_frame_dtor with DUMMY_DTOR and DUMMY_DTOR_DATA for the @@ -53,8 +60,7 @@ extern struct value *call_function_by_hand (struct value *function, extern struct value * call_function_by_hand_dummy (struct value *function, type *default_return_type, - int nargs, - struct value **args, + gdb::array_view args, dummy_frame_dtor_ftype *dummy_dtor, void *dummy_dtor_data);