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