1 /* Perform an inferior function call, for GDB, the GNU debugger.
2 
3    Copyright (C) 1986-2024 Free Software Foundation, Inc.
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
9    the Free Software Foundation; either version 3 of the License, or
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
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 #include "infcall.h"
21 #include "breakpoint.h"
22 #include "tracepoint.h"
23 #include "target.h"
24 #include "regcache.h"
25 #include "inferior.h"
26 #include "infrun.h"
27 #include "block.h"
28 #include "gdbcore.h"
29 #include "language.h"
30 #include "objfiles.h"
31 #include "cli/cli-cmds.h"
32 #include "command.h"
33 #include "dummy-frame.h"
34 #include "ada-lang.h"
35 #include "f-lang.h"
36 #include "gdbthread.h"
37 #include "event-top.h"
38 #include "observable.h"
39 #include "top.h"
40 #include "ui.h"
41 #include "interps.h"
42 #include "thread-fsm.h"
43 #include <algorithm>
44 #include "gdbsupport/scope-exit.h"
45 #include <list>
46 
47 /* True if we are debugging inferior calls.  */
48 
49 static 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 
68 static void
show_debug_infcall(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)69 show_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 
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) \
79                                            + 2 * sizeof (CORE_ADDR))
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 
87 static bool may_call_functions_p = true;
88 static void
show_may_call_functions_p(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)89 show_may_call_functions_p (struct ui_file *file, int from_tty,
90                                  struct cmd_list_element *c,
91                                  const char *value)
92 {
93   gdb_printf (file,
94                 _("Permission to call functions in the program is %s.\n"),
95                 value);
96 }
97 
98 /* A timeout (in seconds) for direct inferior calls.  A direct inferior
99    call is one the user triggers from the prompt, e.g. with a 'call' or
100    'print' command.  Compare with the definition of indirect calls below.  */
101 
102 static unsigned int direct_call_timeout = UINT_MAX;
103 
104 /* Implement 'show direct-call-timeout'.  */
105 
106 static void
show_direct_call_timeout(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)107 show_direct_call_timeout (struct ui_file *file, int from_tty,
108                                 struct cmd_list_element *c, const char *value)
109 {
110   if (target_has_execution () && !target_can_async_p ())
111     gdb_printf (file, _("Current target does not support async mode, timeout "
112                               "for direct inferior calls is \"unlimited\".\n"));
113   else if (direct_call_timeout == UINT_MAX)
114     gdb_printf (file, _("Timeout for direct inferior function calls "
115                               "is \"unlimited\".\n"));
116   else
117     gdb_printf (file, _("Timeout for direct inferior function calls "
118                               "is \"%s seconds\".\n"), value);
119 }
120 
121 /* A timeout (in seconds) for indirect inferior calls.  An indirect inferior
122    call is one that originates from within GDB, for example, when
123    evaluating an expression for a conditional breakpoint.  Compare with
124    the definition of direct calls above.  */
125 
126 static unsigned int indirect_call_timeout = 30;
127 
128 /* Implement 'show indirect-call-timeout'.  */
129 
130 static void
show_indirect_call_timeout(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)131 show_indirect_call_timeout (struct ui_file *file, int from_tty,
132                                 struct cmd_list_element *c, const char *value)
133 {
134   if (target_has_execution () && !target_can_async_p ())
135     gdb_printf (file, _("Current target does not support async mode, timeout "
136                               "for indirect inferior calls is \"unlimited\".\n"));
137   else if (indirect_call_timeout == UINT_MAX)
138     gdb_printf (file, _("Timeout for indirect inferior function calls "
139                               "is \"unlimited\".\n"));
140   else
141     gdb_printf (file, _("Timeout for indirect inferior function calls "
142                               "is \"%s seconds\".\n"), value);
143 }
144 
145 /* How you should pass arguments to a function depends on whether it
146    was defined in K&R style or prototype style.  If you define a
147    function using the K&R syntax that takes a `float' argument, then
148    callers must pass that argument as a `double'.  If you define the
149    function using the prototype syntax, then you must pass the
150    argument as a `float', with no promotion.
151 
152    Unfortunately, on certain older platforms, the debug info doesn't
153    indicate reliably how each function was defined.  A function type's
154    TYPE_PROTOTYPED flag may be clear, even if the function was defined
155    in prototype style.  When calling a function whose TYPE_PROTOTYPED
156    flag is clear, GDB consults this flag to decide what to do.
157 
158    For modern targets, it is proper to assume that, if the prototype
159    flag is clear, that can be trusted: `float' arguments should be
160    promoted to `double'.  For some older targets, if the prototype
161    flag is clear, that doesn't tell us anything.  The default is to
162    trust the debug information; the user can override this behavior
163    with "set coerce-float-to-double 0".  */
164 
165 static bool coerce_float_to_double_p = true;
166 static void
show_coerce_float_to_double_p(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)167 show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
168                                      struct cmd_list_element *c, const char *value)
169 {
170   gdb_printf (file,
171                 _("Coercion of floats to doubles "
172                     "when calling functions is %s.\n"),
173                 value);
174 }
175 
176 /* This boolean tells what gdb should do if a signal is received while
177    in a function called from gdb (call dummy).  If set, gdb unwinds
178    the stack and restore the context to what as it was before the
179    call.
180 
181    The default is to stop in the frame where the signal was received.  */
182 
183 static bool unwind_on_signal_p = false;
184 static void
show_unwind_on_signal_p(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)185 show_unwind_on_signal_p (struct ui_file *file, int from_tty,
186                                struct cmd_list_element *c, const char *value)
187 {
188   gdb_printf (file,
189                 _("Unwinding of stack if a signal is "
190                     "received while in a call dummy is %s.\n"),
191                 value);
192 }
193 
194 /* This boolean tells what gdb should do if a std::terminate call is
195    made while in a function called from gdb (call dummy).
196    As the confines of a single dummy stack prohibit out-of-frame
197    handlers from handling a raised exception, and as out-of-frame
198    handlers are common in C++, this can lead to no handler being found
199    by the unwinder, and a std::terminate call.  This is a false positive.
200    If set, gdb unwinds the stack and restores the context to what it
201    was before the call.
202 
203    The default is to unwind the frame if a std::terminate call is
204    made.  */
205 
206 static bool unwind_on_terminating_exception_p = true;
207 
208 static void
show_unwind_on_terminating_exception_p(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)209 show_unwind_on_terminating_exception_p (struct ui_file *file, int from_tty,
210                                                   struct cmd_list_element *c,
211                                                   const char *value)
212 
213 {
214   gdb_printf (file,
215                 _("Unwind stack if a C++ exception is "
216                     "unhandled while in a call dummy is %s.\n"),
217                 value);
218 }
219 
220 /* This boolean tells GDB what to do if an inferior function, called from
221    GDB, times out.  If true, GDB unwinds the stack and restores the context
222    to what it was before the call.  When false, GDB leaves the thread as it
223    is at the point of the timeout.
224 
225    The default is to stop in the frame where the timeout occurred.  */
226 
227 static bool unwind_on_timeout_p = false;
228 
229 /* Implement 'show unwind-on-timeout'.  */
230 
231 static void
show_unwind_on_timeout_p(struct ui_file * file,int from_tty,struct cmd_list_element * c,const char * value)232 show_unwind_on_timeout_p (struct ui_file *file, int from_tty,
233                                 struct cmd_list_element *c, const char *value)
234 {
235   gdb_printf (file,
236                 _("Unwinding of stack if a timeout occurs "
237                     "while in a call dummy is %s.\n"),
238                 value);
239 }
240 
241 /* Perform the standard coercions that are specified
242    for arguments to be passed to C, Ada or Fortran functions.
243 
244    If PARAM_TYPE is non-NULL, it is the expected parameter type.
245    IS_PROTOTYPED is non-zero if the function declaration is prototyped.  */
246 
247 static struct value *
value_arg_coerce(struct gdbarch * gdbarch,struct value * arg,struct type * param_type,int is_prototyped)248 value_arg_coerce (struct gdbarch *gdbarch, struct value *arg,
249                       struct type *param_type, int is_prototyped)
250 {
251   const struct builtin_type *builtin = builtin_type (gdbarch);
252   struct type *arg_type = check_typedef (arg->type ());
253   struct type *type
254     = param_type ? check_typedef (param_type) : arg_type;
255 
256   /* Perform any Ada- and Fortran-specific coercion first.  */
257   if (current_language->la_language == language_ada)
258     arg = ada_convert_actual (arg, type);
259   else if (current_language->la_language == language_fortran)
260     type = fortran_preserve_arg_pointer (arg, type);
261 
262   /* Force the value to the target if we will need its address.  At
263      this point, we could allocate arguments on the stack instead of
264      calling malloc if we knew that their addresses would not be
265      saved by the called function.  */
266   arg = value_coerce_to_target (arg);
267 
268   switch (type->code ())
269     {
270     case TYPE_CODE_REF:
271     case TYPE_CODE_RVALUE_REF:
272       {
273           struct value *new_value;
274 
275           if (TYPE_IS_REFERENCE (arg_type))
276             return value_cast_pointers (type, arg, 0);
277 
278           /* Cast the value to the reference's target type, and then
279              convert it back to a reference.  This will issue an error
280              if the value was not previously in memory - in some cases
281              we should clearly be allowing this, but how?  */
282           new_value = value_cast (type->target_type (), arg);
283           new_value = value_ref (new_value, type->code ());
284           return new_value;
285       }
286     case TYPE_CODE_INT:
287     case TYPE_CODE_CHAR:
288     case TYPE_CODE_BOOL:
289     case TYPE_CODE_ENUM:
290       /* If we don't have a prototype, coerce to integer type if necessary.  */
291       if (!is_prototyped)
292           {
293             if (type->length () < builtin->builtin_int->length ())
294               type = builtin->builtin_int;
295           }
296       /* Currently all target ABIs require at least the width of an integer
297            type for an argument.  We may have to conditionalize the following
298            type coercion for future targets.  */
299       if (type->length () < builtin->builtin_int->length ())
300           type = builtin->builtin_int;
301       break;
302     case TYPE_CODE_FLT:
303       if (!is_prototyped && coerce_float_to_double_p)
304           {
305             if (type->length () < builtin->builtin_double->length ())
306               type = builtin->builtin_double;
307             else if (type->length () > builtin->builtin_double->length ())
308               type = builtin->builtin_long_double;
309           }
310       break;
311     case TYPE_CODE_FUNC:
312       type = lookup_pointer_type (type);
313       break;
314     case TYPE_CODE_ARRAY:
315       /* Arrays are coerced to pointers to their first element, unless
316            they are vectors, in which case we want to leave them alone,
317            because they are passed by value.  */
318       if (current_language->c_style_arrays_p ())
319           if (!type->is_vector ())
320             type = lookup_pointer_type (type->target_type ());
321       break;
322     case TYPE_CODE_UNDEF:
323     case TYPE_CODE_PTR:
324     case TYPE_CODE_STRUCT:
325     case TYPE_CODE_UNION:
326     case TYPE_CODE_VOID:
327     case TYPE_CODE_SET:
328     case TYPE_CODE_RANGE:
329     case TYPE_CODE_STRING:
330     case TYPE_CODE_ERROR:
331     case TYPE_CODE_MEMBERPTR:
332     case TYPE_CODE_METHODPTR:
333     case TYPE_CODE_METHOD:
334     case TYPE_CODE_COMPLEX:
335     default:
336       break;
337     }
338 
339   return value_cast (type, arg);
340 }
341 
342 /* See infcall.h.  */
343 
344 CORE_ADDR
find_function_addr(struct value * function,struct type ** retval_type,struct type ** function_type)345 find_function_addr (struct value *function,
346                         struct type **retval_type,
347                         struct type **function_type)
348 {
349   struct type *ftype = check_typedef (function->type ());
350   struct gdbarch *gdbarch = ftype->arch ();
351   struct type *value_type = NULL;
352   /* Initialize it just to avoid a GCC false warning.  */
353   CORE_ADDR funaddr = 0;
354 
355   /* If it's a member function, just look at the function
356      part of it.  */
357 
358   /* Determine address to call.  */
359   if (ftype->code () == TYPE_CODE_FUNC
360       || ftype->code () == TYPE_CODE_METHOD)
361     funaddr = function->address ();
362   else if (ftype->code () == TYPE_CODE_PTR)
363     {
364       funaddr = value_as_address (function);
365       ftype = check_typedef (ftype->target_type ());
366       if (ftype->code () == TYPE_CODE_FUNC
367             || ftype->code () == TYPE_CODE_METHOD)
368           funaddr = gdbarch_convert_from_func_ptr_addr
369             (gdbarch, funaddr, current_inferior ()->top_target());
370     }
371   if (ftype->code () == TYPE_CODE_FUNC
372       || ftype->code () == TYPE_CODE_METHOD)
373     {
374       if (ftype->is_gnu_ifunc ())
375           {
376             CORE_ADDR resolver_addr = funaddr;
377 
378             /* Resolve the ifunc.  Note this may call the resolver
379                function in the inferior.  */
380             funaddr = gnu_ifunc_resolve_addr (gdbarch, resolver_addr);
381 
382             /* Skip querying the function symbol if no RETVAL_TYPE or
383                FUNCTION_TYPE have been asked for.  */
384             if (retval_type != NULL || function_type != NULL)
385               {
386                 type *target_ftype = find_function_type (funaddr);
387                 /* If we don't have debug info for the target function,
388                      see if we can instead extract the target function's
389                      type from the type that the resolver returns.  */
390                 if (target_ftype == NULL)
391                     target_ftype = find_gnu_ifunc_target_type (resolver_addr);
392                 if (target_ftype != NULL)
393                     {
394                       value_type = check_typedef (target_ftype)->target_type ();
395                       ftype = target_ftype;
396                     }
397               }
398           }
399       else
400           value_type = ftype->target_type ();
401     }
402   else if (ftype->code () == TYPE_CODE_INT)
403     {
404       /* Handle the case of functions lacking debugging info.
405            Their values are characters since their addresses are char.  */
406       if (ftype->length () == 1)
407           funaddr = value_as_address (value_addr (function));
408       else
409           {
410             /* Handle function descriptors lacking debug info.  */
411             int found_descriptor = 0;
412 
413             funaddr = 0;      /* pacify "gcc -Werror" */
414             if (function->lval () == lval_memory)
415               {
416                 CORE_ADDR nfunaddr;
417 
418                 funaddr = value_as_address (value_addr (function));
419                 nfunaddr = funaddr;
420                 funaddr = gdbarch_convert_from_func_ptr_addr
421                     (gdbarch, funaddr, current_inferior ()->top_target ());
422                 if (funaddr != nfunaddr)
423                     found_descriptor = 1;
424               }
425             if (!found_descriptor)
426               /* Handle integer used as address of a function.  */
427               funaddr = (CORE_ADDR) value_as_long (function);
428           }
429     }
430   else
431     error (_("Invalid data type for function to be called."));
432 
433   if (retval_type != NULL)
434     *retval_type = value_type;
435   if (function_type != NULL)
436     *function_type = ftype;
437   return funaddr + gdbarch_deprecated_function_start_offset (gdbarch);
438 }
439 
440 /* For CALL_DUMMY_ON_STACK, push a breakpoint sequence that the called
441    function returns to.  */
442 
443 static CORE_ADDR
push_dummy_code(struct gdbarch * gdbarch,CORE_ADDR sp,CORE_ADDR funaddr,gdb::array_view<value * > args,struct type * value_type,CORE_ADDR * real_pc,CORE_ADDR * bp_addr,struct regcache * regcache)444 push_dummy_code (struct gdbarch *gdbarch,
445                      CORE_ADDR sp, CORE_ADDR funaddr,
446                      gdb::array_view<value *> args,
447                      struct type *value_type,
448                      CORE_ADDR *real_pc, CORE_ADDR *bp_addr,
449                      struct regcache *regcache)
450 {
451   gdb_assert (gdbarch_push_dummy_code_p (gdbarch));
452 
453   return gdbarch_push_dummy_code (gdbarch, sp, funaddr,
454                                           args.data (), args.size (),
455                                           value_type, real_pc, bp_addr,
456                                           regcache);
457 }
458 
459 /* See infcall.h.  */
460 
461 void
error_call_unknown_return_type(const char * func_name)462 error_call_unknown_return_type (const char *func_name)
463 {
464   if (func_name != NULL)
465     error (_("'%s' has unknown return type; "
466                "cast the call to its declared return type"),
467              func_name);
468   else
469     error (_("function has unknown return type; "
470                "cast the call to its declared return type"));
471 }
472 
473 /* Fetch the name of the function at FUNADDR.
474    This is used in printing an error message for call_function_by_hand.
475    BUF is used to print FUNADDR in hex if the function name cannot be
476    determined.  It must be large enough to hold formatted result of
477    RAW_FUNCTION_ADDRESS_FORMAT.  */
478 
479 static const char *
get_function_name(CORE_ADDR funaddr,char * buf,int buf_size)480 get_function_name (CORE_ADDR funaddr, char *buf, int buf_size)
481 {
482   {
483     struct symbol *symbol = find_pc_function (funaddr);
484 
485     if (symbol)
486       return symbol->print_name ();
487   }
488 
489   {
490     /* Try the minimal symbols.  */
491     struct bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (funaddr);
492 
493     if (msymbol.minsym)
494       return msymbol.minsym->print_name ();
495   }
496 
497   {
498     std::string tmp = string_printf (_(RAW_FUNCTION_ADDRESS_FORMAT),
499                                              hex_string (funaddr));
500 
501     gdb_assert (tmp.length () + 1 <= buf_size);
502     return strcpy (buf, tmp.c_str ());
503   }
504 }
505 
506 /* All the meta data necessary to extract the call's return value.  */
507 
508 struct call_return_meta_info
509 {
510   /* The caller frame's architecture.  */
511   struct gdbarch *gdbarch;
512 
513   /* The called function.  */
514   struct value *function;
515 
516   /* The return value's type.  */
517   struct type *value_type;
518 
519   /* Are we returning a value using a structure return or a normal
520      value return?  */
521   int struct_return_p;
522 
523   /* If using a structure return, this is the structure's address.  */
524   CORE_ADDR struct_addr;
525 };
526 
527 /* Extract the called function's return value.  */
528 
529 static struct value *
get_call_return_value(struct call_return_meta_info * ri)530 get_call_return_value (struct call_return_meta_info *ri)
531 {
532   struct value *retval = NULL;
533   thread_info *thr = inferior_thread ();
534   bool stack_temporaries = thread_stack_temporaries_enabled_p (thr);
535 
536   if (ri->value_type->code () == TYPE_CODE_VOID)
537     retval = value::allocate (ri->value_type);
538   else if (ri->struct_return_p)
539     {
540       if (stack_temporaries)
541           {
542             retval = value_from_contents_and_address (ri->value_type, NULL,
543                                                                 ri->struct_addr);
544             push_thread_stack_temporary (thr, retval);
545           }
546       else
547           retval = value_at_non_lval (ri->value_type, ri->struct_addr);
548     }
549   else
550     {
551       gdbarch_return_value_as_value (ri->gdbarch, ri->function, ri->value_type,
552                                              get_thread_regcache (inferior_thread ()),
553                                              &retval, NULL);
554       if (stack_temporaries && class_or_union_p (ri->value_type))
555           {
556             /* Values of class type returned in registers are copied onto
557                the stack and their lval_type set to lval_memory.  This is
558                required because further evaluation of the expression
559                could potentially invoke methods on the return value
560                requiring GDB to evaluate the "this" pointer.  To evaluate
561                the this pointer, GDB needs the memory address of the
562                value.  */
563             retval->force_lval (ri->struct_addr);
564             push_thread_stack_temporary (thr, retval);
565           }
566     }
567 
568   gdb_assert (retval != NULL);
569   return retval;
570 }
571 
572 /* Data for the FSM that manages an infcall.  It's main job is to
573    record the called function's return value.  */
574 
575 struct call_thread_fsm : public thread_fsm
576 {
577   /* All the info necessary to be able to extract the return
578      value.  */
579   struct call_return_meta_info return_meta_info;
580 
581   /* The called function's return value.  This is extracted from the
582      target before the dummy frame is popped.  */
583   struct value *return_value = nullptr;
584 
585   /* The top level that started the infcall (and is synchronously
586      waiting for it to end).  */
587   struct ui *waiting_ui;
588 
589   call_thread_fsm (struct ui *waiting_ui, struct interp *cmd_interp,
590                        struct gdbarch *gdbarch, struct value *function,
591                        struct type *value_type,
592                        int struct_return_p, CORE_ADDR struct_addr);
593 
594   bool should_stop (struct thread_info *thread) override;
595 
596   bool should_notify_stop () override;
597 
598   /* Record that this thread timed out while performing an infcall.  */
timed_outcall_thread_fsm599   void timed_out ()
600   {
601     m_timed_out = true;
602   }
603 
604 private:
605   /* Set true if the thread timed out while performing an infcall.  */
606   bool m_timed_out = false;
607 };
608 
609 /* Allocate a new call_thread_fsm object.  */
610 
call_thread_fsm(struct ui * waiting_ui,struct interp * cmd_interp,struct gdbarch * gdbarch,struct value * function,struct type * value_type,int struct_return_p,CORE_ADDR struct_addr)611 call_thread_fsm::call_thread_fsm (struct ui *waiting_ui,
612                                           struct interp *cmd_interp,
613                                           struct gdbarch *gdbarch,
614                                           struct value *function,
615                                           struct type *value_type,
616                                           int struct_return_p, CORE_ADDR struct_addr)
617   : thread_fsm (cmd_interp),
618     waiting_ui (waiting_ui)
619 {
620   return_meta_info.gdbarch = gdbarch;
621   return_meta_info.function = function;
622   return_meta_info.value_type = value_type;
623   return_meta_info.struct_return_p = struct_return_p;
624   return_meta_info.struct_addr = struct_addr;
625 }
626 
627 /* Implementation of should_stop method for infcalls.  */
628 
629 bool
should_stop(struct thread_info * thread)630 call_thread_fsm::should_stop (struct thread_info *thread)
631 {
632   INFCALL_SCOPED_DEBUG_ENTER_EXIT;
633 
634   if (stop_stack_dummy == STOP_STACK_DUMMY)
635     {
636       /* Done.  */
637       set_finished ();
638 
639       /* Stash the return value before the dummy frame is popped and
640            registers are restored to what they were before the
641            call..  */
642       return_value = get_call_return_value (&return_meta_info);
643     }
644 
645   /* We are always going to stop this thread, but we might not be planning
646      to call call normal_stop, which is only done if should_notify_stop
647      returns true.
648 
649      As normal_stop is responsible for calling async_enable_stdin, which
650      would break us out of wait_sync_command_done, then, if we don't plan
651      to call normal_stop, we should call async_enable_stdin here instead.
652 
653      Unlike normal_stop, we only call async_enable_stdin on WAITING_UI, but
654      that is sufficient for wait_sync_command_done.  */
655   if (!this->should_notify_stop ())
656     {
657       scoped_restore save_ui = make_scoped_restore (&current_ui, waiting_ui);
658       gdb_assert (current_ui->prompt_state == PROMPT_BLOCKED);
659       async_enable_stdin ();
660     }
661 
662   return true;
663 }
664 
665 /* Implementation of should_notify_stop method for infcalls.  */
666 
667 bool
should_notify_stop()668 call_thread_fsm::should_notify_stop ()
669 {
670   INFCALL_SCOPED_DEBUG_ENTER_EXIT;
671 
672   if (finished_p ())
673     {
674       /* Infcall succeeded.  Be silent and proceed with evaluating the
675            expression.  */
676       infcall_debug_printf ("inferior call has finished, don't notify");
677       return false;
678     }
679 
680   infcall_debug_printf ("inferior call didn't complete fully");
681 
682   if ((stopped_by_random_signal && unwind_on_signal_p)
683       || (m_timed_out && unwind_on_timeout_p))
684     {
685       infcall_debug_printf ("unwind-on-signal is on, don't notify");
686       return false;
687     }
688 
689   if (stop_stack_dummy == STOP_STD_TERMINATE
690       && unwind_on_terminating_exception_p)
691     {
692       infcall_debug_printf ("unwind-on-terminating-exception is on, don't notify");
693       return false;
694     }
695 
696   /* Something wrong happened.  E.g., an unexpected breakpoint
697      triggered, or a signal was intercepted.  Notify the stop.  */
698   return true;
699 }
700 
701 /* A class to control creation of a timer that will interrupt a thread
702    during an inferior call.  */
703 struct infcall_timer_controller
704 {
705   /* Setup an event-loop timer that will interrupt PTID if the inferior
706      call takes too long.  DIRECT_CALL_P is true when this inferior call is
707      a result of the user using a 'print' or 'call' command, and false when
708      this inferior call is a result of e.g. a conditional breakpoint
709      expression, this is used to select which timeout to use.  */
infcall_timer_controllerinfcall_timer_controller710   infcall_timer_controller (thread_info *thr, bool direct_call_p)
711     : m_thread (thr)
712   {
713     unsigned int timeout
714       = direct_call_p ? direct_call_timeout : indirect_call_timeout;
715     if (timeout < UINT_MAX && target_can_async_p ())
716       {
717           int ms = timeout * 1000;
718           int id = create_timer (ms, infcall_timer_controller::timed_out, this);
719           m_timer_id.emplace (id);
720           infcall_debug_printf ("Setting up infcall timeout timer for "
721                                     "ptid %s: %d milliseconds",
722                                     m_thread->ptid.to_string ().c_str (), ms);
723       }
724   }
725 
726   /* Destructor.  Ensure that the timer is removed from the event loop.  */
~infcall_timer_controllerinfcall_timer_controller727   ~infcall_timer_controller ()
728   {
729     /* If the timer has already triggered, then it will have already been
730        deleted from the event loop.  If the timer has not triggered, then
731        delete it now.  */
732     if (m_timer_id.has_value () && !m_triggered)
733       delete_timer (*m_timer_id);
734 
735     /* Just for clarity, discard the timer id now.  */
736     m_timer_id.reset ();
737   }
738 
739   /* Return true if there was a timer in place, and the timer triggered,
740      otherwise, return false.  */
triggered_pinfcall_timer_controller741   bool triggered_p ()
742   {
743     gdb_assert (!m_triggered || m_timer_id.has_value ());
744     return m_triggered;
745   }
746 
747 private:
748   /* The thread we should interrupt.  */
749   thread_info *m_thread;
750 
751   /* Set true when the timer is triggered.  */
752   bool m_triggered = false;
753 
754   /* Given a value when a timer is in place.  */
755   std::optional<int> m_timer_id;
756 
757   /* Callback for the timer, forwards to ::trigger below.  */
758   static void
timed_outinfcall_timer_controller759   timed_out (gdb_client_data context)
760   {
761     infcall_timer_controller *ctrl
762       = static_cast<infcall_timer_controller *> (context);
763     ctrl->trigger ();
764   }
765 
766   /* Called when the timer goes off.  Stop thread M_THREAD.  */
767   void
triggerinfcall_timer_controller768   trigger ()
769   {
770     m_triggered = true;
771 
772     scoped_disable_commit_resumed disable_commit_resumed ("infcall timeout");
773 
774     infcall_debug_printf ("Stopping thread %s",
775                                 m_thread->ptid.to_string ().c_str ());
776     call_thread_fsm *fsm
777       = gdb::checked_static_cast<call_thread_fsm *> (m_thread->thread_fsm ());
778     fsm->timed_out ();
779     target_stop (m_thread->ptid);
780   }
781 };
782 
783 /* Subroutine of call_function_by_hand to simplify it.
784    Start up the inferior and wait for it to stop.
785    Return the exception if there's an error, or an exception with
786    reason >= 0 if there's no error.
787 
788    This is done inside a TRY_CATCH so the caller needn't worry about
789    thrown errors.  The caller should rethrow if there's an error.  */
790 
791 static struct gdb_exception
run_inferior_call(std::unique_ptr<call_thread_fsm> sm,struct thread_info * call_thread,CORE_ADDR real_pc,bool * timed_out_p)792 run_inferior_call (std::unique_ptr<call_thread_fsm> sm,
793                        struct thread_info *call_thread, CORE_ADDR real_pc,
794                        bool *timed_out_p)
795 {
796   INFCALL_SCOPED_DEBUG_ENTER_EXIT;
797 
798   struct gdb_exception caught_error;
799   ptid_t call_thread_ptid = call_thread->ptid;
800   int was_running = call_thread->state == THREAD_RUNNING;
801   *timed_out_p = false;
802 
803   infcall_debug_printf ("call function at %s in thread %s, was_running = %d",
804                               core_addr_to_string (real_pc),
805                               call_thread_ptid.to_string ().c_str (),
806                               was_running);
807 
808   current_ui->unregister_file_handler ();
809 
810   scoped_restore restore_in_infcall
811     = make_scoped_restore (&call_thread->control.in_infcall, 1);
812 
813   clear_proceed_status (0);
814 
815   /* Associate the FSM with the thread after clear_proceed_status
816      (otherwise it'd clear this FSM).  */
817   call_thread->set_thread_fsm (std::move (sm));
818 
819   disable_watchpoints_before_interactive_call_start ();
820 
821   /* We want to print return value, please...  */
822   call_thread->control.proceed_to_finish = 1;
823 
824   try
825     {
826       /* Infcalls run synchronously, in the foreground.  */
827       scoped_restore restore_prompt_state
828           = make_scoped_restore (&current_ui->prompt_state, PROMPT_BLOCKED);
829 
830       /* So that we don't print the prompt prematurely in
831            fetch_inferior_event.  */
832       scoped_restore restore_ui_async
833           = make_scoped_restore (&current_ui->async, 0);
834 
835       proceed (real_pc, GDB_SIGNAL_0);
836 
837       /* Enable commit resume, but pass true for the force flag.  This
838            ensures any thread we set running in proceed will actually be
839            committed to the target, even if some other thread in the current
840            target has a pending event.  */
841       scoped_enable_commit_resumed enable ("infcall", true);
842 
843       infrun_debug_show_threads ("non-exited threads after proceed for inferior-call",
844                                          all_non_exited_threads ());
845 
846       /* Setup a timer (if possible, and if the settings allow) to prevent
847            the inferior call running forever.  */
848       bool direct_call_p = !call_thread->control.in_cond_eval;
849       infcall_timer_controller infcall_timer (call_thread, direct_call_p);
850 
851       /* Inferior function calls are always synchronous, even if the
852            target supports asynchronous execution.  */
853       wait_sync_command_done ();
854 
855       /* If the timer triggered then the inferior call failed.  */
856       if (infcall_timer.triggered_p ())
857           {
858             infcall_debug_printf ("inferior call timed out");
859             *timed_out_p = true;
860           }
861       else
862           infcall_debug_printf ("inferior call completed successfully");
863     }
864   catch (gdb_exception &e)
865     {
866       infcall_debug_printf ("exception while making inferior call (%d): %s",
867                                   e.reason, e.what ());
868       caught_error = std::move (e);
869     }
870 
871   infcall_debug_printf ("thread is now: %s",
872                               inferior_ptid.to_string ().c_str ());
873 
874   /* After the inferior call finished, async_enable_stdin has been
875      called, either from normal_stop or from
876      call_thread_fsm::should_stop, and the prompt state has been
877      restored by the scoped_restore in the try block above.
878 
879      If the inferior call finished successfully, then we should
880      disable stdin as we don't know yet whether the inferior will be
881      stopping.  Calling async_disable_stdin restores things to how
882      they were when this function was called.
883 
884      If the inferior call didn't complete successfully, then
885      normal_stop has already been called, and we know for sure that we
886      are going to present this stop to the user.  In this case, we
887      call async_enable_stdin.  This changes the prompt state to
888      PROMPT_NEEDED.
889 
890      If the previous prompt state was PROMPT_NEEDED, then as
891      async_enable_stdin has already been called, nothing additional
892      needs to be done here.  */
893   if (current_ui->prompt_state == PROMPT_BLOCKED)
894     {
895       if (call_thread->thread_fsm ()->finished_p ())
896           async_disable_stdin ();
897       else
898           async_enable_stdin ();
899     }
900 
901   /* If the infcall does NOT succeed, normal_stop will have already
902      finished the thread states.  However, on success, normal_stop
903      defers here, so that we can set back the thread states to what
904      they were before the call.  Note that we must also finish the
905      state of new threads that might have spawned while the call was
906      running.  The main cases to handle are:
907 
908      - "(gdb) print foo ()", or any other command that evaluates an
909      expression at the prompt.  (The thread was marked stopped before.)
910 
911      - "(gdb) break foo if return_false()" or similar cases where we
912      do an infcall while handling an event (while the thread is still
913      marked running).  In this example, whether the condition
914      evaluates true and thus we'll present a user-visible stop is
915      decided elsewhere.  */
916   if (!was_running
917       && call_thread_ptid == inferior_ptid
918       && stop_stack_dummy == STOP_STACK_DUMMY)
919     finish_thread_state (call_thread->inf->process_target (),
920                                user_visible_resume_ptid (0));
921 
922   enable_watchpoints_after_interactive_call_stop ();
923 
924   /* Call breakpoint_auto_delete on the current contents of the bpstat
925      of inferior call thread.
926      If all error()s out of proceed ended up calling normal_stop
927      (and perhaps they should; it already does in the special case
928      of error out of resume()), then we wouldn't need this.  */
929   if (caught_error.reason < 0)
930     {
931       if (call_thread->state != THREAD_EXITED)
932           breakpoint_auto_delete (call_thread->control.stop_bpstat);
933     }
934 
935   return caught_error;
936 }
937 
938 /* Reserve space on the stack for a value of the given type.
939    Return the address of the allocated space.
940    Make certain that the value is correctly aligned.
941    The SP argument is modified.  */
942 
943 static CORE_ADDR
reserve_stack_space(const type * values_type,CORE_ADDR & sp)944 reserve_stack_space (const type *values_type, CORE_ADDR &sp)
945 {
946   frame_info_ptr frame = get_current_frame ();
947   struct gdbarch *gdbarch = get_frame_arch (frame);
948   CORE_ADDR addr = 0;
949 
950   if (gdbarch_stack_grows_down (gdbarch))
951     {
952       /* Stack grows downward.  Align STRUCT_ADDR and SP after
953            making space.  */
954       sp -= values_type->length ();
955       if (gdbarch_frame_align_p (gdbarch))
956           sp = gdbarch_frame_align (gdbarch, sp);
957       addr = sp;
958     }
959   else
960     {
961       /* Stack grows upward.  Align the frame, allocate space, and
962            then again, re-align the frame???  */
963       if (gdbarch_frame_align_p (gdbarch))
964           sp = gdbarch_frame_align (gdbarch, sp);
965       addr = sp;
966       sp += values_type->length ();
967       if (gdbarch_frame_align_p (gdbarch))
968           sp = gdbarch_frame_align (gdbarch, sp);
969     }
970 
971   return addr;
972 }
973 
974 /* The data structure which keeps a destructor function and
975    its implicit 'this' parameter.  */
976 
977 struct destructor_info
978 {
destructor_infodestructor_info979   destructor_info (struct value *function, struct value *self)
980     : function (function), self (self) { }
981 
982   struct value *function;
983   struct value *self;
984 };
985 
986 
987 /* Auxiliary function that takes a list of destructor functions
988    with their 'this' parameters, and invokes the functions.  */
989 
990 static void
call_destructors(const std::list<destructor_info> & dtors_to_invoke,struct type * default_return_type)991 call_destructors (const std::list<destructor_info> &dtors_to_invoke,
992                       struct type *default_return_type)
993 {
994   for (auto vals : dtors_to_invoke)
995     {
996       call_function_by_hand (vals.function, default_return_type,
997                                    gdb::make_array_view (&(vals.self), 1));
998     }
999 }
1000 
1001 /* See infcall.h.  */
1002 
1003 struct value *
call_function_by_hand(struct value * function,type * default_return_type,gdb::array_view<value * > args)1004 call_function_by_hand (struct value *function,
1005                            type *default_return_type,
1006                            gdb::array_view<value *> args)
1007 {
1008   return call_function_by_hand_dummy (function, default_return_type,
1009                                               args, NULL, NULL);
1010 }
1011 
1012 /* All this stuff with a dummy frame may seem unnecessarily complicated
1013    (why not just save registers in GDB?).  The purpose of pushing a dummy
1014    frame which looks just like a real frame is so that if you call a
1015    function and then hit a breakpoint (get a signal, etc), "backtrace"
1016    will look right.  Whether the backtrace needs to actually show the
1017    stack at the time the inferior function was called is debatable, but
1018    it certainly needs to not display garbage.  So if you are contemplating
1019    making dummy frames be different from normal frames, consider that.  */
1020 
1021 /* Perform a function call in the inferior.
1022    ARGS is a vector of values of arguments.
1023    FUNCTION is a value, the function to be called.
1024    Returns a value representing what the function returned.
1025    May fail to return, if a breakpoint or signal is hit
1026    during the execution of the function.
1027 
1028    ARGS is modified to contain coerced values.  */
1029 
1030 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)1031 call_function_by_hand_dummy (struct value *function,
1032                                    type *default_return_type,
1033                                    gdb::array_view<value *> args,
1034                                    dummy_frame_dtor_ftype *dummy_dtor,
1035                                    void *dummy_dtor_data)
1036 {
1037   INFCALL_SCOPED_DEBUG_ENTER_EXIT;
1038 
1039   CORE_ADDR sp;
1040   struct type *target_values_type;
1041   function_call_return_method return_method = return_method_normal;
1042   CORE_ADDR struct_addr = 0;
1043   CORE_ADDR real_pc;
1044   CORE_ADDR bp_addr;
1045   struct frame_id dummy_id;
1046   frame_info_ptr frame;
1047   struct gdbarch *gdbarch;
1048   ptid_t call_thread_ptid;
1049   struct gdb_exception e;
1050   char name_buf[RAW_FUNCTION_ADDRESS_SIZE];
1051 
1052   if (!may_call_functions_p)
1053     error (_("Cannot call functions in the program: "
1054                "may-call-functions is off."));
1055 
1056   if (!target_has_execution ())
1057     noprocess ();
1058 
1059   if (get_traceframe_number () >= 0)
1060     error (_("May not call functions while looking at trace frames."));
1061 
1062   if (execution_direction == EXEC_REVERSE)
1063     error (_("Cannot call functions in reverse mode."));
1064 
1065   /* We're going to run the target, and inspect the thread's state
1066      afterwards.  Hold a strong reference so that the pointer remains
1067      valid even if the thread exits.  */
1068   thread_info_ref call_thread
1069     = thread_info_ref::new_reference (inferior_thread ());
1070 
1071   bool stack_temporaries = thread_stack_temporaries_enabled_p (call_thread.get ());
1072 
1073   frame = get_current_frame ();
1074   gdbarch = get_frame_arch (frame);
1075 
1076   if (!gdbarch_push_dummy_call_p (gdbarch))
1077     error (_("This target does not support function calls."));
1078 
1079   /* Find the function type and do a sanity check.  */
1080   type *ftype;
1081   type *values_type;
1082   CORE_ADDR funaddr = find_function_addr (function, &values_type, &ftype);
1083 
1084   if (is_nocall_function (ftype))
1085     error (_("Cannot call the function '%s' which does not follow the "
1086                "target calling convention."),
1087              get_function_name (funaddr, name_buf, sizeof (name_buf)));
1088 
1089   if (values_type == NULL || values_type->is_stub ())
1090     values_type = default_return_type;
1091   if (values_type == NULL)
1092     {
1093       const char *name = get_function_name (funaddr,
1094                                                       name_buf, sizeof (name_buf));
1095       error (_("'%s' has unknown return type; "
1096                  "cast the call to its declared return type"),
1097                name);
1098     }
1099 
1100   values_type = check_typedef (values_type);
1101 
1102   if (args.size () < ftype->num_fields ())
1103     error (_("Too few arguments in function call."));
1104 
1105   infcall_debug_printf ("calling %s", get_function_name (funaddr, name_buf,
1106                                                                        sizeof (name_buf)));
1107 
1108   /* A holder for the inferior status.
1109      This is only needed while we're preparing the inferior function call.  */
1110   infcall_control_state_up inf_status (save_infcall_control_state ());
1111 
1112   /* Save the caller's registers and other state associated with the
1113      inferior itself so that they can be restored once the
1114      callee returns.  To allow nested calls the registers are (further
1115      down) pushed onto a dummy frame stack.  This unique pointer
1116      is released once the regcache has been pushed).  */
1117   infcall_suspend_state_up caller_state (save_infcall_suspend_state ());
1118 
1119   /* Ensure that the initial SP is correctly aligned.  */
1120   {
1121     CORE_ADDR old_sp = get_frame_sp (frame);
1122 
1123     if (gdbarch_frame_align_p (gdbarch))
1124       {
1125           sp = gdbarch_frame_align (gdbarch, old_sp);
1126           /* NOTE: cagney/2003-08-13: Skip the "red zone".  For some
1127              ABIs, a function can use memory beyond the inner most stack
1128              address.  AMD64 called that region the "red zone".  Skip at
1129              least the "red zone" size before allocating any space on
1130              the stack.  */
1131           if (gdbarch_stack_grows_down (gdbarch))
1132             sp -= gdbarch_frame_red_zone_size (gdbarch);
1133           else
1134             sp += gdbarch_frame_red_zone_size (gdbarch);
1135           /* Still aligned?  */
1136           gdb_assert (sp == gdbarch_frame_align (gdbarch, sp));
1137           /* NOTE: cagney/2002-09-18:
1138 
1139              On a RISC architecture, a void parameterless generic dummy
1140              frame (i.e., no parameters, no result) typically does not
1141              need to push anything the stack and hence can leave SP and
1142              FP.  Similarly, a frameless (possibly leaf) function does
1143              not push anything on the stack and, hence, that too can
1144              leave FP and SP unchanged.  As a consequence, a sequence of
1145              void parameterless generic dummy frame calls to frameless
1146              functions will create a sequence of effectively identical
1147              frames (SP, FP and TOS and PC the same).  This, not
1148              surprisingly, results in what appears to be a stack in an
1149              infinite loop --- when GDB tries to find a generic dummy
1150              frame on the internal dummy frame stack, it will always
1151              find the first one.
1152 
1153              To avoid this problem, the code below always grows the
1154              stack.  That way, two dummy frames can never be identical.
1155              It does burn a few bytes of stack but that is a small price
1156              to pay :-).  */
1157           if (sp == old_sp)
1158             {
1159               if (gdbarch_stack_grows_down (gdbarch))
1160                 sp = gdbarch_frame_align (gdbarch, old_sp - 1);
1161               else
1162                 sp = gdbarch_frame_align (gdbarch, old_sp + 1);
1163             }
1164           /* SP may have underflown address zero here from OLD_SP.  Memory access
1165              functions will probably fail in such case but that is a target's
1166              problem.  */
1167       }
1168     else
1169       /* FIXME: cagney/2002-09-18: Hey, you loose!
1170 
1171            Who knows how badly aligned the SP is!
1172 
1173            If the generic dummy frame ends up empty (because nothing is
1174            pushed) GDB won't be able to correctly perform back traces.
1175            If a target is having trouble with backtraces, first thing to
1176            do is add FRAME_ALIGN() to the architecture vector.  If that
1177            fails, try dummy_id().
1178 
1179            If the ABI specifies a "Red Zone" (see the doco) the code
1180            below will quietly trash it.  */
1181       sp = old_sp;
1182 
1183     /* Skip over the stack temporaries that might have been generated during
1184        the evaluation of an expression.  */
1185     if (stack_temporaries)
1186       {
1187           struct value *lastval;
1188 
1189           lastval = get_last_thread_stack_temporary (call_thread.get ());
1190           if (lastval != NULL)
1191             {
1192               CORE_ADDR lastval_addr = lastval->address ();
1193 
1194               if (gdbarch_stack_grows_down (gdbarch))
1195                 {
1196                     gdb_assert (sp >= lastval_addr);
1197                     sp = lastval_addr;
1198                 }
1199               else
1200                 {
1201                     gdb_assert (sp <= lastval_addr);
1202                     sp = lastval_addr + lastval->type ()->length ();
1203                 }
1204 
1205               if (gdbarch_frame_align_p (gdbarch))
1206                 sp = gdbarch_frame_align (gdbarch, sp);
1207             }
1208       }
1209   }
1210 
1211   /* Are we returning a value using a structure return?  */
1212 
1213   if (gdbarch_return_in_first_hidden_param_p (gdbarch, values_type))
1214     {
1215       return_method = return_method_hidden_param;
1216 
1217       /* Tell the target specific argument pushing routine not to
1218            expect a value.  */
1219       target_values_type = builtin_type (gdbarch)->builtin_void;
1220     }
1221   else
1222     {
1223       if (using_struct_return (gdbarch, function, values_type))
1224           return_method = return_method_struct;
1225       target_values_type = values_type;
1226     }
1227 
1228   gdb::observers::inferior_call_pre.notify (inferior_ptid, funaddr);
1229 
1230   /* Determine the location of the breakpoint (and possibly other
1231      stuff) that the called function will return to.  The SPARC, for a
1232      function returning a structure or union, needs to make space for
1233      not just the breakpoint but also an extra word containing the
1234      size (?) of the structure being passed.  */
1235 
1236   switch (gdbarch_call_dummy_location (gdbarch))
1237     {
1238     case ON_STACK:
1239       {
1240           const gdb_byte *bp_bytes;
1241           CORE_ADDR bp_addr_as_address;
1242           int bp_size;
1243 
1244           /* Be careful BP_ADDR is in inferior PC encoding while
1245              BP_ADDR_AS_ADDRESS is a plain memory address.  */
1246 
1247           sp = push_dummy_code (gdbarch, sp, funaddr, args,
1248                                     target_values_type, &real_pc, &bp_addr,
1249                                     get_thread_regcache (inferior_thread ()));
1250 
1251           /* Write a legitimate instruction at the point where the infcall
1252              breakpoint is going to be inserted.  While this instruction
1253              is never going to be executed, a user investigating the
1254              memory from GDB would see this instruction instead of random
1255              uninitialized bytes.  We chose the breakpoint instruction
1256              as it may look as the most logical one to the user and also
1257              valgrind 3.7.0 needs it for proper vgdb inferior calls.
1258 
1259              If software breakpoints are unsupported for this target we
1260              leave the user visible memory content uninitialized.  */
1261 
1262           bp_addr_as_address = bp_addr;
1263           bp_bytes = gdbarch_breakpoint_from_pc (gdbarch, &bp_addr_as_address,
1264                                                          &bp_size);
1265           if (bp_bytes != NULL)
1266             write_memory (bp_addr_as_address, bp_bytes, bp_size);
1267       }
1268       break;
1269     case AT_ENTRY_POINT:
1270       {
1271           CORE_ADDR dummy_addr;
1272 
1273           real_pc = funaddr;
1274           dummy_addr = entry_point_address ();
1275 
1276           /* A call dummy always consists of just a single breakpoint, so
1277              its address is the same as the address of the dummy.
1278 
1279              The actual breakpoint is inserted separatly so there is no need to
1280              write that out.  */
1281           bp_addr = dummy_addr;
1282           break;
1283       }
1284     default:
1285       internal_error (_("bad switch"));
1286     }
1287 
1288   /* Coerce the arguments and handle pass-by-reference.
1289      We want to remember the destruction required for pass-by-ref values.
1290      For these, store the dtor function and the 'this' argument
1291      in DTORS_TO_INVOKE.  */
1292   std::list<destructor_info> dtors_to_invoke;
1293 
1294   for (int i = args.size () - 1; i >= 0; i--)
1295     {
1296       int prototyped;
1297       struct type *param_type;
1298 
1299       /* FIXME drow/2002-05-31: Should just always mark methods as
1300            prototyped.  Can we respect TYPE_VARARGS?  Probably not.  */
1301       if (ftype->code () == TYPE_CODE_METHOD)
1302           prototyped = 1;
1303       else if (ftype->target_type () == NULL && ftype->num_fields () == 0
1304                  && default_return_type != NULL)
1305           {
1306             /* Calling a no-debug function with the return type
1307                explicitly cast.  Assume the function is prototyped,
1308                with a prototype matching the types of the arguments.
1309                E.g., with:
1310                float mult (float v1, float v2) { return v1 * v2; }
1311                This:
1312                (gdb) p (float) mult (2.0f, 3.0f)
1313                Is a simpler alternative to:
1314                (gdb) p ((float (*) (float, float)) mult) (2.0f, 3.0f)
1315             */
1316             prototyped = 1;
1317           }
1318       else if (i < ftype->num_fields ())
1319           prototyped = ftype->is_prototyped ();
1320       else
1321           prototyped = 0;
1322 
1323       if (i < ftype->num_fields ())
1324           param_type = ftype->field (i).type ();
1325       else
1326           param_type = NULL;
1327 
1328       value *original_arg = args[i];
1329       args[i] = value_arg_coerce (gdbarch, args[i],
1330                                           param_type, prototyped);
1331 
1332       if (param_type == NULL)
1333           continue;
1334 
1335       auto info = language_pass_by_reference (param_type);
1336       if (!info.copy_constructible)
1337           error (_("expression cannot be evaluated because the type '%s' "
1338                      "is not copy constructible"), param_type->name ());
1339 
1340       if (!info.destructible)
1341           error (_("expression cannot be evaluated because the type '%s' "
1342                      "is not destructible"), param_type->name ());
1343 
1344       if (info.trivially_copyable)
1345           continue;
1346 
1347       /* Make a copy of the argument on the stack.  If the argument is
1348            trivially copy ctor'able, copy bit by bit.  Otherwise, call
1349            the copy ctor to initialize the clone.  */
1350       CORE_ADDR addr = reserve_stack_space (param_type, sp);
1351       value *clone
1352           = value_from_contents_and_address (param_type, nullptr, addr);
1353       push_thread_stack_temporary (call_thread.get (), clone);
1354       value *clone_ptr
1355           = value_from_pointer (lookup_pointer_type (param_type), addr);
1356 
1357       if (info.trivially_copy_constructible)
1358           {
1359             int length = param_type->length ();
1360             write_memory (addr, args[i]->contents ().data (), length);
1361           }
1362       else
1363           {
1364             value *copy_ctor;
1365             value *cctor_args[2] = { clone_ptr, original_arg };
1366             find_overload_match (gdb::make_array_view (cctor_args, 2),
1367                                      param_type->name (), METHOD,
1368                                      &clone_ptr, nullptr, &copy_ctor, nullptr,
1369                                      nullptr, 0, EVAL_NORMAL);
1370 
1371             if (copy_ctor == nullptr)
1372               error (_("expression cannot be evaluated because a copy "
1373                          "constructor for the type '%s' could not be found "
1374                          "(maybe inlined?)"), param_type->name ());
1375 
1376             call_function_by_hand (copy_ctor, default_return_type,
1377                                          gdb::make_array_view (cctor_args, 2));
1378           }
1379 
1380       /* If the argument has a destructor, remember it so that we
1381            invoke it after the infcall is complete.  */
1382       if (!info.trivially_destructible)
1383           {
1384             /* Looking up the function via overload resolution does not
1385                work because the compiler (in particular, gcc) adds an
1386                artificial int parameter in some cases.  So we look up
1387                the function by using the "~" name.  This should be OK
1388                because there can be only one dtor definition.  */
1389             const char *dtor_name = nullptr;
1390             for (int fieldnum = 0;
1391                  fieldnum < TYPE_NFN_FIELDS (param_type);
1392                  fieldnum++)
1393               {
1394                 fn_field *fn
1395                     = TYPE_FN_FIELDLIST1 (param_type, fieldnum);
1396                 const char *field_name
1397                     = TYPE_FN_FIELDLIST_NAME (param_type, fieldnum);
1398 
1399                 if (field_name[0] == '~')
1400                     dtor_name = TYPE_FN_FIELD_PHYSNAME (fn, 0);
1401               }
1402 
1403             if (dtor_name == nullptr)
1404               error (_("expression cannot be evaluated because a destructor "
1405                          "for the type '%s' could not be found "
1406                          "(maybe inlined?)"), param_type->name ());
1407 
1408             value *dtor
1409               = find_function_in_inferior (dtor_name, 0);
1410 
1411             /* Insert the dtor to the front of the list to call them
1412                in reverse order later.  */
1413             dtors_to_invoke.emplace_front (dtor, clone_ptr);
1414           }
1415 
1416       args[i] = clone_ptr;
1417     }
1418 
1419   /* Reserve space for the return structure to be written on the
1420      stack, if necessary.
1421 
1422      While evaluating expressions, we reserve space on the stack for
1423      return values of class type even if the language ABI and the target
1424      ABI do not require that the return value be passed as a hidden first
1425      argument.  This is because we want to store the return value as an
1426      on-stack temporary while the expression is being evaluated.  This
1427      enables us to have chained function calls in expressions.
1428 
1429      Keeping the return values as on-stack temporaries while the expression
1430      is being evaluated is OK because the thread is stopped until the
1431      expression is completely evaluated.  */
1432 
1433   if (return_method != return_method_normal
1434       || (stack_temporaries && class_or_union_p (values_type)))
1435     struct_addr = reserve_stack_space (values_type, sp);
1436 
1437   std::vector<struct value *> new_args;
1438   if (return_method == return_method_hidden_param)
1439     {
1440       /* Add the new argument to the front of the argument list.  */
1441       new_args.reserve (1 + args.size ());
1442       new_args.push_back
1443           (value_from_pointer (lookup_pointer_type (values_type), struct_addr));
1444       new_args.insert (new_args.end (), args.begin (), args.end ());
1445       args = new_args;
1446     }
1447 
1448   /* Create the dummy stack frame.  Pass in the call dummy address as,
1449      presumably, the ABI code knows where, in the call dummy, the
1450      return address should be pointed.  */
1451   sp = gdbarch_push_dummy_call (gdbarch, function,
1452                                         get_thread_regcache (inferior_thread ()),
1453                                         bp_addr, args.size (), args.data (),
1454                                         sp, return_method, struct_addr);
1455 
1456   /* Set up a frame ID for the dummy frame so we can pass it to
1457      set_momentary_breakpoint.  We need to give the breakpoint a frame
1458      ID so that the breakpoint code can correctly re-identify the
1459      dummy breakpoint.  */
1460   /* Sanity.  The exact same SP value is returned by PUSH_DUMMY_CALL,
1461      saved as the dummy-frame TOS, and used by dummy_id to form
1462      the frame ID's stack address.  */
1463   dummy_id = frame_id_build (sp, bp_addr);
1464 
1465   /* Create a momentary breakpoint at the return address of the
1466      inferior.  That way it breaks when it returns.  */
1467 
1468   {
1469     symtab_and_line sal;
1470     sal.pspace = current_program_space;
1471     sal.pc = bp_addr;
1472     sal.section = find_pc_overlay (sal.pc);
1473 
1474     /* Sanity.  The exact same SP value is returned by
1475        PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by
1476        dummy_id to form the frame ID's stack address.  */
1477     breakpoint *bpt
1478       = set_momentary_breakpoint (gdbarch, sal,
1479                                           dummy_id, bp_call_dummy).release ();
1480 
1481     bpt->disposition = disp_del;
1482     gdb_assert (bpt->related_breakpoint == bpt);
1483 
1484     breakpoint *longjmp_b = set_longjmp_breakpoint_for_call_dummy ();
1485     if (longjmp_b)
1486       {
1487           /* Link BPT into the chain of LONGJMP_B.  */
1488           bpt->related_breakpoint = longjmp_b;
1489           while (longjmp_b->related_breakpoint != bpt->related_breakpoint)
1490             longjmp_b = longjmp_b->related_breakpoint;
1491           longjmp_b->related_breakpoint = bpt;
1492       }
1493   }
1494 
1495   /* Create a breakpoint in std::terminate.
1496      If a C++ exception is raised in the dummy-frame, and the
1497      exception handler is (normally, and expected to be) out-of-frame,
1498      the default C++ handler will (wrongly) be called in an inferior
1499      function call.  This is wrong, as an exception can be  normally
1500      and legally handled out-of-frame.  The confines of the dummy frame
1501      prevent the unwinder from finding the correct handler (or any
1502      handler, unless it is in-frame).  The default handler calls
1503      std::terminate.  This will kill the inferior.  Assert that
1504      terminate should never be called in an inferior function
1505      call.  Place a momentary breakpoint in the std::terminate function
1506      and if triggered in the call, rewind.  */
1507   if (unwind_on_terminating_exception_p)
1508     set_std_terminate_breakpoint ();
1509 
1510   /* Everything's ready, push all the info needed to restore the
1511      caller (and identify the dummy-frame) onto the dummy-frame
1512      stack.  */
1513   dummy_frame_push (caller_state.release (), &dummy_id, call_thread.get ());
1514   if (dummy_dtor != NULL)
1515     register_dummy_frame_dtor (dummy_id, call_thread.get (),
1516                                      dummy_dtor, dummy_dtor_data);
1517 
1518   /* Register a clean-up for unwind_on_terminating_exception_breakpoint.  */
1519   SCOPE_EXIT { delete_std_terminate_breakpoint (); };
1520 
1521   /* The stopped_by_random_signal variable is global.  If we are here
1522      as part of a breakpoint condition check then the global will have
1523      already been setup as part of the original breakpoint stop.  By
1524      making the inferior call the global will be changed when GDB
1525      handles the stop after the inferior call.  Avoid confusion by
1526      restoring the current value after the inferior call.  */
1527   scoped_restore restore_stopped_by_random_signal
1528     = make_scoped_restore (&stopped_by_random_signal, 0);
1529 
1530   /* Set to true by the call to run_inferior_call below if the inferior
1531      call is artificially interrupted by GDB due to taking too long.  */
1532   bool timed_out_p = false;
1533 
1534   /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP -
1535      If you're looking to implement asynchronous dummy-frames, then
1536      just below is the place to chop this function in two..  */
1537 
1538   {
1539     /* Save the current FSM.  We'll override it.  */
1540     std::unique_ptr<thread_fsm> saved_sm = call_thread->release_thread_fsm ();
1541     struct call_thread_fsm *sm;
1542 
1543     /* Save this thread's ptid, we need it later but the thread
1544        may have exited.  */
1545     call_thread_ptid = call_thread->ptid;
1546 
1547     /* Run the inferior until it stops.  */
1548 
1549     /* Create the FSM used to manage the infcall.  It tells infrun to
1550        not report the stop to the user, and captures the return value
1551        before the dummy frame is popped.  run_inferior_call registers
1552        it with the thread ASAP.  */
1553     sm = new call_thread_fsm (current_ui, command_interp (),
1554                                     gdbarch, function,
1555                                     values_type,
1556                                     return_method != return_method_normal,
1557                                     struct_addr);
1558     {
1559       std::unique_ptr<call_thread_fsm> sm_up (sm);
1560       e = run_inferior_call (std::move (sm_up), call_thread.get (), real_pc,
1561                                    &timed_out_p);
1562     }
1563 
1564     if (e.reason < 0)
1565       infcall_debug_printf ("after inferior call, exception (%d): %s",
1566                                   e.reason, e.what ());
1567     infcall_debug_printf ("after inferior call, thread state is: %s",
1568                                 thread_state_string (call_thread->state));
1569 
1570     gdb::observers::inferior_call_post.notify (call_thread_ptid, funaddr);
1571 
1572 
1573     /* As the inferior call failed, we are about to throw an error, which
1574        will be caught and printed somewhere else in GDB.  We want new threads
1575        to be printed before the error message, otherwise it looks odd; the
1576        threads appear after GDB has reported a stop.  */
1577     update_thread_list ();
1578 
1579     if (call_thread->state != THREAD_EXITED)
1580       {
1581           /* The FSM should still be the same.  */
1582           gdb_assert (call_thread->thread_fsm () == sm);
1583 
1584           if (call_thread->thread_fsm ()->finished_p ())
1585             {
1586               struct value *retval;
1587 
1588               infcall_debug_printf ("call completed");
1589 
1590               /* The inferior call is successful.  Pop the dummy frame,
1591                  which runs its destructors and restores the inferior's
1592                  suspend state, and restore the inferior control
1593                  state.  */
1594               dummy_frame_pop (dummy_id, call_thread.get ());
1595               restore_infcall_control_state (inf_status.release ());
1596 
1597               /* Get the return value.  */
1598               retval = sm->return_value;
1599 
1600               /* Restore the original FSM and clean up / destroy the call FSM.
1601                  Doing it in this order ensures that if the call to clean_up
1602                  throws, the original FSM is properly restored.  */
1603               {
1604                 std::unique_ptr<thread_fsm> finalizing
1605                     = call_thread->release_thread_fsm ();
1606                 call_thread->set_thread_fsm (std::move (saved_sm));
1607 
1608                 finalizing->clean_up (call_thread.get ());
1609               }
1610 
1611               maybe_remove_breakpoints ();
1612 
1613               gdb_assert (retval != NULL);
1614 
1615               /* Destruct the pass-by-ref argument clones.  */
1616               call_destructors (dtors_to_invoke, default_return_type);
1617 
1618               return retval;
1619             }
1620           else
1621             infcall_debug_printf ("call did not complete");
1622 
1623           /* Didn't complete.  Clean up / destroy the call FSM, and restore the
1624              previous state machine, and handle the error.  */
1625           {
1626             std::unique_ptr<thread_fsm> finalizing
1627               = call_thread->release_thread_fsm ();
1628             call_thread->set_thread_fsm (std::move (saved_sm));
1629 
1630             finalizing->clean_up (call_thread.get ());
1631           }
1632       }
1633   }
1634 
1635   /* Rethrow an error if we got one trying to run the inferior.  */
1636 
1637   if (e.reason < 0)
1638     {
1639       const char *name = get_function_name (funaddr,
1640                                                       name_buf, sizeof (name_buf));
1641 
1642       discard_infcall_control_state (inf_status.release ());
1643 
1644       /* We could discard the dummy frame here if the program exited,
1645            but it will get garbage collected the next time the program is
1646            run anyway.  */
1647 
1648       switch (e.reason)
1649           {
1650           case RETURN_ERROR:
1651             throw_error (e.error, _("%s\n\
1652 An error occurred while in a function called from GDB.\n\
1653 Evaluation of the expression containing the function\n\
1654 (%s) will be abandoned.\n\
1655 When the function is done executing, GDB will silently stop."),
1656                            e.what (), name);
1657           case RETURN_QUIT:
1658           default:
1659             throw_exception (std::move (e));
1660           }
1661     }
1662 
1663   /* If the program has exited, or we stopped at a different thread,
1664      exit and inform the user.  */
1665 
1666   if (! target_has_execution ())
1667     {
1668       const char *name = get_function_name (funaddr,
1669                                                       name_buf, sizeof (name_buf));
1670 
1671       /* If we try to restore the inferior status,
1672            we'll crash as the inferior is no longer running.  */
1673       discard_infcall_control_state (inf_status.release ());
1674 
1675       /* We could discard the dummy frame here given that the program exited,
1676            but it will get garbage collected the next time the program is
1677            run anyway.  */
1678 
1679       error (_("The program being debugged exited while in a function "
1680                  "called from GDB.\n"
1681                  "Evaluation of the expression containing the function\n"
1682                  "(%s) will be abandoned."),
1683                name);
1684     }
1685 
1686   if (call_thread_ptid != inferior_ptid)
1687     {
1688       const char *name = get_function_name (funaddr,
1689                                                       name_buf, sizeof (name_buf));
1690 
1691       /* We've switched threads.  This can happen if another thread gets a
1692            signal or breakpoint while our thread was running.
1693            There's no point in restoring the inferior status,
1694            we're in a different thread.  */
1695       discard_infcall_control_state (inf_status.release ());
1696       /* Keep the dummy frame record, if the user switches back to the
1697            thread with the hand-call, we'll need it.  */
1698       if (stopped_by_random_signal)
1699           error (_("\
1700 The program received a signal in another thread while\n\
1701 making a function call from GDB.\n\
1702 Evaluation of the expression containing the function\n\
1703 (%s) will be abandoned.\n\
1704 When the function is done executing, GDB will silently stop."),
1705                  name);
1706       else
1707           error (_("\
1708 The program stopped in another thread while making a function call from GDB.\n\
1709 Evaluation of the expression containing the function\n\
1710 (%s) will be abandoned.\n\
1711 When the function is done executing, GDB will silently stop."),
1712                  name);
1713     }
1714 
1715     {
1716       /* Make a copy as NAME may be in an objfile freed by dummy_frame_pop.  */
1717       std::string name = get_function_name (funaddr, name_buf,
1718                                                       sizeof (name_buf));
1719 
1720       /* If the inferior call timed out then it will have been interrupted
1721            by a signal, but we want to report this differently to the user,
1722            which is done later in this function.  */
1723       if (stopped_by_random_signal && !timed_out_p)
1724           {
1725             /* We stopped inside the FUNCTION because of a random
1726                signal.  Further execution of the FUNCTION is not
1727                allowed.  */
1728 
1729             if (unwind_on_signal_p)
1730               {
1731                 /* The user wants the context restored.  */
1732 
1733                 /* Capture details of the signal so we can include them in
1734                      the error message.  Calling dummy_frame_pop will restore
1735                      the previous stop signal details.  */
1736                 gdb_signal stop_signal = call_thread->stop_signal ();
1737 
1738                 /* We must get back to the frame we were before the
1739                      dummy call.  */
1740                 dummy_frame_pop (dummy_id, call_thread.get ());
1741 
1742                 /* We also need to restore inferior status to that before the
1743                      dummy call.  */
1744                 restore_infcall_control_state (inf_status.release ());
1745 
1746                 /* FIXME: Insert a bunch of wrap_here; name can be very
1747                      long if it's a C++ name with arguments and stuff.  */
1748                 error (_("\
1749 The program being debugged received signal %s, %s\n\
1750 while in a function called from GDB.  GDB has restored the context\n\
1751 to what it was before the call.  To change this behavior use\n\
1752 \"set unwind-on-signal off\".  Evaluation of the expression containing\n\
1753 the function (%s) will be abandoned."),
1754                          gdb_signal_to_name (stop_signal),
1755                          gdb_signal_to_string (stop_signal),
1756                          name.c_str ());
1757               }
1758             else
1759               {
1760                 /* The user wants to stay in the frame where we stopped
1761                      (default).
1762                      Discard inferior status, we're not at the same point
1763                      we started at.  */
1764                 discard_infcall_control_state (inf_status.release ());
1765 
1766                 /* FIXME: Insert a bunch of wrap_here; name can be very
1767                      long if it's a C++ name with arguments and stuff.  */
1768                 error (_("\
1769 The program being debugged was signaled while in a function called from GDB.\n\
1770 GDB remains in the frame where the signal was received.\n\
1771 To change this behavior use \"set unwind-on-signal on\".\n\
1772 Evaluation of the expression containing the function\n\
1773 (%s) will be abandoned.\n\
1774 When the function is done executing, GDB will silently stop."),
1775                          name.c_str ());
1776               }
1777           }
1778 
1779       if (timed_out_p)
1780           {
1781             /* A timeout results in a signal being sent to the inferior.  */
1782             gdb_assert (stopped_by_random_signal);
1783 
1784             if (unwind_on_timeout_p)
1785               {
1786                 /* The user wants the context restored.  */
1787 
1788                 /* We must get back to the frame we were before the
1789                      dummy call.  */
1790                 dummy_frame_pop (dummy_id, call_thread.get ());
1791 
1792                 /* We also need to restore inferior status to that before the
1793                      dummy call.  */
1794                 restore_infcall_control_state (inf_status.release ());
1795 
1796                 error (_("\
1797 The program being debugged timed out while in a function called from GDB.\n\
1798 GDB has restored the context to what it was before the call.\n\
1799 To change this behavior use \"set unwind-on-timeout off\".\n\
1800 Evaluation of the expression containing the function\n\
1801 (%s) will be abandoned."),
1802                          name.c_str ());
1803               }
1804             else
1805               {
1806                 /* The user wants to stay in the frame where we stopped
1807                      (default).  Discard inferior status, we're not at the same
1808                      point we started at.  */
1809                 discard_infcall_control_state (inf_status.release ());
1810 
1811                 error (_("\
1812 The program being debugged timed out while in a function called from GDB.\n\
1813 GDB remains in the frame where the timeout occurred.\n\
1814 To change this behavior use \"set unwind-on-timeout on\".\n\
1815 Evaluation of the expression containing the function\n\
1816 (%s) will be abandoned.\n\
1817 When the function is done executing, GDB will silently stop."),
1818                          name.c_str ());
1819               }
1820           }
1821 
1822       if (stop_stack_dummy == STOP_STD_TERMINATE)
1823           {
1824             /* We must get back to the frame we were before the dummy
1825                call.  */
1826             dummy_frame_pop (dummy_id, call_thread.get ());
1827 
1828             /* We also need to restore inferior status to that before
1829                the dummy call.  */
1830             restore_infcall_control_state (inf_status.release ());
1831 
1832             error (_("\
1833 The program being debugged entered a std::terminate call, most likely\n\
1834 caused by an unhandled C++ exception.  GDB blocked this call in order\n\
1835 to prevent the program from being terminated, and has restored the\n\
1836 context to its original state before the call.\n\
1837 To change this behaviour use \"set unwind-on-terminating-exception off\".\n\
1838 Evaluation of the expression containing the function (%s)\n\
1839 will be abandoned."),
1840                      name.c_str ());
1841           }
1842       else if (stop_stack_dummy == STOP_NONE)
1843           {
1844 
1845             /* We hit a breakpoint inside the FUNCTION.
1846                Keep the dummy frame, the user may want to examine its state.
1847                Discard inferior status, we're not at the same point
1848                we started at.  */
1849             discard_infcall_control_state (inf_status.release ());
1850 
1851             /* The following error message used to say "The expression
1852                which contained the function call has been discarded."
1853                It is a hard concept to explain in a few words.  Ideally,
1854                GDB would be able to resume evaluation of the expression
1855                when the function finally is done executing.  Perhaps
1856                someday this will be implemented (it would not be easy).  */
1857             /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1858                a C++ name with arguments and stuff.  */
1859             error (_("\
1860 The program being debugged stopped while in a function called from GDB.\n\
1861 Evaluation of the expression containing the function\n\
1862 (%s) will be abandoned.\n\
1863 When the function is done executing, GDB will silently stop."),
1864                      name.c_str ());
1865           }
1866 
1867     }
1868 
1869   /* The above code errors out, so ...  */
1870   gdb_assert_not_reached ("... should not be here");
1871 }
1872 
1873 void _initialize_infcall ();
1874 void
_initialize_infcall()1875 _initialize_infcall ()
1876 {
1877   add_setshow_boolean_cmd ("may-call-functions", no_class,
1878                                  &may_call_functions_p, _("\
1879 Set permission to call functions in the program."), _("\
1880 Show permission to call functions in the program."), _("\
1881 When this permission is on, GDB may call functions in the program.\n\
1882 Otherwise, any sort of attempt to call a function in the program\n\
1883 will result in an error."),
1884                                  NULL,
1885                                  show_may_call_functions_p,
1886                                  &setlist, &showlist);
1887 
1888   add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
1889                                  &coerce_float_to_double_p, _("\
1890 Set coercion of floats to doubles when calling functions."), _("\
1891 Show coercion of floats to doubles when calling functions."), _("\
1892 Variables of type float should generally be converted to doubles before\n\
1893 calling an unprototyped function, and left alone when calling a prototyped\n\
1894 function.  However, some older debug info formats do not provide enough\n\
1895 information to determine that a function is prototyped.  If this flag is\n\
1896 set, GDB will perform the conversion for a function it considers\n\
1897 unprototyped.\n\
1898 The default is to perform the conversion."),
1899                                  NULL,
1900                                  show_coerce_float_to_double_p,
1901                                  &setlist, &showlist);
1902 
1903   set_show_commands setshow_unwind_on_signal_cmds
1904     = add_setshow_boolean_cmd ("unwind-on-signal", no_class,
1905                                      &unwind_on_signal_p, _("\
1906 Set unwinding of stack if a signal is received while in a call dummy."), _("\
1907 Show unwinding of stack if a signal is received while in a call dummy."), _("\
1908 The unwind-on-signal lets the user determine what gdb should do if a signal\n\
1909 is received while in a function called from gdb (call dummy).  If set, gdb\n\
1910 unwinds the stack and restore the context to what as it was before the call.\n\
1911 The default is to stop in the frame where the signal was received."),
1912                                      NULL,
1913                                      show_unwind_on_signal_p,
1914                                      &setlist, &showlist);
1915   add_alias_cmd ("unwindonsignal", setshow_unwind_on_signal_cmds.set,
1916                      no_class, 1, &setlist);
1917   add_alias_cmd ("unwindonsignal", setshow_unwind_on_signal_cmds.show,
1918                      no_class, 1, &showlist);
1919 
1920   add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
1921                                  &unwind_on_terminating_exception_p, _("\
1922 Set unwinding of stack if std::terminate is called while in call dummy."), _("\
1923 Show unwinding of stack if std::terminate() is called while in a call dummy."),
1924                                  _("\
1925 The unwind on terminating exception flag lets the user determine\n\
1926 what gdb should do if a std::terminate() call is made from the\n\
1927 default exception handler.  If set, gdb unwinds the stack and restores\n\
1928 the context to what it was before the call.  If unset, gdb allows the\n\
1929 std::terminate call to proceed.\n\
1930 The default is to unwind the frame."),
1931                                  NULL,
1932                                  show_unwind_on_terminating_exception_p,
1933                                  &setlist, &showlist);
1934 
1935   add_setshow_boolean_cmd ("unwind-on-timeout", no_class,
1936                                  &unwind_on_timeout_p, _("\
1937 Set unwinding of stack if a timeout occurs while in a call dummy."), _("\
1938 Show unwinding of stack if a timeout occurs while in a call dummy."),
1939                                  _("\
1940 The unwind on timeout flag lets the user determine what gdb should do if\n\
1941 gdb times out while in a function called from gdb.  If set, gdb unwinds\n\
1942 the stack and restores the context to what it was before the call.  If\n\
1943 unset, gdb leaves the inferior in the frame where the timeout occurred.\n\
1944 The default is to stop in the frame where the timeout occurred."),
1945                                  NULL,
1946                                  show_unwind_on_timeout_p,
1947                                  &setlist, &showlist);
1948 
1949   add_setshow_uinteger_cmd ("direct-call-timeout", no_class,
1950                                   &direct_call_timeout, _("\
1951 Set the timeout, for direct calls to inferior function calls."), _("\
1952 Show the timeout, for direct calls to inferior function calls."), _("\
1953 If running on a target that supports, and is running in, async mode\n\
1954 then this timeout is used for any inferior function calls triggered\n\
1955 directly from the prompt, i.e. from a 'call' or 'print' command.  The\n\
1956 timeout is specified in seconds."),
1957                                   nullptr,
1958                                   show_direct_call_timeout,
1959                                   &setlist, &showlist);
1960 
1961   add_setshow_uinteger_cmd ("indirect-call-timeout", no_class,
1962                                   &indirect_call_timeout, _("\
1963 Set the timeout, for indirect calls to inferior function calls."), _("\
1964 Show the timeout, for indirect calls to inferior function calls."), _("\
1965 If running on a target that supports, and is running in, async mode\n\
1966 then this timeout is used for any inferior function calls triggered\n\
1967 indirectly, i.e. being made as part of a breakpoint, or watchpoint,\n\
1968 condition expression.  The timeout is specified in seconds."),
1969                                   nullptr,
1970                                   show_indirect_call_timeout,
1971                                   &setlist, &showlist);
1972 
1973   add_setshow_boolean_cmd
1974     ("infcall", class_maintenance, &debug_infcall,
1975      _("Set inferior call debugging."),
1976      _("Show inferior call debugging."),
1977      _("When on, inferior function call specific debugging is enabled."),
1978      NULL, show_debug_infcall, &setdebuglist, &showdebuglist);
1979 }
1980