* gdbtypes.c (check_typedef): Document that this function can
[platform/upstream/binutils.git] / gdb / infcall.c
1 /* Perform an inferior function call, for GDB, the GNU debugger.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5    2008, 2009, 2010, 2011 Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "breakpoint.h"
24 #include "tracepoint.h"
25 #include "target.h"
26 #include "regcache.h"
27 #include "inferior.h"
28 #include "gdb_assert.h"
29 #include "block.h"
30 #include "gdbcore.h"
31 #include "language.h"
32 #include "objfiles.h"
33 #include "gdbcmd.h"
34 #include "command.h"
35 #include "gdb_string.h"
36 #include "infcall.h"
37 #include "dummy-frame.h"
38 #include "ada-lang.h"
39 #include "gdbthread.h"
40 #include "exceptions.h"
41
42 /* If we can't find a function's name from its address,
43    we print this instead.  */
44 #define RAW_FUNCTION_ADDRESS_FORMAT "at 0x%s"
45 #define RAW_FUNCTION_ADDRESS_SIZE (sizeof (RAW_FUNCTION_ADDRESS_FORMAT) \
46                                    + 2 * sizeof (CORE_ADDR))
47
48 /* NOTE: cagney/2003-04-16: What's the future of this code?
49
50    GDB needs an asynchronous expression evaluator, that means an
51    asynchronous inferior function call implementation, and that in
52    turn means restructuring the code so that it is event driven.  */
53
54 /* How you should pass arguments to a function depends on whether it
55    was defined in K&R style or prototype style.  If you define a
56    function using the K&R syntax that takes a `float' argument, then
57    callers must pass that argument as a `double'.  If you define the
58    function using the prototype syntax, then you must pass the
59    argument as a `float', with no promotion.
60
61    Unfortunately, on certain older platforms, the debug info doesn't
62    indicate reliably how each function was defined.  A function type's
63    TYPE_FLAG_PROTOTYPED flag may be clear, even if the function was
64    defined in prototype style.  When calling a function whose
65    TYPE_FLAG_PROTOTYPED flag is clear, GDB consults this flag to
66    decide what to do.
67
68    For modern targets, it is proper to assume that, if the prototype
69    flag is clear, that can be trusted: `float' arguments should be
70    promoted to `double'.  For some older targets, if the prototype
71    flag is clear, that doesn't tell us anything.  The default is to
72    trust the debug information; the user can override this behavior
73    with "set coerce-float-to-double 0".  */
74
75 static int coerce_float_to_double_p = 1;
76 static void
77 show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
78                                struct cmd_list_element *c, const char *value)
79 {
80   fprintf_filtered (file,
81                     _("Coercion of floats to doubles "
82                       "when calling functions is %s.\n"),
83                     value);
84 }
85
86 /* This boolean tells what gdb should do if a signal is received while
87    in a function called from gdb (call dummy).  If set, gdb unwinds
88    the stack and restore the context to what as it was before the
89    call.
90
91    The default is to stop in the frame where the signal was received.  */
92
93 int unwind_on_signal_p = 0;
94 static void
95 show_unwind_on_signal_p (struct ui_file *file, int from_tty,
96                          struct cmd_list_element *c, const char *value)
97 {
98   fprintf_filtered (file,
99                     _("Unwinding of stack if a signal is "
100                       "received while in a call dummy is %s.\n"),
101                     value);
102 }
103
104 /* This boolean tells what gdb should do if a std::terminate call is
105    made while in a function called from gdb (call dummy).
106    As the confines of a single dummy stack prohibit out-of-frame
107    handlers from handling a raised exception, and as out-of-frame
108    handlers are common in C++, this can lead to no handler being found
109    by the unwinder, and a std::terminate call.  This is a false positive.
110    If set, gdb unwinds the stack and restores the context to what it
111    was before the call.
112
113    The default is to unwind the frame if a std::terminate call is
114    made.  */
115
116 static int unwind_on_terminating_exception_p = 1;
117
118 static void
119 show_unwind_on_terminating_exception_p (struct ui_file *file, int from_tty,
120                                         struct cmd_list_element *c,
121                                         const char *value)
122
123 {
124   fprintf_filtered (file,
125                     _("Unwind stack if a C++ exception is "
126                       "unhandled while in a call dummy is %s.\n"),
127                     value);
128 }
129
130 /* Perform the standard coercions that are specified
131    for arguments to be passed to C or Ada functions.
132
133    If PARAM_TYPE is non-NULL, it is the expected parameter type.
134    IS_PROTOTYPED is non-zero if the function declaration is prototyped.
135    SP is the stack pointer were additional data can be pushed (updating
136    its value as needed).  */
137
138 static struct value *
139 value_arg_coerce (struct gdbarch *gdbarch, struct value *arg,
140                   struct type *param_type, int is_prototyped, CORE_ADDR *sp)
141 {
142   const struct builtin_type *builtin = builtin_type (gdbarch);
143   struct type *arg_type = check_typedef (value_type (arg));
144   struct type *type
145     = param_type ? check_typedef (param_type) : arg_type;
146
147   /* Perform any Ada-specific coercion first.  */
148   if (current_language->la_language == language_ada)
149     arg = ada_convert_actual (arg, type);
150
151   /* Force the value to the target if we will need its address.  At
152      this point, we could allocate arguments on the stack instead of
153      calling malloc if we knew that their addresses would not be
154      saved by the called function.  */
155   arg = value_coerce_to_target (arg);
156
157   switch (TYPE_CODE (type))
158     {
159     case TYPE_CODE_REF:
160       {
161         struct value *new_value;
162
163         if (TYPE_CODE (arg_type) == TYPE_CODE_REF)
164           return value_cast_pointers (type, arg);
165
166         /* Cast the value to the reference's target type, and then
167            convert it back to a reference.  This will issue an error
168            if the value was not previously in memory - in some cases
169            we should clearly be allowing this, but how?  */
170         new_value = value_cast (TYPE_TARGET_TYPE (type), arg);
171         new_value = value_ref (new_value);
172         return new_value;
173       }
174     case TYPE_CODE_INT:
175     case TYPE_CODE_CHAR:
176     case TYPE_CODE_BOOL:
177     case TYPE_CODE_ENUM:
178       /* If we don't have a prototype, coerce to integer type if necessary.  */
179       if (!is_prototyped)
180         {
181           if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin->builtin_int))
182             type = builtin->builtin_int;
183         }
184       /* Currently all target ABIs require at least the width of an integer
185          type for an argument.  We may have to conditionalize the following
186          type coercion for future targets.  */
187       if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin->builtin_int))
188         type = builtin->builtin_int;
189       break;
190     case TYPE_CODE_FLT:
191       if (!is_prototyped && coerce_float_to_double_p)
192         {
193           if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin->builtin_double))
194             type = builtin->builtin_double;
195           else if (TYPE_LENGTH (type) > TYPE_LENGTH (builtin->builtin_double))
196             type = builtin->builtin_long_double;
197         }
198       break;
199     case TYPE_CODE_FUNC:
200       type = lookup_pointer_type (type);
201       break;
202     case TYPE_CODE_ARRAY:
203       /* Arrays are coerced to pointers to their first element, unless
204          they are vectors, in which case we want to leave them alone,
205          because they are passed by value.  */
206       if (current_language->c_style_arrays)
207         if (!TYPE_VECTOR (type))
208           type = lookup_pointer_type (TYPE_TARGET_TYPE (type));
209       break;
210     case TYPE_CODE_UNDEF:
211     case TYPE_CODE_PTR:
212     case TYPE_CODE_STRUCT:
213     case TYPE_CODE_UNION:
214     case TYPE_CODE_VOID:
215     case TYPE_CODE_SET:
216     case TYPE_CODE_RANGE:
217     case TYPE_CODE_STRING:
218     case TYPE_CODE_BITSTRING:
219     case TYPE_CODE_ERROR:
220     case TYPE_CODE_MEMBERPTR:
221     case TYPE_CODE_METHODPTR:
222     case TYPE_CODE_METHOD:
223     case TYPE_CODE_COMPLEX:
224     default:
225       break;
226     }
227
228   return value_cast (type, arg);
229 }
230
231 /* Return the return type of a function with its first instruction exactly at
232    the PC address.  Return NULL otherwise.  */
233
234 static struct type *
235 find_function_return_type (CORE_ADDR pc)
236 {
237   struct symbol *sym = find_pc_function (pc);
238
239   if (sym != NULL && BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) == pc
240       && SYMBOL_TYPE (sym) != NULL)
241     return TYPE_TARGET_TYPE (SYMBOL_TYPE (sym));
242
243   return NULL;
244 }
245
246 /* Determine a function's address and its return type from its value.
247    Calls error() if the function is not valid for calling.  */
248
249 CORE_ADDR
250 find_function_addr (struct value *function, struct type **retval_type)
251 {
252   struct type *ftype = check_typedef (value_type (function));
253   struct gdbarch *gdbarch = get_type_arch (ftype);
254   struct type *value_type = NULL;
255   /* Initialize it just to avoid a GCC false warning.  */
256   CORE_ADDR funaddr = 0;
257
258   /* If it's a member function, just look at the function
259      part of it.  */
260
261   /* Determine address to call.  */
262   if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
263       || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
264     funaddr = value_address (function);
265   else if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
266     {
267       funaddr = value_as_address (function);
268       ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
269       if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
270           || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
271         funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr,
272                                                       &current_target);
273     }
274   if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
275       || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
276     {
277       value_type = TYPE_TARGET_TYPE (ftype);
278
279       if (TYPE_GNU_IFUNC (ftype))
280         {
281           funaddr = gnu_ifunc_resolve_addr (gdbarch, funaddr);
282
283           /* Skip querying the function symbol if no RETVAL_TYPE has been
284              asked for.  */
285           if (retval_type)
286             value_type = find_function_return_type (funaddr);
287         }
288     }
289   else if (TYPE_CODE (ftype) == TYPE_CODE_INT)
290     {
291       /* Handle the case of functions lacking debugging info.
292          Their values are characters since their addresses are char.  */
293       if (TYPE_LENGTH (ftype) == 1)
294         funaddr = value_as_address (value_addr (function));
295       else
296         {
297           /* Handle function descriptors lacking debug info.  */
298           int found_descriptor = 0;
299
300           funaddr = 0;  /* pacify "gcc -Werror" */
301           if (VALUE_LVAL (function) == lval_memory)
302             {
303               CORE_ADDR nfunaddr;
304
305               funaddr = value_as_address (value_addr (function));
306               nfunaddr = funaddr;
307               funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr,
308                                                             &current_target);
309               if (funaddr != nfunaddr)
310                 found_descriptor = 1;
311             }
312           if (!found_descriptor)
313             /* Handle integer used as address of a function.  */
314             funaddr = (CORE_ADDR) value_as_long (function);
315         }
316     }
317   else
318     error (_("Invalid data type for function to be called."));
319
320   if (retval_type != NULL)
321     *retval_type = value_type;
322   return funaddr + gdbarch_deprecated_function_start_offset (gdbarch);
323 }
324
325 /* For CALL_DUMMY_ON_STACK, push a breakpoint sequence that the called
326    function returns to.  */
327
328 static CORE_ADDR
329 push_dummy_code (struct gdbarch *gdbarch,
330                  CORE_ADDR sp, CORE_ADDR funaddr,
331                  struct value **args, int nargs,
332                  struct type *value_type,
333                  CORE_ADDR *real_pc, CORE_ADDR *bp_addr,
334                  struct regcache *regcache)
335 {
336   gdb_assert (gdbarch_push_dummy_code_p (gdbarch));
337
338   return gdbarch_push_dummy_code (gdbarch, sp, funaddr,
339                                   args, nargs, value_type, real_pc, bp_addr,
340                                   regcache);
341 }
342
343 /* Fetch the name of the function at FUNADDR.
344    This is used in printing an error message for call_function_by_hand.
345    BUF is used to print FUNADDR in hex if the function name cannot be
346    determined.  It must be large enough to hold formatted result of
347    RAW_FUNCTION_ADDRESS_FORMAT.  */
348
349 static const char *
350 get_function_name (CORE_ADDR funaddr, char *buf, int buf_size)
351 {
352   {
353     struct symbol *symbol = find_pc_function (funaddr);
354
355     if (symbol)
356       return SYMBOL_PRINT_NAME (symbol);
357   }
358
359   {
360     /* Try the minimal symbols.  */
361     struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
362
363     if (msymbol)
364       return SYMBOL_PRINT_NAME (msymbol);
365   }
366
367   {
368     char *tmp = xstrprintf (_(RAW_FUNCTION_ADDRESS_FORMAT),
369                             hex_string (funaddr));
370
371     gdb_assert (strlen (tmp) + 1 <= buf_size);
372     strcpy (buf, tmp);
373     xfree (tmp);
374     return buf;
375   }
376 }
377
378 /* Subroutine of call_function_by_hand to simplify it.
379    Start up the inferior and wait for it to stop.
380    Return the exception if there's an error, or an exception with
381    reason >= 0 if there's no error.
382
383    This is done inside a TRY_CATCH so the caller needn't worry about
384    thrown errors.  The caller should rethrow if there's an error.  */
385
386 static struct gdb_exception
387 run_inferior_call (struct thread_info *call_thread, CORE_ADDR real_pc)
388 {
389   volatile struct gdb_exception e;
390   int saved_in_infcall = call_thread->control.in_infcall;
391   ptid_t call_thread_ptid = call_thread->ptid;
392
393   call_thread->control.in_infcall = 1;
394
395   clear_proceed_status ();
396
397   disable_watchpoints_before_interactive_call_start ();
398
399   /* We want stop_registers, please...  */
400   call_thread->control.proceed_to_finish = 1;
401
402   TRY_CATCH (e, RETURN_MASK_ALL)
403     {
404       proceed (real_pc, TARGET_SIGNAL_0, 0);
405
406       /* Inferior function calls are always synchronous, even if the
407          target supports asynchronous execution.  Do here what
408          `proceed' itself does in sync mode.  */
409       if (target_can_async_p () && is_running (inferior_ptid))
410         {
411           wait_for_inferior ();
412           normal_stop ();
413         }
414     }
415
416   /* At this point the current thread may have changed.  Refresh
417      CALL_THREAD as it could be invalid if its thread has exited.  */
418   call_thread = find_thread_ptid (call_thread_ptid);
419
420   enable_watchpoints_after_interactive_call_stop ();
421
422   /* Call breakpoint_auto_delete on the current contents of the bpstat
423      of inferior call thread.
424      If all error()s out of proceed ended up calling normal_stop
425      (and perhaps they should; it already does in the special case
426      of error out of resume()), then we wouldn't need this.  */
427   if (e.reason < 0)
428     {
429       if (call_thread != NULL)
430         breakpoint_auto_delete (call_thread->control.stop_bpstat);
431     }
432
433   if (call_thread != NULL)
434     call_thread->control.in_infcall = saved_in_infcall;
435
436   return e;
437 }
438
439 /* A cleanup function that calls delete_std_terminate_breakpoint.  */
440 static void
441 cleanup_delete_std_terminate_breakpoint (void *ignore)
442 {
443   delete_std_terminate_breakpoint ();
444 }
445
446 /* All this stuff with a dummy frame may seem unnecessarily complicated
447    (why not just save registers in GDB?).  The purpose of pushing a dummy
448    frame which looks just like a real frame is so that if you call a
449    function and then hit a breakpoint (get a signal, etc), "backtrace"
450    will look right.  Whether the backtrace needs to actually show the
451    stack at the time the inferior function was called is debatable, but
452    it certainly needs to not display garbage.  So if you are contemplating
453    making dummy frames be different from normal frames, consider that.  */
454
455 /* Perform a function call in the inferior.
456    ARGS is a vector of values of arguments (NARGS of them).
457    FUNCTION is a value, the function to be called.
458    Returns a value representing what the function returned.
459    May fail to return, if a breakpoint or signal is hit
460    during the execution of the function.
461
462    ARGS is modified to contain coerced values.  */
463
464 struct value *
465 call_function_by_hand (struct value *function, int nargs, struct value **args)
466 {
467   CORE_ADDR sp;
468   struct type *values_type, *target_values_type;
469   unsigned char struct_return = 0, lang_struct_return = 0;
470   CORE_ADDR struct_addr = 0;
471   struct infcall_control_state *inf_status;
472   struct cleanup *inf_status_cleanup;
473   struct infcall_suspend_state *caller_state;
474   CORE_ADDR funaddr;
475   CORE_ADDR real_pc;
476   struct type *ftype = check_typedef (value_type (function));
477   CORE_ADDR bp_addr;
478   struct frame_id dummy_id;
479   struct cleanup *args_cleanup;
480   struct frame_info *frame;
481   struct gdbarch *gdbarch;
482   struct cleanup *terminate_bp_cleanup;
483   ptid_t call_thread_ptid;
484   struct gdb_exception e;
485   char name_buf[RAW_FUNCTION_ADDRESS_SIZE];
486
487   if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
488     ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
489
490   if (!target_has_execution)
491     noprocess ();
492
493   if (get_traceframe_number () >= 0)
494     error (_("May not call functions while looking at trace frames."));
495
496   if (execution_direction == EXEC_REVERSE)
497     error (_("Cannot call functions in reverse mode."));
498
499   frame = get_current_frame ();
500   gdbarch = get_frame_arch (frame);
501
502   if (!gdbarch_push_dummy_call_p (gdbarch))
503     error (_("This target does not support function calls."));
504
505   /* A cleanup for the inferior status.
506      This is only needed while we're preparing the inferior function call.  */
507   inf_status = save_infcall_control_state ();
508   inf_status_cleanup
509     = make_cleanup_restore_infcall_control_state (inf_status);
510
511   /* Save the caller's registers and other state associated with the
512      inferior itself so that they can be restored once the
513      callee returns.  To allow nested calls the registers are (further
514      down) pushed onto a dummy frame stack.  Include a cleanup (which
515      is tossed once the regcache has been pushed).  */
516   caller_state = save_infcall_suspend_state ();
517   make_cleanup_restore_infcall_suspend_state (caller_state);
518
519   /* Ensure that the initial SP is correctly aligned.  */
520   {
521     CORE_ADDR old_sp = get_frame_sp (frame);
522
523     if (gdbarch_frame_align_p (gdbarch))
524       {
525         sp = gdbarch_frame_align (gdbarch, old_sp);
526         /* NOTE: cagney/2003-08-13: Skip the "red zone".  For some
527            ABIs, a function can use memory beyond the inner most stack
528            address.  AMD64 called that region the "red zone".  Skip at
529            least the "red zone" size before allocating any space on
530            the stack.  */
531         if (gdbarch_inner_than (gdbarch, 1, 2))
532           sp -= gdbarch_frame_red_zone_size (gdbarch);
533         else
534           sp += gdbarch_frame_red_zone_size (gdbarch);
535         /* Still aligned?  */
536         gdb_assert (sp == gdbarch_frame_align (gdbarch, sp));
537         /* NOTE: cagney/2002-09-18:
538            
539            On a RISC architecture, a void parameterless generic dummy
540            frame (i.e., no parameters, no result) typically does not
541            need to push anything the stack and hence can leave SP and
542            FP.  Similarly, a frameless (possibly leaf) function does
543            not push anything on the stack and, hence, that too can
544            leave FP and SP unchanged.  As a consequence, a sequence of
545            void parameterless generic dummy frame calls to frameless
546            functions will create a sequence of effectively identical
547            frames (SP, FP and TOS and PC the same).  This, not
548            suprisingly, results in what appears to be a stack in an
549            infinite loop --- when GDB tries to find a generic dummy
550            frame on the internal dummy frame stack, it will always
551            find the first one.
552
553            To avoid this problem, the code below always grows the
554            stack.  That way, two dummy frames can never be identical.
555            It does burn a few bytes of stack but that is a small price
556            to pay :-).  */
557         if (sp == old_sp)
558           {
559             if (gdbarch_inner_than (gdbarch, 1, 2))
560               /* Stack grows down.  */
561               sp = gdbarch_frame_align (gdbarch, old_sp - 1);
562             else
563               /* Stack grows up.  */
564               sp = gdbarch_frame_align (gdbarch, old_sp + 1);
565           }
566         /* SP may have underflown address zero here from OLD_SP.  Memory access
567            functions will probably fail in such case but that is a target's
568            problem.  */
569       }
570     else
571       /* FIXME: cagney/2002-09-18: Hey, you loose!
572
573          Who knows how badly aligned the SP is!
574
575          If the generic dummy frame ends up empty (because nothing is
576          pushed) GDB won't be able to correctly perform back traces.
577          If a target is having trouble with backtraces, first thing to
578          do is add FRAME_ALIGN() to the architecture vector.  If that
579          fails, try dummy_id().
580
581          If the ABI specifies a "Red Zone" (see the doco) the code
582          below will quietly trash it.  */
583       sp = old_sp;
584   }
585
586   funaddr = find_function_addr (function, &values_type);
587   if (!values_type)
588     values_type = builtin_type (gdbarch)->builtin_int;
589
590   CHECK_TYPEDEF (values_type);
591
592   /* Are we returning a value using a structure return (passing a
593      hidden argument pointing to storage) or a normal value return?
594      There are two cases: language-mandated structure return and
595      target ABI structure return.  The variable STRUCT_RETURN only
596      describes the latter.  The language version is handled by passing
597      the return location as the first parameter to the function,
598      even preceding "this".  This is different from the target
599      ABI version, which is target-specific; for instance, on ia64
600      the first argument is passed in out0 but the hidden structure
601      return pointer would normally be passed in r8.  */
602
603   if (language_pass_by_reference (values_type))
604     {
605       lang_struct_return = 1;
606
607       /* Tell the target specific argument pushing routine not to
608          expect a value.  */
609       target_values_type = builtin_type (gdbarch)->builtin_void;
610     }
611   else
612     {
613       struct_return = using_struct_return (gdbarch,
614                                            value_type (function), values_type);
615       target_values_type = values_type;
616     }
617
618   /* Determine the location of the breakpoint (and possibly other
619      stuff) that the called function will return to.  The SPARC, for a
620      function returning a structure or union, needs to make space for
621      not just the breakpoint but also an extra word containing the
622      size (?) of the structure being passed.  */
623
624   /* The actual breakpoint (at BP_ADDR) is inserted separatly so there
625      is no need to write that out.  */
626
627   switch (gdbarch_call_dummy_location (gdbarch))
628     {
629     case ON_STACK:
630       sp = push_dummy_code (gdbarch, sp, funaddr,
631                                 args, nargs, target_values_type,
632                                 &real_pc, &bp_addr, get_current_regcache ());
633       break;
634     case AT_ENTRY_POINT:
635       {
636         CORE_ADDR dummy_addr;
637
638         real_pc = funaddr;
639         dummy_addr = entry_point_address ();
640         /* A call dummy always consists of just a single breakpoint, so
641            its address is the same as the address of the dummy.  */
642         bp_addr = dummy_addr;
643         break;
644       }
645     case AT_SYMBOL:
646       /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose
647          address is the location where the breakpoint should be
648          placed.  Once all targets are using the overhauled frame code
649          this can be deleted - ON_STACK is a better option.  */
650       {
651         struct minimal_symbol *sym;
652         CORE_ADDR dummy_addr;
653
654         sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
655         real_pc = funaddr;
656         if (sym)
657           {
658             dummy_addr = SYMBOL_VALUE_ADDRESS (sym);
659             /* Make certain that the address points at real code, and not
660                a function descriptor.  */
661             dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
662                                                              dummy_addr,
663                                                              &current_target);
664           }
665         else
666           dummy_addr = entry_point_address ();
667         /* A call dummy always consists of just a single breakpoint,
668            so it's address is the same as the address of the dummy.  */
669         bp_addr = dummy_addr;
670         break;
671       }
672     default:
673       internal_error (__FILE__, __LINE__, _("bad switch"));
674     }
675
676   if (nargs < TYPE_NFIELDS (ftype))
677     error (_("Too few arguments in function call."));
678
679   {
680     int i;
681
682     for (i = nargs - 1; i >= 0; i--)
683       {
684         int prototyped;
685         struct type *param_type;
686         
687         /* FIXME drow/2002-05-31: Should just always mark methods as
688            prototyped.  Can we respect TYPE_VARARGS?  Probably not.  */
689         if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
690           prototyped = 1;
691         else if (i < TYPE_NFIELDS (ftype))
692           prototyped = TYPE_PROTOTYPED (ftype);
693         else
694           prototyped = 0;
695
696         if (i < TYPE_NFIELDS (ftype))
697           param_type = TYPE_FIELD_TYPE (ftype, i);
698         else
699           param_type = NULL;
700
701         args[i] = value_arg_coerce (gdbarch, args[i],
702                                     param_type, prototyped, &sp);
703
704         if (param_type != NULL && language_pass_by_reference (param_type))
705           args[i] = value_addr (args[i]);
706       }
707   }
708
709   /* Reserve space for the return structure to be written on the
710      stack, if necessary.  Make certain that the value is correctly
711      aligned.  */
712
713   if (struct_return || lang_struct_return)
714     {
715       int len = TYPE_LENGTH (values_type);
716
717       if (gdbarch_inner_than (gdbarch, 1, 2))
718         {
719           /* Stack grows downward.  Align STRUCT_ADDR and SP after
720              making space for the return value.  */
721           sp -= len;
722           if (gdbarch_frame_align_p (gdbarch))
723             sp = gdbarch_frame_align (gdbarch, sp);
724           struct_addr = sp;
725         }
726       else
727         {
728           /* Stack grows upward.  Align the frame, allocate space, and
729              then again, re-align the frame???  */
730           if (gdbarch_frame_align_p (gdbarch))
731             sp = gdbarch_frame_align (gdbarch, sp);
732           struct_addr = sp;
733           sp += len;
734           if (gdbarch_frame_align_p (gdbarch))
735             sp = gdbarch_frame_align (gdbarch, sp);
736         }
737     }
738
739   if (lang_struct_return)
740     {
741       struct value **new_args;
742
743       /* Add the new argument to the front of the argument list.  */
744       new_args = xmalloc (sizeof (struct value *) * (nargs + 1));
745       new_args[0] = value_from_pointer (lookup_pointer_type (values_type),
746                                         struct_addr);
747       memcpy (&new_args[1], &args[0], sizeof (struct value *) * nargs);
748       args = new_args;
749       nargs++;
750       args_cleanup = make_cleanup (xfree, args);
751     }
752   else
753     args_cleanup = make_cleanup (null_cleanup, NULL);
754
755   /* Create the dummy stack frame.  Pass in the call dummy address as,
756      presumably, the ABI code knows where, in the call dummy, the
757      return address should be pointed.  */
758   sp = gdbarch_push_dummy_call (gdbarch, function, get_current_regcache (),
759                                 bp_addr, nargs, args,
760                                 sp, struct_return, struct_addr);
761
762   do_cleanups (args_cleanup);
763
764   /* Set up a frame ID for the dummy frame so we can pass it to
765      set_momentary_breakpoint.  We need to give the breakpoint a frame
766      ID so that the breakpoint code can correctly re-identify the
767      dummy breakpoint.  */
768   /* Sanity.  The exact same SP value is returned by PUSH_DUMMY_CALL,
769      saved as the dummy-frame TOS, and used by dummy_id to form
770      the frame ID's stack address.  */
771   dummy_id = frame_id_build (sp, bp_addr);
772
773   /* Create a momentary breakpoint at the return address of the
774      inferior.  That way it breaks when it returns.  */
775
776   {
777     struct breakpoint *bpt;
778     struct symtab_and_line sal;
779
780     init_sal (&sal);            /* initialize to zeroes */
781     sal.pspace = current_program_space;
782     sal.pc = bp_addr;
783     sal.section = find_pc_overlay (sal.pc);
784     /* Sanity.  The exact same SP value is returned by
785        PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by
786        dummy_id to form the frame ID's stack address.  */
787     bpt = set_momentary_breakpoint (gdbarch, sal, dummy_id, bp_call_dummy);
788     bpt->disposition = disp_del;
789   }
790
791   /* Create a breakpoint in std::terminate.
792      If a C++ exception is raised in the dummy-frame, and the
793      exception handler is (normally, and expected to be) out-of-frame,
794      the default C++ handler will (wrongly) be called in an inferior
795      function call.  This is wrong, as an exception can be  normally
796      and legally handled out-of-frame.  The confines of the dummy frame
797      prevent the unwinder from finding the correct handler (or any
798      handler, unless it is in-frame).  The default handler calls
799      std::terminate.  This will kill the inferior.  Assert that
800      terminate should never be called in an inferior function
801      call.  Place a momentary breakpoint in the std::terminate function
802      and if triggered in the call, rewind.  */
803   if (unwind_on_terminating_exception_p)
804     set_std_terminate_breakpoint ();
805
806   /* Everything's ready, push all the info needed to restore the
807      caller (and identify the dummy-frame) onto the dummy-frame
808      stack.  */
809   dummy_frame_push (caller_state, &dummy_id);
810
811   /* Discard both inf_status and caller_state cleanups.
812      From this point on we explicitly restore the associated state
813      or discard it.  */
814   discard_cleanups (inf_status_cleanup);
815
816   /* Register a clean-up for unwind_on_terminating_exception_breakpoint.  */
817   terminate_bp_cleanup = make_cleanup (cleanup_delete_std_terminate_breakpoint,
818                                        NULL);
819
820   /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP -
821      If you're looking to implement asynchronous dummy-frames, then
822      just below is the place to chop this function in two..  */
823
824   /* TP is invalid after run_inferior_call returns, so enclose this
825      in a block so that it's only in scope during the time it's valid.  */
826   {
827     struct thread_info *tp = inferior_thread ();
828
829     /* Save this thread's ptid, we need it later but the thread
830        may have exited.  */
831     call_thread_ptid = tp->ptid;
832
833     /* Run the inferior until it stops.  */
834
835     e = run_inferior_call (tp, real_pc);
836   }
837
838   /* Rethrow an error if we got one trying to run the inferior.  */
839
840   if (e.reason < 0)
841     {
842       const char *name = get_function_name (funaddr,
843                                             name_buf, sizeof (name_buf));
844
845       discard_infcall_control_state (inf_status);
846
847       /* We could discard the dummy frame here if the program exited,
848          but it will get garbage collected the next time the program is
849          run anyway.  */
850
851       switch (e.reason)
852         {
853         case RETURN_ERROR:
854           throw_error (e.error, _("%s\n\
855 An error occurred while in a function called from GDB.\n\
856 Evaluation of the expression containing the function\n\
857 (%s) will be abandoned.\n\
858 When the function is done executing, GDB will silently stop."),
859                        e.message, name);
860         case RETURN_QUIT:
861         default:
862           throw_exception (e);
863         }
864     }
865
866   /* If the program has exited, or we stopped at a different thread,
867      exit and inform the user.  */
868
869   if (! target_has_execution)
870     {
871       const char *name = get_function_name (funaddr,
872                                             name_buf, sizeof (name_buf));
873
874       /* If we try to restore the inferior status,
875          we'll crash as the inferior is no longer running.  */
876       discard_infcall_control_state (inf_status);
877
878       /* We could discard the dummy frame here given that the program exited,
879          but it will get garbage collected the next time the program is
880          run anyway.  */
881
882       error (_("The program being debugged exited while in a function "
883                "called from GDB.\n"
884                "Evaluation of the expression containing the function\n"
885                "(%s) will be abandoned."),
886              name);
887     }
888
889   if (! ptid_equal (call_thread_ptid, inferior_ptid))
890     {
891       const char *name = get_function_name (funaddr,
892                                             name_buf, sizeof (name_buf));
893
894       /* We've switched threads.  This can happen if another thread gets a
895          signal or breakpoint while our thread was running.
896          There's no point in restoring the inferior status,
897          we're in a different thread.  */
898       discard_infcall_control_state (inf_status);
899       /* Keep the dummy frame record, if the user switches back to the
900          thread with the hand-call, we'll need it.  */
901       if (stopped_by_random_signal)
902         error (_("\
903 The program received a signal in another thread while\n\
904 making a function call from GDB.\n\
905 Evaluation of the expression containing the function\n\
906 (%s) will be abandoned.\n\
907 When the function is done executing, GDB will silently stop."),
908                name);
909       else
910         error (_("\
911 The program stopped in another thread while making a function call from GDB.\n\
912 Evaluation of the expression containing the function\n\
913 (%s) will be abandoned.\n\
914 When the function is done executing, GDB will silently stop."),
915                name);
916     }
917
918   if (stopped_by_random_signal || stop_stack_dummy != STOP_STACK_DUMMY)
919     {
920       const char *name = get_function_name (funaddr,
921                                             name_buf, sizeof (name_buf));
922
923       if (stopped_by_random_signal)
924         {
925           /* We stopped inside the FUNCTION because of a random
926              signal.  Further execution of the FUNCTION is not
927              allowed.  */
928
929           if (unwind_on_signal_p)
930             {
931               /* The user wants the context restored.  */
932
933               /* We must get back to the frame we were before the
934                  dummy call.  */
935               dummy_frame_pop (dummy_id);
936
937               /* We also need to restore inferior status to that before the
938                  dummy call.  */
939               restore_infcall_control_state (inf_status);
940
941               /* FIXME: Insert a bunch of wrap_here; name can be very
942                  long if it's a C++ name with arguments and stuff.  */
943               error (_("\
944 The program being debugged was signaled while in a function called from GDB.\n\
945 GDB has restored the context to what it was before the call.\n\
946 To change this behavior use \"set unwindonsignal off\".\n\
947 Evaluation of the expression containing the function\n\
948 (%s) will be abandoned."),
949                      name);
950             }
951           else
952             {
953               /* The user wants to stay in the frame where we stopped
954                  (default).
955                  Discard inferior status, we're not at the same point
956                  we started at.  */
957               discard_infcall_control_state (inf_status);
958
959               /* FIXME: Insert a bunch of wrap_here; name can be very
960                  long if it's a C++ name with arguments and stuff.  */
961               error (_("\
962 The program being debugged was signaled while in a function called from GDB.\n\
963 GDB remains in the frame where the signal was received.\n\
964 To change this behavior use \"set unwindonsignal on\".\n\
965 Evaluation of the expression containing the function\n\
966 (%s) will be abandoned.\n\
967 When the function is done executing, GDB will silently stop."),
968                      name);
969             }
970         }
971
972       if (stop_stack_dummy == STOP_STD_TERMINATE)
973         {
974           /* We must get back to the frame we were before the dummy
975              call.  */
976           dummy_frame_pop (dummy_id);
977
978           /* We also need to restore inferior status to that before
979              the dummy call.  */
980           restore_infcall_control_state (inf_status);
981
982           error (_("\
983 The program being debugged entered a std::terminate call, most likely\n\
984 caused by an unhandled C++ exception.  GDB blocked this call in order\n\
985 to prevent the program from being terminated, and has restored the\n\
986 context to its original state before the call.\n\
987 To change this behaviour use \"set unwind-on-terminating-exception off\".\n\
988 Evaluation of the expression containing the function (%s)\n\
989 will be abandoned."),
990                  name);
991         }
992       else if (stop_stack_dummy == STOP_NONE)
993         {
994
995           /* We hit a breakpoint inside the FUNCTION.
996              Keep the dummy frame, the user may want to examine its state.
997              Discard inferior status, we're not at the same point
998              we started at.  */
999           discard_infcall_control_state (inf_status);
1000
1001           /* The following error message used to say "The expression
1002              which contained the function call has been discarded."
1003              It is a hard concept to explain in a few words.  Ideally,
1004              GDB would be able to resume evaluation of the expression
1005              when the function finally is done executing.  Perhaps
1006              someday this will be implemented (it would not be easy).  */
1007           /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1008              a C++ name with arguments and stuff.  */
1009           error (_("\
1010 The program being debugged stopped while in a function called from GDB.\n\
1011 Evaluation of the expression containing the function\n\
1012 (%s) will be abandoned.\n\
1013 When the function is done executing, GDB will silently stop."),
1014                  name);
1015         }
1016
1017       /* The above code errors out, so ...  */
1018       internal_error (__FILE__, __LINE__, _("... should not be here"));
1019     }
1020
1021   do_cleanups (terminate_bp_cleanup);
1022
1023   /* If we get here the called FUNCTION ran to completion,
1024      and the dummy frame has already been popped.  */
1025
1026   {
1027     struct address_space *aspace = get_regcache_aspace (stop_registers);
1028     struct regcache *retbuf = regcache_xmalloc (gdbarch, aspace);
1029     struct cleanup *retbuf_cleanup = make_cleanup_regcache_xfree (retbuf);
1030     struct value *retval = NULL;
1031
1032     regcache_cpy_no_passthrough (retbuf, stop_registers);
1033
1034     /* Inferior call is successful.  Restore the inferior status.
1035        At this stage, leave the RETBUF alone.  */
1036     restore_infcall_control_state (inf_status);
1037
1038     /* Figure out the value returned by the function.  */
1039     retval = allocate_value (values_type);
1040
1041     if (lang_struct_return)
1042       read_value_memory (retval, 0, 1, struct_addr,
1043                          value_contents_raw (retval),
1044                          TYPE_LENGTH (values_type));
1045     else if (TYPE_CODE (target_values_type) != TYPE_CODE_VOID)
1046       {
1047         /* If the function returns void, don't bother fetching the
1048            return value.  */
1049         switch (gdbarch_return_value (gdbarch, value_type (function),
1050                                       target_values_type, NULL, NULL, NULL))
1051           {
1052           case RETURN_VALUE_REGISTER_CONVENTION:
1053           case RETURN_VALUE_ABI_RETURNS_ADDRESS:
1054           case RETURN_VALUE_ABI_PRESERVES_ADDRESS:
1055             gdbarch_return_value (gdbarch, value_type (function), values_type,
1056                                   retbuf, value_contents_raw (retval), NULL);
1057             break;
1058           case RETURN_VALUE_STRUCT_CONVENTION:
1059             read_value_memory (retval, 0, 1, struct_addr,
1060                                value_contents_raw (retval),
1061                                TYPE_LENGTH (values_type));
1062             break;
1063           }
1064       }
1065
1066     do_cleanups (retbuf_cleanup);
1067
1068     gdb_assert (retval);
1069     return retval;
1070   }
1071 }
1072 \f
1073
1074 /* Provide a prototype to silence -Wmissing-prototypes.  */
1075 void _initialize_infcall (void);
1076
1077 void
1078 _initialize_infcall (void)
1079 {
1080   add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
1081                            &coerce_float_to_double_p, _("\
1082 Set coercion of floats to doubles when calling functions."), _("\
1083 Show coercion of floats to doubles when calling functions"), _("\
1084 Variables of type float should generally be converted to doubles before\n\
1085 calling an unprototyped function, and left alone when calling a prototyped\n\
1086 function.  However, some older debug info formats do not provide enough\n\
1087 information to determine that a function is prototyped.  If this flag is\n\
1088 set, GDB will perform the conversion for a function it considers\n\
1089 unprototyped.\n\
1090 The default is to perform the conversion.\n"),
1091                            NULL,
1092                            show_coerce_float_to_double_p,
1093                            &setlist, &showlist);
1094
1095   add_setshow_boolean_cmd ("unwindonsignal", no_class,
1096                            &unwind_on_signal_p, _("\
1097 Set unwinding of stack if a signal is received while in a call dummy."), _("\
1098 Show unwinding of stack if a signal is received while in a call dummy."), _("\
1099 The unwindonsignal lets the user determine what gdb should do if a signal\n\
1100 is received while in a function called from gdb (call dummy).  If set, gdb\n\
1101 unwinds the stack and restore the context to what as it was before the call.\n\
1102 The default is to stop in the frame where the signal was received."),
1103                            NULL,
1104                            show_unwind_on_signal_p,
1105                            &setlist, &showlist);
1106
1107   add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
1108                            &unwind_on_terminating_exception_p, _("\
1109 Set unwinding of stack if std::terminate is called while in call dummy."), _("\
1110 Show unwinding of stack if std::terminate() is called while in a call dummy."),
1111                            _("\
1112 The unwind on terminating exception flag lets the user determine\n\
1113 what gdb should do if a std::terminate() call is made from the\n\
1114 default exception handler.  If set, gdb unwinds the stack and restores\n\
1115 the context to what it was before the call.  If unset, gdb allows the\n\
1116 std::terminate call to proceed.\n\
1117 The default is to unwind the frame."),
1118                            NULL,
1119                            show_unwind_on_terminating_exception_p,
1120                            &setlist, &showlist);
1121
1122 }