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