]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/infcall.c
Turn allocate_value into a static "constructor"
[thirdparty/binutils-gdb.git] / gdb / infcall.c
CommitLineData
04714b91
AC
1/* Perform an inferior function call, for GDB, the GNU debugger.
2
213516ef 3 Copyright (C) 1986-2023 Free Software Foundation, Inc.
04714b91
AC
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
04714b91
AC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
04714b91
AC
19
20#include "defs.h"
0700e23e 21#include "infcall.h"
04714b91 22#include "breakpoint.h"
573cda03 23#include "tracepoint.h"
04714b91
AC
24#include "target.h"
25#include "regcache.h"
26#include "inferior.h"
45741a9c 27#include "infrun.h"
04714b91
AC
28#include "block.h"
29#include "gdbcore.h"
30#include "language.h"
9ab9195f 31#include "objfiles.h"
04714b91
AC
32#include "gdbcmd.h"
33#include "command.h"
96860204 34#include "dummy-frame.h"
a93c0eb6 35#include "ada-lang.h"
aa3cfbda 36#include "f-lang.h"
347bddb7 37#include "gdbthread.h"
beb460e8 38#include "event-top.h"
76727919 39#include "observable.h"
0b333c5e
PA
40#include "top.h"
41#include "interps.h"
388a7084 42#include "thread-fsm.h"
6ccb583f 43#include <algorithm>
268a13a5 44#include "gdbsupport/scope-exit.h"
099a6354 45#include <list>
b89667eb 46
e4014689
AB
47/* True if we are debugging inferior calls. */
48
49static bool debug_infcall = false;
50
51/* Print an "infcall" debug statement. */
52
53#define infcall_debug_printf(fmt, ...) \
54 debug_prefixed_printf_cond (debug_infcall, "infcall", fmt, ##__VA_ARGS__)
55
56/* Print "infcall" enter/exit debug statements. */
57
58#define INFCALL_SCOPED_DEBUG_ENTER_EXIT \
59 scoped_debug_enter_exit (debug_infcall, "infcall")
60
61/* Print "infcall" start/end debug statements. */
62
63#define INFCALL_SCOPED_DEBUG_START_END(fmt, ...) \
64 scoped_debug_start_end (debug_infrun, "infcall", fmt, ##__VA_ARGS__)
65
66/* Implement 'show debug infcall'. */
67
68static void
69show_debug_infcall (struct ui_file *file, int from_tty,
70 struct cmd_list_element *c, const char *value)
71{
72 gdb_printf (file, _("Inferior call debugging is %s.\n"), value);
73}
74
b89667eb
DE
75/* If we can't find a function's name from its address,
76 we print this instead. */
77#define RAW_FUNCTION_ADDRESS_FORMAT "at 0x%s"
78#define RAW_FUNCTION_ADDRESS_SIZE (sizeof (RAW_FUNCTION_ADDRESS_FORMAT) \
dda83cd7 79 + 2 * sizeof (CORE_ADDR))
04714b91
AC
80
81/* NOTE: cagney/2003-04-16: What's the future of this code?
82
83 GDB needs an asynchronous expression evaluator, that means an
84 asynchronous inferior function call implementation, and that in
85 turn means restructuring the code so that it is event driven. */
86
491144b5 87static bool may_call_functions_p = true;
136afab8
PW
88static void
89show_may_call_functions_p (struct ui_file *file, int from_tty,
90 struct cmd_list_element *c,
91 const char *value)
92{
6cb06a8c
TT
93 gdb_printf (file,
94 _("Permission to call functions in the program is %s.\n"),
95 value);
136afab8
PW
96}
97
04714b91
AC
98/* How you should pass arguments to a function depends on whether it
99 was defined in K&R style or prototype style. If you define a
100 function using the K&R syntax that takes a `float' argument, then
101 callers must pass that argument as a `double'. If you define the
102 function using the prototype syntax, then you must pass the
103 argument as a `float', with no promotion.
104
105 Unfortunately, on certain older platforms, the debug info doesn't
106 indicate reliably how each function was defined. A function type's
a9ff5f12
UW
107 TYPE_PROTOTYPED flag may be clear, even if the function was defined
108 in prototype style. When calling a function whose TYPE_PROTOTYPED
109 flag is clear, GDB consults this flag to decide what to do.
04714b91
AC
110
111 For modern targets, it is proper to assume that, if the prototype
112 flag is clear, that can be trusted: `float' arguments should be
113 promoted to `double'. For some older targets, if the prototype
114 flag is clear, that doesn't tell us anything. The default is to
115 trust the debug information; the user can override this behavior
116 with "set coerce-float-to-double 0". */
117
491144b5 118static bool coerce_float_to_double_p = true;
920d2a44
AC
119static void
120show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
121 struct cmd_list_element *c, const char *value)
122{
6cb06a8c
TT
123 gdb_printf (file,
124 _("Coercion of floats to doubles "
125 "when calling functions is %s.\n"),
126 value);
920d2a44 127}
04714b91
AC
128
129/* This boolean tells what gdb should do if a signal is received while
130 in a function called from gdb (call dummy). If set, gdb unwinds
131 the stack and restore the context to what as it was before the
132 call.
133
1777feb0 134 The default is to stop in the frame where the signal was received. */
04714b91 135
491144b5 136static bool unwind_on_signal_p = false;
920d2a44
AC
137static void
138show_unwind_on_signal_p (struct ui_file *file, int from_tty,
139 struct cmd_list_element *c, const char *value)
140{
6cb06a8c
TT
141 gdb_printf (file,
142 _("Unwinding of stack if a signal is "
143 "received while in a call dummy is %s.\n"),
144 value);
920d2a44
AC
145}
146
7cd1089b
PM
147/* This boolean tells what gdb should do if a std::terminate call is
148 made while in a function called from gdb (call dummy).
149 As the confines of a single dummy stack prohibit out-of-frame
150 handlers from handling a raised exception, and as out-of-frame
151 handlers are common in C++, this can lead to no handler being found
152 by the unwinder, and a std::terminate call. This is a false positive.
153 If set, gdb unwinds the stack and restores the context to what it
154 was before the call.
155
156 The default is to unwind the frame if a std::terminate call is
157 made. */
158
491144b5 159static bool unwind_on_terminating_exception_p = true;
7cd1089b
PM
160
161static void
162show_unwind_on_terminating_exception_p (struct ui_file *file, int from_tty,
163 struct cmd_list_element *c,
164 const char *value)
165
166{
6cb06a8c
TT
167 gdb_printf (file,
168 _("Unwind stack if a C++ exception is "
169 "unhandled while in a call dummy is %s.\n"),
170 value);
7cd1089b 171}
04714b91
AC
172
173/* Perform the standard coercions that are specified
aa3cfbda 174 for arguments to be passed to C, Ada or Fortran functions.
04714b91
AC
175
176 If PARAM_TYPE is non-NULL, it is the expected parameter type.
37055cad 177 IS_PROTOTYPED is non-zero if the function declaration is prototyped. */
04714b91
AC
178
179static struct value *
7788af6d 180value_arg_coerce (struct gdbarch *gdbarch, struct value *arg,
37055cad 181 struct type *param_type, int is_prototyped)
04714b91 182{
7788af6d 183 const struct builtin_type *builtin = builtin_type (gdbarch);
d0c97917 184 struct type *arg_type = check_typedef (arg->type ());
52f0bd74 185 struct type *type
04714b91
AC
186 = param_type ? check_typedef (param_type) : arg_type;
187
aa3cfbda 188 /* Perform any Ada- and Fortran-specific coercion first. */
a93c0eb6 189 if (current_language->la_language == language_ada)
40bc484c 190 arg = ada_convert_actual (arg, type);
aa3cfbda
RB
191 else if (current_language->la_language == language_fortran)
192 type = fortran_preserve_arg_pointer (arg, type);
a93c0eb6 193
63092375
DJ
194 /* Force the value to the target if we will need its address. At
195 this point, we could allocate arguments on the stack instead of
196 calling malloc if we knew that their addresses would not be
197 saved by the called function. */
198 arg = value_coerce_to_target (arg);
199
78134374 200 switch (type->code ())
04714b91
AC
201 {
202 case TYPE_CODE_REF:
aa006118 203 case TYPE_CODE_RVALUE_REF:
fb933624
DJ
204 {
205 struct value *new_value;
206
aa006118 207 if (TYPE_IS_REFERENCE (arg_type))
b1af9e97 208 return value_cast_pointers (type, arg, 0);
fb933624
DJ
209
210 /* Cast the value to the reference's target type, and then
211 convert it back to a reference. This will issue an error
212 if the value was not previously in memory - in some cases
213 we should clearly be allowing this, but how? */
27710edb 214 new_value = value_cast (type->target_type (), arg);
78134374 215 new_value = value_ref (new_value, type->code ());
fb933624
DJ
216 return new_value;
217 }
04714b91
AC
218 case TYPE_CODE_INT:
219 case TYPE_CODE_CHAR:
220 case TYPE_CODE_BOOL:
221 case TYPE_CODE_ENUM:
222 /* If we don't have a prototype, coerce to integer type if necessary. */
223 if (!is_prototyped)
224 {
df86565b 225 if (type->length () < builtin->builtin_int->length ())
7788af6d 226 type = builtin->builtin_int;
04714b91
AC
227 }
228 /* Currently all target ABIs require at least the width of an integer
dda83cd7
SM
229 type for an argument. We may have to conditionalize the following
230 type coercion for future targets. */
df86565b 231 if (type->length () < builtin->builtin_int->length ())
7788af6d 232 type = builtin->builtin_int;
04714b91
AC
233 break;
234 case TYPE_CODE_FLT:
235 if (!is_prototyped && coerce_float_to_double_p)
236 {
df86565b 237 if (type->length () < builtin->builtin_double->length ())
7788af6d 238 type = builtin->builtin_double;
df86565b 239 else if (type->length () > builtin->builtin_double->length ())
7788af6d 240 type = builtin->builtin_long_double;
04714b91
AC
241 }
242 break;
243 case TYPE_CODE_FUNC:
244 type = lookup_pointer_type (type);
245 break;
246 case TYPE_CODE_ARRAY:
247 /* Arrays are coerced to pointers to their first element, unless
dda83cd7
SM
248 they are vectors, in which case we want to leave them alone,
249 because they are passed by value. */
67bd3fd5 250 if (current_language->c_style_arrays_p ())
bd63c870 251 if (!type->is_vector ())
27710edb 252 type = lookup_pointer_type (type->target_type ());
04714b91
AC
253 break;
254 case TYPE_CODE_UNDEF:
255 case TYPE_CODE_PTR:
256 case TYPE_CODE_STRUCT:
257 case TYPE_CODE_UNION:
258 case TYPE_CODE_VOID:
259 case TYPE_CODE_SET:
260 case TYPE_CODE_RANGE:
261 case TYPE_CODE_STRING:
04714b91 262 case TYPE_CODE_ERROR:
0d5de010
DJ
263 case TYPE_CODE_MEMBERPTR:
264 case TYPE_CODE_METHODPTR:
04714b91
AC
265 case TYPE_CODE_METHOD:
266 case TYPE_CODE_COMPLEX:
267 default:
268 break;
269 }
270
271 return value_cast (type, arg);
272}
273
8388016d 274/* See infcall.h. */
04714b91 275
a9fa03de 276CORE_ADDR
8388016d
PA
277find_function_addr (struct value *function,
278 struct type **retval_type,
279 struct type **function_type)
04714b91 280{
d0c97917 281 struct type *ftype = check_typedef (function->type ());
8ee511af 282 struct gdbarch *gdbarch = ftype->arch ();
7788af6d 283 struct type *value_type = NULL;
09b58708
JK
284 /* Initialize it just to avoid a GCC false warning. */
285 CORE_ADDR funaddr = 0;
04714b91
AC
286
287 /* If it's a member function, just look at the function
288 part of it. */
289
290 /* Determine address to call. */
78134374
SM
291 if (ftype->code () == TYPE_CODE_FUNC
292 || ftype->code () == TYPE_CODE_METHOD)
9feb2d07 293 funaddr = function->address ();
78134374 294 else if (ftype->code () == TYPE_CODE_PTR)
04714b91
AC
295 {
296 funaddr = value_as_address (function);
27710edb 297 ftype = check_typedef (ftype->target_type ());
78134374
SM
298 if (ftype->code () == TYPE_CODE_FUNC
299 || ftype->code () == TYPE_CODE_METHOD)
328d42d8
SM
300 funaddr = gdbarch_convert_from_func_ptr_addr
301 (gdbarch, funaddr, current_inferior ()->top_target());
04714b91 302 }
78134374
SM
303 if (ftype->code () == TYPE_CODE_FUNC
304 || ftype->code () == TYPE_CODE_METHOD)
07be84bf 305 {
0becda7a 306 if (ftype->is_gnu_ifunc ())
07be84bf 307 {
8388016d 308 CORE_ADDR resolver_addr = funaddr;
07be84bf 309
8388016d
PA
310 /* Resolve the ifunc. Note this may call the resolver
311 function in the inferior. */
312 funaddr = gnu_ifunc_resolve_addr (gdbarch, resolver_addr);
313
314 /* Skip querying the function symbol if no RETVAL_TYPE or
315 FUNCTION_TYPE have been asked for. */
316 if (retval_type != NULL || function_type != NULL)
317 {
318 type *target_ftype = find_function_type (funaddr);
319 /* If we don't have debug info for the target function,
320 see if we can instead extract the target function's
321 type from the type that the resolver returns. */
322 if (target_ftype == NULL)
323 target_ftype = find_gnu_ifunc_target_type (resolver_addr);
324 if (target_ftype != NULL)
325 {
27710edb 326 value_type = check_typedef (target_ftype)->target_type ();
8388016d
PA
327 ftype = target_ftype;
328 }
329 }
07be84bf 330 }
8388016d 331 else
27710edb 332 value_type = ftype->target_type ();
07be84bf 333 }
78134374 334 else if (ftype->code () == TYPE_CODE_INT)
04714b91
AC
335 {
336 /* Handle the case of functions lacking debugging info.
dda83cd7 337 Their values are characters since their addresses are char. */
df86565b 338 if (ftype->length () == 1)
04714b91
AC
339 funaddr = value_as_address (value_addr (function));
340 else
2bbe3cc1
DJ
341 {
342 /* Handle function descriptors lacking debug info. */
343 int found_descriptor = 0;
abbb1732 344
87bc73ea 345 funaddr = 0; /* pacify "gcc -Werror" */
2bbe3cc1
DJ
346 if (VALUE_LVAL (function) == lval_memory)
347 {
348 CORE_ADDR nfunaddr;
abbb1732 349
2bbe3cc1
DJ
350 funaddr = value_as_address (value_addr (function));
351 nfunaddr = funaddr;
328d42d8
SM
352 funaddr = gdbarch_convert_from_func_ptr_addr
353 (gdbarch, funaddr, current_inferior ()->top_target ());
2bbe3cc1
DJ
354 if (funaddr != nfunaddr)
355 found_descriptor = 1;
356 }
357 if (!found_descriptor)
358 /* Handle integer used as address of a function. */
359 funaddr = (CORE_ADDR) value_as_long (function);
360 }
04714b91
AC
361 }
362 else
8a3fe4f8 363 error (_("Invalid data type for function to be called."));
04714b91 364
7d9b040b
RC
365 if (retval_type != NULL)
366 *retval_type = value_type;
8388016d
PA
367 if (function_type != NULL)
368 *function_type = ftype;
50810684 369 return funaddr + gdbarch_deprecated_function_start_offset (gdbarch);
04714b91
AC
370}
371
d3712828
AC
372/* For CALL_DUMMY_ON_STACK, push a breakpoint sequence that the called
373 function returns to. */
7043d8dc
AC
374
375static CORE_ADDR
376push_dummy_code (struct gdbarch *gdbarch,
82585c72 377 CORE_ADDR sp, CORE_ADDR funaddr,
e71585ff 378 gdb::array_view<value *> args,
7043d8dc 379 struct type *value_type,
e4fd649a
UW
380 CORE_ADDR *real_pc, CORE_ADDR *bp_addr,
381 struct regcache *regcache)
7043d8dc 382{
50a834af
MK
383 gdb_assert (gdbarch_push_dummy_code_p (gdbarch));
384
385 return gdbarch_push_dummy_code (gdbarch, sp, funaddr,
e71585ff
PA
386 args.data (), args.size (),
387 value_type, real_pc, bp_addr,
50a834af 388 regcache);
7043d8dc
AC
389}
390
7022349d
PA
391/* See infcall.h. */
392
393void
394error_call_unknown_return_type (const char *func_name)
395{
396 if (func_name != NULL)
397 error (_("'%s' has unknown return type; "
398 "cast the call to its declared return type"),
399 func_name);
400 else
401 error (_("function has unknown return type; "
402 "cast the call to its declared return type"));
403}
404
b89667eb
DE
405/* Fetch the name of the function at FUNADDR.
406 This is used in printing an error message for call_function_by_hand.
407 BUF is used to print FUNADDR in hex if the function name cannot be
408 determined. It must be large enough to hold formatted result of
409 RAW_FUNCTION_ADDRESS_FORMAT. */
410
411static const char *
412get_function_name (CORE_ADDR funaddr, char *buf, int buf_size)
413{
414 {
415 struct symbol *symbol = find_pc_function (funaddr);
abbb1732 416
b89667eb 417 if (symbol)
987012b8 418 return symbol->print_name ();
b89667eb
DE
419 }
420
421 {
422 /* Try the minimal symbols. */
7cbd4a93 423 struct bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (funaddr);
abbb1732 424
7cbd4a93 425 if (msymbol.minsym)
c9d95fa3 426 return msymbol.minsym->print_name ();
b89667eb
DE
427 }
428
429 {
528e1572
SM
430 std::string tmp = string_printf (_(RAW_FUNCTION_ADDRESS_FORMAT),
431 hex_string (funaddr));
abbb1732 432
528e1572
SM
433 gdb_assert (tmp.length () + 1 <= buf_size);
434 return strcpy (buf, tmp.c_str ());
b89667eb
DE
435 }
436}
437
388a7084
PA
438/* All the meta data necessary to extract the call's return value. */
439
440struct call_return_meta_info
441{
442 /* The caller frame's architecture. */
443 struct gdbarch *gdbarch;
444
445 /* The called function. */
446 struct value *function;
447
448 /* The return value's type. */
449 struct type *value_type;
450
451 /* Are we returning a value using a structure return or a normal
452 value return? */
453 int struct_return_p;
454
455 /* If using a structure return, this is the structure's address. */
456 CORE_ADDR struct_addr;
388a7084
PA
457};
458
459/* Extract the called function's return value. */
460
461static struct value *
462get_call_return_value (struct call_return_meta_info *ri)
463{
464 struct value *retval = NULL;
00431a78
PA
465 thread_info *thr = inferior_thread ();
466 bool stack_temporaries = thread_stack_temporaries_enabled_p (thr);
388a7084 467
78134374 468 if (ri->value_type->code () == TYPE_CODE_VOID)
317c3ed9 469 retval = value::allocate (ri->value_type);
388a7084
PA
470 else if (ri->struct_return_p)
471 {
472 if (stack_temporaries)
473 {
474 retval = value_from_contents_and_address (ri->value_type, NULL,
475 ri->struct_addr);
00431a78 476 push_thread_stack_temporary (thr, retval);
388a7084
PA
477 }
478 else
3360bae6 479 retval = value_at_non_lval (ri->value_type, ri->struct_addr);
388a7084
PA
480 }
481 else
482 {
4e1d2f58
TT
483 gdbarch_return_value_as_value (ri->gdbarch, ri->function, ri->value_type,
484 get_current_regcache (),
485 &retval, NULL);
388a7084
PA
486 if (stack_temporaries && class_or_union_p (ri->value_type))
487 {
488 /* Values of class type returned in registers are copied onto
489 the stack and their lval_type set to lval_memory. This is
490 required because further evaluation of the expression
491 could potentially invoke methods on the return value
492 requiring GDB to evaluate the "this" pointer. To evaluate
493 the this pointer, GDB needs the memory address of the
494 value. */
495 value_force_lval (retval, ri->struct_addr);
00431a78 496 push_thread_stack_temporary (thr, retval);
388a7084
PA
497 }
498 }
499
500 gdb_assert (retval != NULL);
501 return retval;
502}
503
504/* Data for the FSM that manages an infcall. It's main job is to
505 record the called function's return value. */
506
46e3ed7f 507struct call_thread_fsm : public thread_fsm
388a7084 508{
388a7084
PA
509 /* All the info necessary to be able to extract the return
510 value. */
511 struct call_return_meta_info return_meta_info;
512
513 /* The called function's return value. This is extracted from the
514 target before the dummy frame is popped. */
46e3ed7f 515 struct value *return_value = nullptr;
3b12939d
PA
516
517 /* The top level that started the infcall (and is synchronously
518 waiting for it to end). */
519 struct ui *waiting_ui;
388a7084 520
46e3ed7f
TT
521 call_thread_fsm (struct ui *waiting_ui, struct interp *cmd_interp,
522 struct gdbarch *gdbarch, struct value *function,
523 struct type *value_type,
524 int struct_return_p, CORE_ADDR struct_addr);
388a7084 525
46e3ed7f 526 bool should_stop (struct thread_info *thread) override;
388a7084 527
46e3ed7f 528 bool should_notify_stop () override;
388a7084
PA
529};
530
531/* Allocate a new call_thread_fsm object. */
532
46e3ed7f
TT
533call_thread_fsm::call_thread_fsm (struct ui *waiting_ui,
534 struct interp *cmd_interp,
535 struct gdbarch *gdbarch,
536 struct value *function,
537 struct type *value_type,
538 int struct_return_p, CORE_ADDR struct_addr)
539 : thread_fsm (cmd_interp),
540 waiting_ui (waiting_ui)
388a7084 541{
46e3ed7f
TT
542 return_meta_info.gdbarch = gdbarch;
543 return_meta_info.function = function;
544 return_meta_info.value_type = value_type;
545 return_meta_info.struct_return_p = struct_return_p;
546 return_meta_info.struct_addr = struct_addr;
388a7084
PA
547}
548
549/* Implementation of should_stop method for infcalls. */
550
46e3ed7f
TT
551bool
552call_thread_fsm::should_stop (struct thread_info *thread)
388a7084 553{
e4014689
AB
554 INFCALL_SCOPED_DEBUG_ENTER_EXIT;
555
388a7084
PA
556 if (stop_stack_dummy == STOP_STACK_DUMMY)
557 {
558 /* Done. */
46e3ed7f 559 set_finished ();
388a7084
PA
560
561 /* Stash the return value before the dummy frame is popped and
562 registers are restored to what they were before the
563 call.. */
46e3ed7f 564 return_value = get_call_return_value (&return_meta_info);
388a7084
PA
565
566 /* Break out of wait_sync_command_done. */
46e3ed7f 567 scoped_restore save_ui = make_scoped_restore (&current_ui, waiting_ui);
223ffa71 568 target_terminal::ours ();
46e3ed7f 569 waiting_ui->prompt_state = PROMPT_NEEDED;
388a7084
PA
570 }
571
46e3ed7f 572 return true;
388a7084
PA
573}
574
575/* Implementation of should_notify_stop method for infcalls. */
576
46e3ed7f
TT
577bool
578call_thread_fsm::should_notify_stop ()
388a7084 579{
46e3ed7f 580 if (finished_p ())
388a7084
PA
581 {
582 /* Infcall succeeded. Be silent and proceed with evaluating the
583 expression. */
46e3ed7f 584 return false;
388a7084
PA
585 }
586
587 /* Something wrong happened. E.g., an unexpected breakpoint
588 triggered, or a signal was intercepted. Notify the stop. */
46e3ed7f 589 return true;
388a7084
PA
590}
591
b89667eb
DE
592/* Subroutine of call_function_by_hand to simplify it.
593 Start up the inferior and wait for it to stop.
594 Return the exception if there's an error, or an exception with
595 reason >= 0 if there's no error.
596
597 This is done inside a TRY_CATCH so the caller needn't worry about
598 thrown errors. The caller should rethrow if there's an error. */
599
600static struct gdb_exception
573269a8 601run_inferior_call (std::unique_ptr<call_thread_fsm> sm,
388a7084 602 struct thread_info *call_thread, CORE_ADDR real_pc)
b89667eb 603{
e4014689
AB
604 INFCALL_SCOPED_DEBUG_ENTER_EXIT;
605
cc06b668 606 struct gdb_exception caught_error;
b89667eb 607 ptid_t call_thread_ptid = call_thread->ptid;
28bf096c 608 int was_running = call_thread->state == THREAD_RUNNING;
b89667eb 609
e4014689
AB
610 infcall_debug_printf ("call function at %s in thread %s, was_running = %d",
611 core_addr_to_string (real_pc),
612 call_thread_ptid.to_string ().c_str (),
613 was_running);
614
8f7f9b3a 615 current_ui->unregister_file_handler ();
6d61dee5 616
a32c1a92
AB
617 scoped_restore restore_in_infcall
618 = make_scoped_restore (&call_thread->control.in_infcall, 1);
c5a4d20b 619
70509625 620 clear_proceed_status (0);
b89667eb 621
388a7084 622 /* Associate the FSM with the thread after clear_proceed_status
573269a8
LS
623 (otherwise it'd clear this FSM). */
624 call_thread->set_thread_fsm (std::move (sm));
388a7084 625
b89667eb 626 disable_watchpoints_before_interactive_call_start ();
16c381f0 627
b986eec5
CL
628 /* We want to print return value, please... */
629 call_thread->control.proceed_to_finish = 1;
630
a70b8144 631 try
3dd5b83d 632 {
a32c1a92
AB
633 /* Infcalls run synchronously, in the foreground. */
634 scoped_restore restore_prompt_state
635 = make_scoped_restore (&current_ui->prompt_state, PROMPT_BLOCKED);
636
637 /* So that we don't print the prompt prematurely in
638 fetch_inferior_event. */
639 scoped_restore restore_ui_async
640 = make_scoped_restore (&current_ui->async, 0);
641
64ce06e4 642 proceed (real_pc, GDB_SIGNAL_0);
3dd5b83d 643
e4014689
AB
644 infrun_debug_show_threads ("non-exited threads after proceed for inferior-call",
645 all_non_exited_threads ());
646
3dd5b83d 647 /* Inferior function calls are always synchronous, even if the
0b333c5e
PA
648 target supports asynchronous execution. */
649 wait_sync_command_done ();
e4014689
AB
650
651 infcall_debug_printf ("inferior call completed successfully");
3dd5b83d 652 }
94aeb44b 653 catch (gdb_exception &e)
492d29ea 654 {
e4014689
AB
655 infcall_debug_printf ("exception while making inferior call (%d): %s",
656 e.reason, e.what ());
94aeb44b 657 caught_error = std::move (e);
492d29ea 658 }
b89667eb 659
e4014689
AB
660 infcall_debug_printf ("thread is now: %s",
661 inferior_ptid.to_string ().c_str ());
662
3b12939d
PA
663 /* If GDB has the prompt blocked before, then ensure that it remains
664 so. normal_stop calls async_enable_stdin, so reset the prompt
665 state again here. In other cases, stdin will be re-enabled by
0b333c5e 666 inferior_event_handler, when an exception is thrown. */
6d61dee5 667 if (current_ui->prompt_state == PROMPT_BLOCKED)
8f7f9b3a 668 current_ui->unregister_file_handler ();
6d61dee5 669 else
8f7f9b3a 670 current_ui->register_file_handler ();
0b333c5e 671
28bf096c
PA
672 /* If the infcall does NOT succeed, normal_stop will have already
673 finished the thread states. However, on success, normal_stop
674 defers here, so that we can set back the thread states to what
675 they were before the call. Note that we must also finish the
676 state of new threads that might have spawned while the call was
677 running. The main cases to handle are:
678
679 - "(gdb) print foo ()", or any other command that evaluates an
680 expression at the prompt. (The thread was marked stopped before.)
681
682 - "(gdb) break foo if return_false()" or similar cases where we
683 do an infcall while handling an event (while the thread is still
684 marked running). In this example, whether the condition
685 evaluates true and thus we'll present a user-visible stop is
686 decided elsewhere. */
687 if (!was_running
00431a78 688 && call_thread_ptid == inferior_ptid
28bf096c 689 && stop_stack_dummy == STOP_STACK_DUMMY)
5b6d1e4f
PA
690 finish_thread_state (call_thread->inf->process_target (),
691 user_visible_resume_ptid (0));
28bf096c 692
b89667eb
DE
693 enable_watchpoints_after_interactive_call_stop ();
694
695 /* Call breakpoint_auto_delete on the current contents of the bpstat
696 of inferior call thread.
697 If all error()s out of proceed ended up calling normal_stop
698 (and perhaps they should; it already does in the special case
699 of error out of resume()), then we wouldn't need this. */
492d29ea 700 if (caught_error.reason < 0)
b89667eb 701 {
00431a78 702 if (call_thread->state != THREAD_EXITED)
16c381f0 703 breakpoint_auto_delete (call_thread->control.stop_bpstat);
b89667eb
DE
704 }
705
492d29ea 706 return caught_error;
b89667eb
DE
707}
708
12e7c35e
TBA
709/* Reserve space on the stack for a value of the given type.
710 Return the address of the allocated space.
711 Make certain that the value is correctly aligned.
712 The SP argument is modified. */
713
714static CORE_ADDR
715reserve_stack_space (const type *values_type, CORE_ADDR &sp)
716{
bd2b40ac 717 frame_info_ptr frame = get_current_frame ();
12e7c35e
TBA
718 struct gdbarch *gdbarch = get_frame_arch (frame);
719 CORE_ADDR addr = 0;
720
721 if (gdbarch_inner_than (gdbarch, 1, 2))
722 {
723 /* Stack grows downward. Align STRUCT_ADDR and SP after
724 making space. */
df86565b 725 sp -= values_type->length ();
12e7c35e
TBA
726 if (gdbarch_frame_align_p (gdbarch))
727 sp = gdbarch_frame_align (gdbarch, sp);
728 addr = sp;
729 }
730 else
731 {
732 /* Stack grows upward. Align the frame, allocate space, and
733 then again, re-align the frame??? */
734 if (gdbarch_frame_align_p (gdbarch))
735 sp = gdbarch_frame_align (gdbarch, sp);
736 addr = sp;
df86565b 737 sp += values_type->length ();
12e7c35e
TBA
738 if (gdbarch_frame_align_p (gdbarch))
739 sp = gdbarch_frame_align (gdbarch, sp);
740 }
741
742 return addr;
743}
744
099a6354
TBA
745/* The data structure which keeps a destructor function and
746 its implicit 'this' parameter. */
747
748struct destructor_info
749{
750 destructor_info (struct value *function, struct value *self)
751 : function (function), self (self) { }
752
753 struct value *function;
754 struct value *self;
755};
756
757
758/* Auxiliary function that takes a list of destructor functions
759 with their 'this' parameters, and invokes the functions. */
760
761static void
762call_destructors (const std::list<destructor_info> &dtors_to_invoke,
763 struct type *default_return_type)
764{
765 for (auto vals : dtors_to_invoke)
766 {
767 call_function_by_hand (vals.function, default_return_type,
768 gdb::make_array_view (&(vals.self), 1));
769 }
770}
771
ed12ef62
JK
772/* See infcall.h. */
773
774struct value *
7022349d
PA
775call_function_by_hand (struct value *function,
776 type *default_return_type,
e71585ff 777 gdb::array_view<value *> args)
ed12ef62 778{
7022349d 779 return call_function_by_hand_dummy (function, default_return_type,
e71585ff 780 args, NULL, NULL);
ed12ef62
JK
781}
782
04714b91
AC
783/* All this stuff with a dummy frame may seem unnecessarily complicated
784 (why not just save registers in GDB?). The purpose of pushing a dummy
785 frame which looks just like a real frame is so that if you call a
786 function and then hit a breakpoint (get a signal, etc), "backtrace"
787 will look right. Whether the backtrace needs to actually show the
788 stack at the time the inferior function was called is debatable, but
789 it certainly needs to not display garbage. So if you are contemplating
790 making dummy frames be different from normal frames, consider that. */
791
792/* Perform a function call in the inferior.
12e7c35e 793 ARGS is a vector of values of arguments.
04714b91
AC
794 FUNCTION is a value, the function to be called.
795 Returns a value representing what the function returned.
796 May fail to return, if a breakpoint or signal is hit
797 during the execution of the function.
798
1777feb0 799 ARGS is modified to contain coerced values. */
04714b91
AC
800
801struct value *
ed12ef62 802call_function_by_hand_dummy (struct value *function,
7022349d 803 type *default_return_type,
e71585ff 804 gdb::array_view<value *> args,
558e5469 805 dummy_frame_dtor_ftype *dummy_dtor,
ed12ef62 806 void *dummy_dtor_data)
04714b91 807{
e4014689
AB
808 INFCALL_SCOPED_DEBUG_ENTER_EXIT;
809
52f0bd74 810 CORE_ADDR sp;
8388016d 811 struct type *target_values_type;
c5ac5cbb 812 function_call_return_method return_method = return_method_normal;
04714b91 813 CORE_ADDR struct_addr = 0;
04714b91 814 CORE_ADDR real_pc;
d585e13a 815 CORE_ADDR bp_addr;
96860204 816 struct frame_id dummy_id;
bd2b40ac 817 frame_info_ptr frame;
0b9dfe2b 818 struct gdbarch *gdbarch;
b89667eb
DE
819 ptid_t call_thread_ptid;
820 struct gdb_exception e;
b89667eb 821 char name_buf[RAW_FUNCTION_ADDRESS_SIZE];
04714b91 822
136afab8
PW
823 if (!may_call_functions_p)
824 error (_("Cannot call functions in the program: "
825 "may-call-functions is off."));
826
55f6301a 827 if (!target_has_execution ())
04714b91
AC
828 noprocess ();
829
573cda03
SS
830 if (get_traceframe_number () >= 0)
831 error (_("May not call functions while looking at trace frames."));
832
949dc678 833 if (execution_direction == EXEC_REVERSE)
c2949be0 834 error (_("Cannot call functions in reverse mode."));
949dc678 835
00431a78
PA
836 /* We're going to run the target, and inspect the thread's state
837 afterwards. Hold a strong reference so that the pointer remains
838 valid even if the thread exits. */
839 thread_info_ref call_thread
840 = thread_info_ref::new_reference (inferior_thread ());
841
842 bool stack_temporaries = thread_stack_temporaries_enabled_p (call_thread.get ());
843
0b9dfe2b
MD
844 frame = get_current_frame ();
845 gdbarch = get_frame_arch (frame);
846
847 if (!gdbarch_push_dummy_call_p (gdbarch))
2e74121d 848 error (_("This target does not support function calls."));
a86c5fc9 849
39bcc47c
TBA
850 /* Find the function type and do a sanity check. */
851 type *ftype;
852 type *values_type;
853 CORE_ADDR funaddr = find_function_addr (function, &values_type, &ftype);
854
0b35f123
LS
855 if (is_nocall_function (ftype))
856 error (_("Cannot call the function '%s' which does not follow the "
857 "target calling convention."),
858 get_function_name (funaddr, name_buf, sizeof (name_buf)));
859
a34a9099 860 if (values_type == NULL || values_type->is_stub ())
39bcc47c
TBA
861 values_type = default_return_type;
862 if (values_type == NULL)
863 {
864 const char *name = get_function_name (funaddr,
865 name_buf, sizeof (name_buf));
866 error (_("'%s' has unknown return type; "
867 "cast the call to its declared return type"),
868 name);
869 }
870
871 values_type = check_typedef (values_type);
872
1f704f76 873 if (args.size () < ftype->num_fields ())
39bcc47c
TBA
874 error (_("Too few arguments in function call."));
875
e4014689
AB
876 infcall_debug_printf ("calling %s", get_function_name (funaddr, name_buf,
877 sizeof (name_buf)));
878
c7c4d3fa 879 /* A holder for the inferior status.
b89667eb 880 This is only needed while we're preparing the inferior function call. */
c7c4d3fa 881 infcall_control_state_up inf_status (save_infcall_control_state ());
04714b91 882
b89667eb
DE
883 /* Save the caller's registers and other state associated with the
884 inferior itself so that they can be restored once the
96860204 885 callee returns. To allow nested calls the registers are (further
c7c4d3fa
TT
886 down) pushed onto a dummy frame stack. This unique pointer
887 is released once the regcache has been pushed). */
888 infcall_suspend_state_up caller_state (save_infcall_suspend_state ());
04714b91 889
04714b91 890 /* Ensure that the initial SP is correctly aligned. */
ebc7896c 891 {
0b9dfe2b 892 CORE_ADDR old_sp = get_frame_sp (frame);
abbb1732 893
0b9dfe2b 894 if (gdbarch_frame_align_p (gdbarch))
ebc7896c 895 {
0b9dfe2b 896 sp = gdbarch_frame_align (gdbarch, old_sp);
8b148df9
AC
897 /* NOTE: cagney/2003-08-13: Skip the "red zone". For some
898 ABIs, a function can use memory beyond the inner most stack
899 address. AMD64 called that region the "red zone". Skip at
900 least the "red zone" size before allocating any space on
901 the stack. */
0b9dfe2b
MD
902 if (gdbarch_inner_than (gdbarch, 1, 2))
903 sp -= gdbarch_frame_red_zone_size (gdbarch);
8b148df9 904 else
0b9dfe2b 905 sp += gdbarch_frame_red_zone_size (gdbarch);
8b148df9 906 /* Still aligned? */
0b9dfe2b 907 gdb_assert (sp == gdbarch_frame_align (gdbarch, sp));
ebc7896c
AC
908 /* NOTE: cagney/2002-09-18:
909
910 On a RISC architecture, a void parameterless generic dummy
911 frame (i.e., no parameters, no result) typically does not
912 need to push anything the stack and hence can leave SP and
c48a845b 913 FP. Similarly, a frameless (possibly leaf) function does
ebc7896c
AC
914 not push anything on the stack and, hence, that too can
915 leave FP and SP unchanged. As a consequence, a sequence of
916 void parameterless generic dummy frame calls to frameless
917 functions will create a sequence of effectively identical
918 frames (SP, FP and TOS and PC the same). This, not
30baf67b 919 surprisingly, results in what appears to be a stack in an
ebc7896c
AC
920 infinite loop --- when GDB tries to find a generic dummy
921 frame on the internal dummy frame stack, it will always
922 find the first one.
923
924 To avoid this problem, the code below always grows the
925 stack. That way, two dummy frames can never be identical.
926 It does burn a few bytes of stack but that is a small price
927 to pay :-). */
ebc7896c
AC
928 if (sp == old_sp)
929 {
0b9dfe2b 930 if (gdbarch_inner_than (gdbarch, 1, 2))
ebc7896c 931 /* Stack grows down. */
0b9dfe2b 932 sp = gdbarch_frame_align (gdbarch, old_sp - 1);
ebc7896c
AC
933 else
934 /* Stack grows up. */
0b9dfe2b 935 sp = gdbarch_frame_align (gdbarch, old_sp + 1);
ebc7896c 936 }
0e095b7e
JK
937 /* SP may have underflown address zero here from OLD_SP. Memory access
938 functions will probably fail in such case but that is a target's
939 problem. */
ebc7896c
AC
940 }
941 else
a59fe496
AC
942 /* FIXME: cagney/2002-09-18: Hey, you loose!
943
8b148df9
AC
944 Who knows how badly aligned the SP is!
945
946 If the generic dummy frame ends up empty (because nothing is
947 pushed) GDB won't be able to correctly perform back traces.
948 If a target is having trouble with backtraces, first thing to
1777feb0 949 do is add FRAME_ALIGN() to the architecture vector. If that
669fac23 950 fails, try dummy_id().
8b148df9 951
dda83cd7
SM
952 If the ABI specifies a "Red Zone" (see the doco) the code
953 below will quietly trash it. */
ebc7896c 954 sp = old_sp;
6c659fc2
SC
955
956 /* Skip over the stack temporaries that might have been generated during
957 the evaluation of an expression. */
958 if (stack_temporaries)
959 {
960 struct value *lastval;
961
00431a78 962 lastval = get_last_thread_stack_temporary (call_thread.get ());
dda83cd7 963 if (lastval != NULL)
6c659fc2 964 {
9feb2d07 965 CORE_ADDR lastval_addr = lastval->address ();
6c659fc2
SC
966
967 if (gdbarch_inner_than (gdbarch, 1, 2))
968 {
969 gdb_assert (sp >= lastval_addr);
970 sp = lastval_addr;
971 }
972 else
973 {
974 gdb_assert (sp <= lastval_addr);
d0c97917 975 sp = lastval_addr + lastval->type ()->length ();
6c659fc2
SC
976 }
977
978 if (gdbarch_frame_align_p (gdbarch))
979 sp = gdbarch_frame_align (gdbarch, sp);
980 }
981 }
ebc7896c 982 }
04714b91 983
c5ac5cbb 984 /* Are we returning a value using a structure return? */
41f1b697 985
18648a37 986 if (gdbarch_return_in_first_hidden_param_p (gdbarch, values_type))
41f1b697 987 {
c5ac5cbb 988 return_method = return_method_hidden_param;
04714b91 989
41f1b697
DJ
990 /* Tell the target specific argument pushing routine not to
991 expect a value. */
48319d1f 992 target_values_type = builtin_type (gdbarch)->builtin_void;
41f1b697
DJ
993 }
994 else
995 {
c5ac5cbb
AH
996 if (using_struct_return (gdbarch, function, values_type))
997 return_method = return_method_struct;
41f1b697
DJ
998 target_values_type = values_type;
999 }
04714b91 1000
76727919 1001 gdb::observers::inferior_call_pre.notify (inferior_ptid, funaddr);
162078c8 1002
7043d8dc
AC
1003 /* Determine the location of the breakpoint (and possibly other
1004 stuff) that the called function will return to. The SPARC, for a
1005 function returning a structure or union, needs to make space for
1006 not just the breakpoint but also an extra word containing the
1007 size (?) of the structure being passed. */
1008
0b9dfe2b 1009 switch (gdbarch_call_dummy_location (gdbarch))
04714b91
AC
1010 {
1011 case ON_STACK:
a14dd77e
JK
1012 {
1013 const gdb_byte *bp_bytes;
1014 CORE_ADDR bp_addr_as_address;
1015 int bp_size;
1016
1017 /* Be careful BP_ADDR is in inferior PC encoding while
1018 BP_ADDR_AS_ADDRESS is a plain memory address. */
1019
e71585ff 1020 sp = push_dummy_code (gdbarch, sp, funaddr, args,
a14dd77e
JK
1021 target_values_type, &real_pc, &bp_addr,
1022 get_current_regcache ());
1023
1024 /* Write a legitimate instruction at the point where the infcall
1025 breakpoint is going to be inserted. While this instruction
1026 is never going to be executed, a user investigating the
1027 memory from GDB would see this instruction instead of random
1028 uninitialized bytes. We chose the breakpoint instruction
1029 as it may look as the most logical one to the user and also
1030 valgrind 3.7.0 needs it for proper vgdb inferior calls.
1031
1032 If software breakpoints are unsupported for this target we
1033 leave the user visible memory content uninitialized. */
1034
1035 bp_addr_as_address = bp_addr;
1036 bp_bytes = gdbarch_breakpoint_from_pc (gdbarch, &bp_addr_as_address,
1037 &bp_size);
1038 if (bp_bytes != NULL)
1039 write_memory (bp_addr_as_address, bp_bytes, bp_size);
1040 }
7043d8dc 1041 break;
5931a2fa
JK
1042 case AT_ENTRY_POINT:
1043 {
1044 CORE_ADDR dummy_addr;
1045
1046 real_pc = funaddr;
1047 dummy_addr = entry_point_address ();
a14dd77e 1048
5931a2fa 1049 /* A call dummy always consists of just a single breakpoint, so
a14dd77e
JK
1050 its address is the same as the address of the dummy.
1051
1052 The actual breakpoint is inserted separatly so there is no need to
1053 write that out. */
5931a2fa
JK
1054 bp_addr = dummy_addr;
1055 break;
1056 }
04714b91 1057 default:
f34652de 1058 internal_error (_("bad switch"));
04714b91
AC
1059 }
1060
099a6354
TBA
1061 /* Coerce the arguments and handle pass-by-reference.
1062 We want to remember the destruction required for pass-by-ref values.
1063 For these, store the dtor function and the 'this' argument
1064 in DTORS_TO_INVOKE. */
1065 std::list<destructor_info> dtors_to_invoke;
1066
e71585ff 1067 for (int i = args.size () - 1; i >= 0; i--)
b4b08fa2
TT
1068 {
1069 int prototyped;
1070 struct type *param_type;
e71585ff 1071
b4b08fa2
TT
1072 /* FIXME drow/2002-05-31: Should just always mark methods as
1073 prototyped. Can we respect TYPE_VARARGS? Probably not. */
78134374 1074 if (ftype->code () == TYPE_CODE_METHOD)
b4b08fa2 1075 prototyped = 1;
27710edb 1076 else if (ftype->target_type () == NULL && ftype->num_fields () == 0
d038ce48 1077 && default_return_type != NULL)
b4b08fa2
TT
1078 {
1079 /* Calling a no-debug function with the return type
1080 explicitly cast. Assume the function is prototyped,
1081 with a prototype matching the types of the arguments.
1082 E.g., with:
1083 float mult (float v1, float v2) { return v1 * v2; }
1084 This:
1085 (gdb) p (float) mult (2.0f, 3.0f)
1086 Is a simpler alternative to:
1087 (gdb) p ((float (*) (float, float)) mult) (2.0f, 3.0f)
1088 */
ebc7896c 1089 prototyped = 1;
b4b08fa2 1090 }
1f704f76 1091 else if (i < ftype->num_fields ())
7f9f399b 1092 prototyped = ftype->is_prototyped ();
b4b08fa2
TT
1093 else
1094 prototyped = 0;
ebc7896c 1095
1f704f76 1096 if (i < ftype->num_fields ())
940da03e 1097 param_type = ftype->field (i).type ();
b4b08fa2
TT
1098 else
1099 param_type = NULL;
41f1b697 1100
099a6354 1101 value *original_arg = args[i];
b4b08fa2 1102 args[i] = value_arg_coerce (gdbarch, args[i],
37055cad 1103 param_type, prototyped);
ebc7896c 1104
099a6354
TBA
1105 if (param_type == NULL)
1106 continue;
1107
1108 auto info = language_pass_by_reference (param_type);
1109 if (!info.copy_constructible)
1110 error (_("expression cannot be evaluated because the type '%s' "
7d93a1e0 1111 "is not copy constructible"), param_type->name ());
099a6354
TBA
1112
1113 if (!info.destructible)
1114 error (_("expression cannot be evaluated because the type '%s' "
7d93a1e0 1115 "is not destructible"), param_type->name ());
099a6354
TBA
1116
1117 if (info.trivially_copyable)
1118 continue;
1119
1120 /* Make a copy of the argument on the stack. If the argument is
1121 trivially copy ctor'able, copy bit by bit. Otherwise, call
1122 the copy ctor to initialize the clone. */
1123 CORE_ADDR addr = reserve_stack_space (param_type, sp);
1124 value *clone
1125 = value_from_contents_and_address (param_type, nullptr, addr);
1126 push_thread_stack_temporary (call_thread.get (), clone);
1127 value *clone_ptr
1128 = value_from_pointer (lookup_pointer_type (param_type), addr);
1129
1130 if (info.trivially_copy_constructible)
1131 {
df86565b 1132 int length = param_type->length ();
50888e42 1133 write_memory (addr, value_contents (args[i]).data (), length);
099a6354
TBA
1134 }
1135 else
1136 {
1137 value *copy_ctor;
1138 value *cctor_args[2] = { clone_ptr, original_arg };
1139 find_overload_match (gdb::make_array_view (cctor_args, 2),
7d93a1e0 1140 param_type->name (), METHOD,
099a6354
TBA
1141 &clone_ptr, nullptr, &copy_ctor, nullptr,
1142 nullptr, 0, EVAL_NORMAL);
1143
1144 if (copy_ctor == nullptr)
1145 error (_("expression cannot be evaluated because a copy "
1146 "constructor for the type '%s' could not be found "
7d93a1e0 1147 "(maybe inlined?)"), param_type->name ());
099a6354
TBA
1148
1149 call_function_by_hand (copy_ctor, default_return_type,
1150 gdb::make_array_view (cctor_args, 2));
1151 }
1152
1153 /* If the argument has a destructor, remember it so that we
1154 invoke it after the infcall is complete. */
1155 if (!info.trivially_destructible)
1156 {
1157 /* Looking up the function via overload resolution does not
1158 work because the compiler (in particular, gcc) adds an
1159 artificial int parameter in some cases. So we look up
1160 the function by using the "~" name. This should be OK
1161 because there can be only one dtor definition. */
1162 const char *dtor_name = nullptr;
1163 for (int fieldnum = 0;
1164 fieldnum < TYPE_NFN_FIELDS (param_type);
1165 fieldnum++)
1166 {
1167 fn_field *fn
1168 = TYPE_FN_FIELDLIST1 (param_type, fieldnum);
1169 const char *field_name
1170 = TYPE_FN_FIELDLIST_NAME (param_type, fieldnum);
1171
1172 if (field_name[0] == '~')
1173 dtor_name = TYPE_FN_FIELD_PHYSNAME (fn, 0);
1174 }
1175
1176 if (dtor_name == nullptr)
1177 error (_("expression cannot be evaluated because a destructor "
1178 "for the type '%s' could not be found "
7d93a1e0 1179 "(maybe inlined?)"), param_type->name ());
099a6354
TBA
1180
1181 value *dtor
1182 = find_function_in_inferior (dtor_name, 0);
1183
1184 /* Insert the dtor to the front of the list to call them
1185 in reverse order later. */
1186 dtors_to_invoke.emplace_front (dtor, clone_ptr);
1187 }
1188
1189 args[i] = clone_ptr;
b4b08fa2 1190 }
04714b91 1191
04714b91 1192 /* Reserve space for the return structure to be written on the
12e7c35e 1193 stack, if necessary.
6c659fc2
SC
1194
1195 While evaluating expressions, we reserve space on the stack for
1196 return values of class type even if the language ABI and the target
1197 ABI do not require that the return value be passed as a hidden first
1198 argument. This is because we want to store the return value as an
1199 on-stack temporary while the expression is being evaluated. This
1200 enables us to have chained function calls in expressions.
04714b91 1201
6c659fc2
SC
1202 Keeping the return values as on-stack temporaries while the expression
1203 is being evaluated is OK because the thread is stopped until the
1204 expression is completely evaluated. */
1205
c5ac5cbb 1206 if (return_method != return_method_normal
6c659fc2 1207 || (stack_temporaries && class_or_union_p (values_type)))
12e7c35e 1208 struct_addr = reserve_stack_space (values_type, sp);
04714b91 1209
6ccb583f 1210 std::vector<struct value *> new_args;
c5ac5cbb 1211 if (return_method == return_method_hidden_param)
41f1b697 1212 {
41f1b697 1213 /* Add the new argument to the front of the argument list. */
e71585ff 1214 new_args.reserve (args.size ());
6ccb583f
TT
1215 new_args.push_back
1216 (value_from_pointer (lookup_pointer_type (values_type), struct_addr));
e71585ff
PA
1217 new_args.insert (new_args.end (), args.begin (), args.end ());
1218 args = new_args;
41f1b697 1219 }
41f1b697 1220
04714b91
AC
1221 /* Create the dummy stack frame. Pass in the call dummy address as,
1222 presumably, the ABI code knows where, in the call dummy, the
1223 return address should be pointed. */
0b9dfe2b 1224 sp = gdbarch_push_dummy_call (gdbarch, function, get_current_regcache (),
e71585ff
PA
1225 bp_addr, args.size (), args.data (),
1226 sp, return_method, struct_addr);
04714b91 1227
96860204
AC
1228 /* Set up a frame ID for the dummy frame so we can pass it to
1229 set_momentary_breakpoint. We need to give the breakpoint a frame
1230 ID so that the breakpoint code can correctly re-identify the
1231 dummy breakpoint. */
8241eaa6 1232 /* Sanity. The exact same SP value is returned by PUSH_DUMMY_CALL,
669fac23 1233 saved as the dummy-frame TOS, and used by dummy_id to form
8241eaa6 1234 the frame ID's stack address. */
96860204 1235 dummy_id = frame_id_build (sp, bp_addr);
04714b91 1236
74cfe982
AC
1237 /* Create a momentary breakpoint at the return address of the
1238 inferior. That way it breaks when it returns. */
04714b91 1239
74cfe982 1240 {
51abb421 1241 symtab_and_line sal;
6c95b8df 1242 sal.pspace = current_program_space;
74cfe982
AC
1243 sal.pc = bp_addr;
1244 sal.section = find_pc_overlay (sal.pc);
51abb421 1245
8241eaa6
AC
1246 /* Sanity. The exact same SP value is returned by
1247 PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by
669fac23 1248 dummy_id to form the frame ID's stack address. */
454dafbd
TT
1249 breakpoint *bpt
1250 = set_momentary_breakpoint (gdbarch, sal,
1251 dummy_id, bp_call_dummy).release ();
c70a6932
JK
1252
1253 /* set_momentary_breakpoint invalidates FRAME. */
1254 frame = NULL;
1255
74cfe982 1256 bpt->disposition = disp_del;
e2e4d78b
JK
1257 gdb_assert (bpt->related_breakpoint == bpt);
1258
51abb421 1259 breakpoint *longjmp_b = set_longjmp_breakpoint_for_call_dummy ();
e2e4d78b
JK
1260 if (longjmp_b)
1261 {
1262 /* Link BPT into the chain of LONGJMP_B. */
1263 bpt->related_breakpoint = longjmp_b;
1264 while (longjmp_b->related_breakpoint != bpt->related_breakpoint)
1265 longjmp_b = longjmp_b->related_breakpoint;
1266 longjmp_b->related_breakpoint = bpt;
1267 }
74cfe982 1268 }
04714b91 1269
7cd1089b
PM
1270 /* Create a breakpoint in std::terminate.
1271 If a C++ exception is raised in the dummy-frame, and the
1272 exception handler is (normally, and expected to be) out-of-frame,
1273 the default C++ handler will (wrongly) be called in an inferior
1274 function call. This is wrong, as an exception can be normally
1275 and legally handled out-of-frame. The confines of the dummy frame
1276 prevent the unwinder from finding the correct handler (or any
1277 handler, unless it is in-frame). The default handler calls
1278 std::terminate. This will kill the inferior. Assert that
1279 terminate should never be called in an inferior function
1280 call. Place a momentary breakpoint in the std::terminate function
1281 and if triggered in the call, rewind. */
1282 if (unwind_on_terminating_exception_p)
aa7d318d 1283 set_std_terminate_breakpoint ();
7cd1089b 1284
96860204
AC
1285 /* Everything's ready, push all the info needed to restore the
1286 caller (and identify the dummy-frame) onto the dummy-frame
1287 stack. */
c7c4d3fa 1288 dummy_frame_push (caller_state.release (), &dummy_id, call_thread.get ());
ed12ef62 1289 if (dummy_dtor != NULL)
00431a78 1290 register_dummy_frame_dtor (dummy_id, call_thread.get (),
ed12ef62 1291 dummy_dtor, dummy_dtor_data);
b89667eb 1292
7cd1089b 1293 /* Register a clean-up for unwind_on_terminating_exception_breakpoint. */
2cc83d1e 1294 SCOPE_EXIT { delete_std_terminate_breakpoint (); };
7cd1089b 1295
96860204
AC
1296 /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP -
1297 If you're looking to implement asynchronous dummy-frames, then
1298 just below is the place to chop this function in two.. */
1299
74cfe982 1300 {
388a7084 1301 /* Save the current FSM. We'll override it. */
573269a8
LS
1302 std::unique_ptr<thread_fsm> saved_sm = call_thread->release_thread_fsm ();
1303 struct call_thread_fsm *sm;
74cfe982 1304
b89667eb
DE
1305 /* Save this thread's ptid, we need it later but the thread
1306 may have exited. */
00431a78 1307 call_thread_ptid = call_thread->ptid;
74cfe982 1308
b89667eb 1309 /* Run the inferior until it stops. */
f5871ec0 1310
388a7084
PA
1311 /* Create the FSM used to manage the infcall. It tells infrun to
1312 not report the stop to the user, and captures the return value
1313 before the dummy frame is popped. run_inferior_call registers
1314 it with the thread ASAP. */
46e3ed7f 1315 sm = new call_thread_fsm (current_ui, command_interp (),
3b12939d 1316 gdbarch, function,
388a7084 1317 values_type,
c5ac5cbb 1318 return_method != return_method_normal,
388a7084 1319 struct_addr);
573269a8
LS
1320 {
1321 std::unique_ptr<call_thread_fsm> sm_up (sm);
1322 e = run_inferior_call (std::move (sm_up), call_thread.get (), real_pc);
1323 }
388a7084 1324
e4014689
AB
1325 if (e.reason < 0)
1326 infcall_debug_printf ("after inferior call, exception (%d): %s",
1327 e.reason, e.what ());
1328 infcall_debug_printf ("after inferior call, thread state is: %s",
1329 thread_state_string (call_thread->state));
1330
76727919 1331 gdb::observers::inferior_call_post.notify (call_thread_ptid, funaddr);
388a7084 1332
00431a78 1333 if (call_thread->state != THREAD_EXITED)
388a7084
PA
1334 {
1335 /* The FSM should still be the same. */
573269a8 1336 gdb_assert (call_thread->thread_fsm () == sm);
388a7084 1337
573269a8 1338 if (call_thread->thread_fsm ()->finished_p ())
388a7084
PA
1339 {
1340 struct value *retval;
1341
e4014689
AB
1342 infcall_debug_printf ("call completed");
1343
388a7084
PA
1344 /* The inferior call is successful. Pop the dummy frame,
1345 which runs its destructors and restores the inferior's
1346 suspend state, and restore the inferior control
1347 state. */
00431a78 1348 dummy_frame_pop (dummy_id, call_thread.get ());
c7c4d3fa 1349 restore_infcall_control_state (inf_status.release ());
388a7084
PA
1350
1351 /* Get the return value. */
1352 retval = sm->return_value;
1353
573269a8
LS
1354 /* Restore the original FSM and clean up / destroh the call FSM.
1355 Doing it in this order ensures that if the call to clean_up
1356 throws, the original FSM is properly restored. */
1357 {
1358 std::unique_ptr<thread_fsm> finalizing
1359 = call_thread->release_thread_fsm ();
1360 call_thread->set_thread_fsm (std::move (saved_sm));
1361
1362 finalizing->clean_up (call_thread.get ());
1363 }
04714b91 1364
388a7084
PA
1365 maybe_remove_breakpoints ();
1366
388a7084 1367 gdb_assert (retval != NULL);
099a6354
TBA
1368
1369 /* Destruct the pass-by-ref argument clones. */
1370 call_destructors (dtors_to_invoke, default_return_type);
1371
388a7084
PA
1372 return retval;
1373 }
e4014689
AB
1374 else
1375 infcall_debug_printf ("call did not complete");
388a7084 1376
e3319240
PW
1377 /* Didn't complete. Clean up / destroy the call FSM, and restore the
1378 previous state machine, and handle the error. */
573269a8
LS
1379 {
1380 std::unique_ptr<thread_fsm> finalizing
1381 = call_thread->release_thread_fsm ();
1382 call_thread->set_thread_fsm (std::move (saved_sm));
1383
1384 finalizing->clean_up (call_thread.get ());
1385 }
388a7084
PA
1386 }
1387 }
162078c8 1388
b89667eb
DE
1389 /* Rethrow an error if we got one trying to run the inferior. */
1390
1391 if (e.reason < 0)
1392 {
1393 const char *name = get_function_name (funaddr,
dda83cd7 1394 name_buf, sizeof (name_buf));
b89667eb 1395
c7c4d3fa 1396 discard_infcall_control_state (inf_status.release ());
b89667eb
DE
1397
1398 /* We could discard the dummy frame here if the program exited,
dda83cd7
SM
1399 but it will get garbage collected the next time the program is
1400 run anyway. */
b89667eb
DE
1401
1402 switch (e.reason)
1403 {
1404 case RETURN_ERROR:
ac74f770
MS
1405 throw_error (e.error, _("%s\n\
1406An error occurred while in a function called from GDB.\n\
1407Evaluation of the expression containing the function\n\
1408(%s) will be abandoned.\n\
1409When the function is done executing, GDB will silently stop."),
3d6e9d23 1410 e.what (), name);
b89667eb
DE
1411 case RETURN_QUIT:
1412 default:
94aeb44b 1413 throw_exception (std::move (e));
b89667eb
DE
1414 }
1415 }
1416
1417 /* If the program has exited, or we stopped at a different thread,
1418 exit and inform the user. */
1419
55f6301a 1420 if (! target_has_execution ())
de04a248 1421 {
b89667eb
DE
1422 const char *name = get_function_name (funaddr,
1423 name_buf, sizeof (name_buf));
1424
1425 /* If we try to restore the inferior status,
de04a248 1426 we'll crash as the inferior is no longer running. */
c7c4d3fa 1427 discard_infcall_control_state (inf_status.release ());
b89667eb
DE
1428
1429 /* We could discard the dummy frame here given that the program exited,
dda83cd7
SM
1430 but it will get garbage collected the next time the program is
1431 run anyway. */
b89667eb 1432
3e43a32a
MS
1433 error (_("The program being debugged exited while in a function "
1434 "called from GDB.\n"
1435 "Evaluation of the expression containing the function\n"
1436 "(%s) will be abandoned."),
b89667eb
DE
1437 name);
1438 }
1439
d7e15655 1440 if (call_thread_ptid != inferior_ptid)
b89667eb
DE
1441 {
1442 const char *name = get_function_name (funaddr,
1443 name_buf, sizeof (name_buf));
1444
1445 /* We've switched threads. This can happen if another thread gets a
1446 signal or breakpoint while our thread was running.
1447 There's no point in restoring the inferior status,
1448 we're in a different thread. */
c7c4d3fa 1449 discard_infcall_control_state (inf_status.release ());
b89667eb
DE
1450 /* Keep the dummy frame record, if the user switches back to the
1451 thread with the hand-call, we'll need it. */
1452 if (stopped_by_random_signal)
ac74f770
MS
1453 error (_("\
1454The program received a signal in another thread while\n\
1455making a function call from GDB.\n\
1456Evaluation of the expression containing the function\n\
1457(%s) will be abandoned.\n\
1458When the function is done executing, GDB will silently stop."),
b89667eb
DE
1459 name);
1460 else
ac74f770
MS
1461 error (_("\
1462The program stopped in another thread while making a function call from GDB.\n\
1463Evaluation of the expression containing the function\n\
1464(%s) will be abandoned.\n\
1465When the function is done executing, GDB will silently stop."),
b89667eb 1466 name);
de04a248
DE
1467 }
1468
52557533 1469 {
5fe75eec 1470 /* Make a copy as NAME may be in an objfile freed by dummy_frame_pop. */
395423c4
TT
1471 std::string name = get_function_name (funaddr, name_buf,
1472 sizeof (name_buf));
b89667eb 1473
52557533
AC
1474 if (stopped_by_random_signal)
1475 {
1476 /* We stopped inside the FUNCTION because of a random
1477 signal. Further execution of the FUNCTION is not
1777feb0 1478 allowed. */
04714b91 1479
52557533
AC
1480 if (unwind_on_signal_p)
1481 {
1777feb0 1482 /* The user wants the context restored. */
52557533
AC
1483
1484 /* We must get back to the frame we were before the
b89667eb 1485 dummy call. */
00431a78 1486 dummy_frame_pop (dummy_id, call_thread.get ());
b89667eb
DE
1487
1488 /* We also need to restore inferior status to that before the
1489 dummy call. */
c7c4d3fa 1490 restore_infcall_control_state (inf_status.release ());
04714b91 1491
52557533
AC
1492 /* FIXME: Insert a bunch of wrap_here; name can be very
1493 long if it's a C++ name with arguments and stuff. */
ac74f770
MS
1494 error (_("\
1495The program being debugged was signaled while in a function called from GDB.\n\
1496GDB has restored the context to what it was before the call.\n\
1497To change this behavior use \"set unwindonsignal off\".\n\
1498Evaluation of the expression containing the function\n\
1499(%s) will be abandoned."),
395423c4 1500 name.c_str ());
52557533
AC
1501 }
1502 else
1503 {
1504 /* The user wants to stay in the frame where we stopped
b89667eb
DE
1505 (default).
1506 Discard inferior status, we're not at the same point
1507 we started at. */
c7c4d3fa 1508 discard_infcall_control_state (inf_status.release ());
b89667eb 1509
52557533
AC
1510 /* FIXME: Insert a bunch of wrap_here; name can be very
1511 long if it's a C++ name with arguments and stuff. */
ac74f770
MS
1512 error (_("\
1513The program being debugged was signaled while in a function called from GDB.\n\
1514GDB remains in the frame where the signal was received.\n\
1515To change this behavior use \"set unwindonsignal on\".\n\
1516Evaluation of the expression containing the function\n\
1517(%s) will be abandoned.\n\
1518When the function is done executing, GDB will silently stop."),
395423c4 1519 name.c_str ());
52557533
AC
1520 }
1521 }
04714b91 1522
aa7d318d 1523 if (stop_stack_dummy == STOP_STD_TERMINATE)
52557533 1524 {
aa7d318d
TT
1525 /* We must get back to the frame we were before the dummy
1526 call. */
00431a78 1527 dummy_frame_pop (dummy_id, call_thread.get ());
7cd1089b 1528
aa7d318d
TT
1529 /* We also need to restore inferior status to that before
1530 the dummy call. */
c7c4d3fa 1531 restore_infcall_control_state (inf_status.release ());
aa7d318d 1532
ac74f770
MS
1533 error (_("\
1534The program being debugged entered a std::terminate call, most likely\n\
1535caused by an unhandled C++ exception. GDB blocked this call in order\n\
1536to prevent the program from being terminated, and has restored the\n\
1537context to its original state before the call.\n\
1538To change this behaviour use \"set unwind-on-terminating-exception off\".\n\
1539Evaluation of the expression containing the function (%s)\n\
1540will be abandoned."),
395423c4 1541 name.c_str ());
aa7d318d
TT
1542 }
1543 else if (stop_stack_dummy == STOP_NONE)
1544 {
1545
b89667eb
DE
1546 /* We hit a breakpoint inside the FUNCTION.
1547 Keep the dummy frame, the user may want to examine its state.
1548 Discard inferior status, we're not at the same point
1549 we started at. */
c7c4d3fa 1550 discard_infcall_control_state (inf_status.release ());
b89667eb 1551
52557533
AC
1552 /* The following error message used to say "The expression
1553 which contained the function call has been discarded."
1554 It is a hard concept to explain in a few words. Ideally,
1555 GDB would be able to resume evaluation of the expression
1556 when the function finally is done executing. Perhaps
1557 someday this will be implemented (it would not be easy). */
1558 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1559 a C++ name with arguments and stuff. */
ac74f770
MS
1560 error (_("\
1561The program being debugged stopped while in a function called from GDB.\n\
1562Evaluation of the expression containing the function\n\
1563(%s) will be abandoned.\n\
1564When the function is done executing, GDB will silently stop."),
395423c4 1565 name.c_str ());
52557533
AC
1566 }
1567
52557533 1568 }
04714b91 1569
388a7084
PA
1570 /* The above code errors out, so ... */
1571 gdb_assert_not_reached ("... should not be here");
04714b91 1572}
04714b91 1573
6c265988 1574void _initialize_infcall ();
04714b91 1575void
6c265988 1576_initialize_infcall ()
04714b91 1577{
136afab8
PW
1578 add_setshow_boolean_cmd ("may-call-functions", no_class,
1579 &may_call_functions_p, _("\
1580Set permission to call functions in the program."), _("\
1581Show permission to call functions in the program."), _("\
1582When this permission is on, GDB may call functions in the program.\n\
1583Otherwise, any sort of attempt to call a function in the program\n\
1584will result in an error."),
1585 NULL,
1586 show_may_call_functions_p,
1587 &setlist, &showlist);
1588
04714b91 1589 add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
7915a72c
AC
1590 &coerce_float_to_double_p, _("\
1591Set coercion of floats to doubles when calling functions."), _("\
590042fc 1592Show coercion of floats to doubles when calling functions."), _("\
04714b91
AC
1593Variables of type float should generally be converted to doubles before\n\
1594calling an unprototyped function, and left alone when calling a prototyped\n\
1595function. However, some older debug info formats do not provide enough\n\
1596information to determine that a function is prototyped. If this flag is\n\
1597set, GDB will perform the conversion for a function it considers\n\
1598unprototyped.\n\
89549d7f 1599The default is to perform the conversion."),
2c5b56ce 1600 NULL,
920d2a44 1601 show_coerce_float_to_double_p,
2c5b56ce 1602 &setlist, &showlist);
04714b91
AC
1603
1604 add_setshow_boolean_cmd ("unwindonsignal", no_class,
7915a72c
AC
1605 &unwind_on_signal_p, _("\
1606Set unwinding of stack if a signal is received while in a call dummy."), _("\
1607Show unwinding of stack if a signal is received while in a call dummy."), _("\
04714b91
AC
1608The unwindonsignal lets the user determine what gdb should do if a signal\n\
1609is received while in a function called from gdb (call dummy). If set, gdb\n\
1610unwinds the stack and restore the context to what as it was before the call.\n\
7915a72c 1611The default is to stop in the frame where the signal was received."),
2c5b56ce 1612 NULL,
920d2a44 1613 show_unwind_on_signal_p,
2c5b56ce 1614 &setlist, &showlist);
7cd1089b
PM
1615
1616 add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
1617 &unwind_on_terminating_exception_p, _("\
1618Set unwinding of stack if std::terminate is called while in call dummy."), _("\
3e43a32a
MS
1619Show unwinding of stack if std::terminate() is called while in a call dummy."),
1620 _("\
7cd1089b
PM
1621The unwind on terminating exception flag lets the user determine\n\
1622what gdb should do if a std::terminate() call is made from the\n\
1623default exception handler. If set, gdb unwinds the stack and restores\n\
1624the context to what it was before the call. If unset, gdb allows the\n\
1625std::terminate call to proceed.\n\
1626The default is to unwind the frame."),
1627 NULL,
1628 show_unwind_on_terminating_exception_p,
1629 &setlist, &showlist);
1630
e4014689
AB
1631 add_setshow_boolean_cmd
1632 ("infcall", class_maintenance, &debug_infcall,
1633 _("Set inferior call debugging."),
1634 _("Show inferior call debugging."),
1635 _("When on, inferior function call specific debugging is enabled."),
1636 NULL, show_debug_infcall, &setdebuglist, &showdebuglist);
04714b91 1637}