gdb/
[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_SYMBOL:
635       /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose
636          address is the location where the breakpoint should be
637          placed.  Once all targets are using the overhauled frame code
638          this can be deleted - ON_STACK is a better option.  */
639       {
640         struct minimal_symbol *sym;
641         CORE_ADDR dummy_addr;
642
643         sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
644         real_pc = funaddr;
645         if (sym)
646           {
647             dummy_addr = SYMBOL_VALUE_ADDRESS (sym);
648             /* Make certain that the address points at real code, and not
649                a function descriptor.  */
650             dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
651                                                              dummy_addr,
652                                                              &current_target);
653             /* A call dummy always consists of just a single breakpoint,
654                so its address is the same as the address of the dummy.  */
655             bp_addr = dummy_addr;
656             break;
657           }
658       }
659       /* FALLTHROUGH */
660     case AT_ENTRY_POINT:
661       {
662         CORE_ADDR dummy_addr;
663         int bp_len;
664
665         real_pc = funaddr;
666         dummy_addr = entry_point_address ();
667
668         /* If the inferior call throws an uncaught C++ exception,
669            the inferior unwinder tries to unwind all frames, including
670            our dummy frame.  The unwinder determines the address of
671            the calling instruction by subtracting 1 to the return
672            address.  So, using the entry point's address as the return
673            address would lead the unwinder to use the unwinding
674            information of the code immediately preceding the entry
675            point.  This information, if found, is invalid for the dummy
676            frame, and can potentially crash the inferior's unwinder.
677            Therefore, we adjust the return address by the length of
678            a breakpoint, guaranteeing that the unwinder finds the
679            correct function as the caller.  */
680
681         gdbarch_breakpoint_from_pc (gdbarch, &dummy_addr, &bp_len);
682         dummy_addr += bp_len;
683
684         /* A call dummy always consists of just a single breakpoint, so
685            its address is the same as the address of the dummy.  */
686         bp_addr = dummy_addr;
687         break;
688       }
689     default:
690       internal_error (__FILE__, __LINE__, _("bad switch"));
691     }
692
693   if (nargs < TYPE_NFIELDS (ftype))
694     error (_("Too few arguments in function call."));
695
696   {
697     int i;
698
699     for (i = nargs - 1; i >= 0; i--)
700       {
701         int prototyped;
702         struct type *param_type;
703         
704         /* FIXME drow/2002-05-31: Should just always mark methods as
705            prototyped.  Can we respect TYPE_VARARGS?  Probably not.  */
706         if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
707           prototyped = 1;
708         else if (i < TYPE_NFIELDS (ftype))
709           prototyped = TYPE_PROTOTYPED (ftype);
710         else
711           prototyped = 0;
712
713         if (i < TYPE_NFIELDS (ftype))
714           param_type = TYPE_FIELD_TYPE (ftype, i);
715         else
716           param_type = NULL;
717
718         args[i] = value_arg_coerce (gdbarch, args[i],
719                                     param_type, prototyped, &sp);
720
721         if (param_type != NULL && language_pass_by_reference (param_type))
722           args[i] = value_addr (args[i]);
723       }
724   }
725
726   /* Reserve space for the return structure to be written on the
727      stack, if necessary.  Make certain that the value is correctly
728      aligned.  */
729
730   if (struct_return || lang_struct_return)
731     {
732       int len = TYPE_LENGTH (values_type);
733
734       if (gdbarch_inner_than (gdbarch, 1, 2))
735         {
736           /* Stack grows downward.  Align STRUCT_ADDR and SP after
737              making space for the return value.  */
738           sp -= len;
739           if (gdbarch_frame_align_p (gdbarch))
740             sp = gdbarch_frame_align (gdbarch, sp);
741           struct_addr = sp;
742         }
743       else
744         {
745           /* Stack grows upward.  Align the frame, allocate space, and
746              then again, re-align the frame???  */
747           if (gdbarch_frame_align_p (gdbarch))
748             sp = gdbarch_frame_align (gdbarch, sp);
749           struct_addr = sp;
750           sp += len;
751           if (gdbarch_frame_align_p (gdbarch))
752             sp = gdbarch_frame_align (gdbarch, sp);
753         }
754     }
755
756   if (lang_struct_return)
757     {
758       struct value **new_args;
759
760       /* Add the new argument to the front of the argument list.  */
761       new_args = xmalloc (sizeof (struct value *) * (nargs + 1));
762       new_args[0] = value_from_pointer (lookup_pointer_type (values_type),
763                                         struct_addr);
764       memcpy (&new_args[1], &args[0], sizeof (struct value *) * nargs);
765       args = new_args;
766       nargs++;
767       args_cleanup = make_cleanup (xfree, args);
768     }
769   else
770     args_cleanup = make_cleanup (null_cleanup, NULL);
771
772   /* Create the dummy stack frame.  Pass in the call dummy address as,
773      presumably, the ABI code knows where, in the call dummy, the
774      return address should be pointed.  */
775   sp = gdbarch_push_dummy_call (gdbarch, function, get_current_regcache (),
776                                 bp_addr, nargs, args,
777                                 sp, struct_return, struct_addr);
778
779   do_cleanups (args_cleanup);
780
781   /* Set up a frame ID for the dummy frame so we can pass it to
782      set_momentary_breakpoint.  We need to give the breakpoint a frame
783      ID so that the breakpoint code can correctly re-identify the
784      dummy breakpoint.  */
785   /* Sanity.  The exact same SP value is returned by PUSH_DUMMY_CALL,
786      saved as the dummy-frame TOS, and used by dummy_id to form
787      the frame ID's stack address.  */
788   dummy_id = frame_id_build (sp, bp_addr);
789
790   /* Create a momentary breakpoint at the return address of the
791      inferior.  That way it breaks when it returns.  */
792
793   {
794     struct breakpoint *bpt;
795     struct symtab_and_line sal;
796
797     init_sal (&sal);            /* initialize to zeroes */
798     sal.pspace = current_program_space;
799     sal.pc = bp_addr;
800     sal.section = find_pc_overlay (sal.pc);
801     /* Sanity.  The exact same SP value is returned by
802        PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by
803        dummy_id to form the frame ID's stack address.  */
804     bpt = set_momentary_breakpoint (gdbarch, sal, dummy_id, bp_call_dummy);
805     bpt->disposition = disp_del;
806   }
807
808   /* Create a breakpoint in std::terminate.
809      If a C++ exception is raised in the dummy-frame, and the
810      exception handler is (normally, and expected to be) out-of-frame,
811      the default C++ handler will (wrongly) be called in an inferior
812      function call.  This is wrong, as an exception can be  normally
813      and legally handled out-of-frame.  The confines of the dummy frame
814      prevent the unwinder from finding the correct handler (or any
815      handler, unless it is in-frame).  The default handler calls
816      std::terminate.  This will kill the inferior.  Assert that
817      terminate should never be called in an inferior function
818      call.  Place a momentary breakpoint in the std::terminate function
819      and if triggered in the call, rewind.  */
820   if (unwind_on_terminating_exception_p)
821     set_std_terminate_breakpoint ();
822
823   /* Everything's ready, push all the info needed to restore the
824      caller (and identify the dummy-frame) onto the dummy-frame
825      stack.  */
826   dummy_frame_push (caller_state, &dummy_id);
827
828   /* Discard both inf_status and caller_state cleanups.
829      From this point on we explicitly restore the associated state
830      or discard it.  */
831   discard_cleanups (inf_status_cleanup);
832
833   /* Register a clean-up for unwind_on_terminating_exception_breakpoint.  */
834   terminate_bp_cleanup = make_cleanup (cleanup_delete_std_terminate_breakpoint,
835                                        NULL);
836
837   /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP -
838      If you're looking to implement asynchronous dummy-frames, then
839      just below is the place to chop this function in two..  */
840
841   /* TP is invalid after run_inferior_call returns, so enclose this
842      in a block so that it's only in scope during the time it's valid.  */
843   {
844     struct thread_info *tp = inferior_thread ();
845
846     /* Save this thread's ptid, we need it later but the thread
847        may have exited.  */
848     call_thread_ptid = tp->ptid;
849
850     /* Run the inferior until it stops.  */
851
852     e = run_inferior_call (tp, real_pc);
853   }
854
855   /* Rethrow an error if we got one trying to run the inferior.  */
856
857   if (e.reason < 0)
858     {
859       const char *name = get_function_name (funaddr,
860                                             name_buf, sizeof (name_buf));
861
862       discard_infcall_control_state (inf_status);
863
864       /* We could discard the dummy frame here if the program exited,
865          but it will get garbage collected the next time the program is
866          run anyway.  */
867
868       switch (e.reason)
869         {
870         case RETURN_ERROR:
871           throw_error (e.error, _("%s\n\
872 An error occurred while in a function called from GDB.\n\
873 Evaluation of the expression containing the function\n\
874 (%s) will be abandoned.\n\
875 When the function is done executing, GDB will silently stop."),
876                        e.message, name);
877         case RETURN_QUIT:
878         default:
879           throw_exception (e);
880         }
881     }
882
883   /* If the program has exited, or we stopped at a different thread,
884      exit and inform the user.  */
885
886   if (! target_has_execution)
887     {
888       const char *name = get_function_name (funaddr,
889                                             name_buf, sizeof (name_buf));
890
891       /* If we try to restore the inferior status,
892          we'll crash as the inferior is no longer running.  */
893       discard_infcall_control_state (inf_status);
894
895       /* We could discard the dummy frame here given that the program exited,
896          but it will get garbage collected the next time the program is
897          run anyway.  */
898
899       error (_("The program being debugged exited while in a function "
900                "called from GDB.\n"
901                "Evaluation of the expression containing the function\n"
902                "(%s) will be abandoned."),
903              name);
904     }
905
906   if (! ptid_equal (call_thread_ptid, inferior_ptid))
907     {
908       const char *name = get_function_name (funaddr,
909                                             name_buf, sizeof (name_buf));
910
911       /* We've switched threads.  This can happen if another thread gets a
912          signal or breakpoint while our thread was running.
913          There's no point in restoring the inferior status,
914          we're in a different thread.  */
915       discard_infcall_control_state (inf_status);
916       /* Keep the dummy frame record, if the user switches back to the
917          thread with the hand-call, we'll need it.  */
918       if (stopped_by_random_signal)
919         error (_("\
920 The program received a signal in another thread while\n\
921 making a function call from GDB.\n\
922 Evaluation of the expression containing the function\n\
923 (%s) will be abandoned.\n\
924 When the function is done executing, GDB will silently stop."),
925                name);
926       else
927         error (_("\
928 The program stopped in another thread while making a function call from GDB.\n\
929 Evaluation of the expression containing the function\n\
930 (%s) will be abandoned.\n\
931 When the function is done executing, GDB will silently stop."),
932                name);
933     }
934
935   if (stopped_by_random_signal || stop_stack_dummy != STOP_STACK_DUMMY)
936     {
937       const char *name = get_function_name (funaddr,
938                                             name_buf, sizeof (name_buf));
939
940       if (stopped_by_random_signal)
941         {
942           /* We stopped inside the FUNCTION because of a random
943              signal.  Further execution of the FUNCTION is not
944              allowed.  */
945
946           if (unwind_on_signal_p)
947             {
948               /* The user wants the context restored.  */
949
950               /* We must get back to the frame we were before the
951                  dummy call.  */
952               dummy_frame_pop (dummy_id);
953
954               /* We also need to restore inferior status to that before the
955                  dummy call.  */
956               restore_infcall_control_state (inf_status);
957
958               /* FIXME: Insert a bunch of wrap_here; name can be very
959                  long if it's a C++ name with arguments and stuff.  */
960               error (_("\
961 The program being debugged was signaled while in a function called from GDB.\n\
962 GDB has restored the context to what it was before the call.\n\
963 To change this behavior use \"set unwindonsignal off\".\n\
964 Evaluation of the expression containing the function\n\
965 (%s) will be abandoned."),
966                      name);
967             }
968           else
969             {
970               /* The user wants to stay in the frame where we stopped
971                  (default).
972                  Discard inferior status, we're not at the same point
973                  we started at.  */
974               discard_infcall_control_state (inf_status);
975
976               /* FIXME: Insert a bunch of wrap_here; name can be very
977                  long if it's a C++ name with arguments and stuff.  */
978               error (_("\
979 The program being debugged was signaled while in a function called from GDB.\n\
980 GDB remains in the frame where the signal was received.\n\
981 To change this behavior use \"set unwindonsignal on\".\n\
982 Evaluation of the expression containing the function\n\
983 (%s) will be abandoned.\n\
984 When the function is done executing, GDB will silently stop."),
985                      name);
986             }
987         }
988
989       if (stop_stack_dummy == STOP_STD_TERMINATE)
990         {
991           /* We must get back to the frame we were before the dummy
992              call.  */
993           dummy_frame_pop (dummy_id);
994
995           /* We also need to restore inferior status to that before
996              the dummy call.  */
997           restore_infcall_control_state (inf_status);
998
999           error (_("\
1000 The program being debugged entered a std::terminate call, most likely\n\
1001 caused by an unhandled C++ exception.  GDB blocked this call in order\n\
1002 to prevent the program from being terminated, and has restored the\n\
1003 context to its original state before the call.\n\
1004 To change this behaviour use \"set unwind-on-terminating-exception off\".\n\
1005 Evaluation of the expression containing the function (%s)\n\
1006 will be abandoned."),
1007                  name);
1008         }
1009       else if (stop_stack_dummy == STOP_NONE)
1010         {
1011
1012           /* We hit a breakpoint inside the FUNCTION.
1013              Keep the dummy frame, the user may want to examine its state.
1014              Discard inferior status, we're not at the same point
1015              we started at.  */
1016           discard_infcall_control_state (inf_status);
1017
1018           /* The following error message used to say "The expression
1019              which contained the function call has been discarded."
1020              It is a hard concept to explain in a few words.  Ideally,
1021              GDB would be able to resume evaluation of the expression
1022              when the function finally is done executing.  Perhaps
1023              someday this will be implemented (it would not be easy).  */
1024           /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1025              a C++ name with arguments and stuff.  */
1026           error (_("\
1027 The program being debugged stopped while in a function called from GDB.\n\
1028 Evaluation of the expression containing the function\n\
1029 (%s) will be abandoned.\n\
1030 When the function is done executing, GDB will silently stop."),
1031                  name);
1032         }
1033
1034       /* The above code errors out, so ...  */
1035       internal_error (__FILE__, __LINE__, _("... should not be here"));
1036     }
1037
1038   do_cleanups (terminate_bp_cleanup);
1039
1040   /* If we get here the called FUNCTION ran to completion,
1041      and the dummy frame has already been popped.  */
1042
1043   {
1044     struct address_space *aspace = get_regcache_aspace (stop_registers);
1045     struct regcache *retbuf = regcache_xmalloc (gdbarch, aspace);
1046     struct cleanup *retbuf_cleanup = make_cleanup_regcache_xfree (retbuf);
1047     struct value *retval = NULL;
1048
1049     regcache_cpy_no_passthrough (retbuf, stop_registers);
1050
1051     /* Inferior call is successful.  Restore the inferior status.
1052        At this stage, leave the RETBUF alone.  */
1053     restore_infcall_control_state (inf_status);
1054
1055     /* Figure out the value returned by the function.  */
1056     retval = allocate_value (values_type);
1057
1058     if (lang_struct_return)
1059       read_value_memory (retval, 0, 1, struct_addr,
1060                          value_contents_raw (retval),
1061                          TYPE_LENGTH (values_type));
1062     else if (TYPE_CODE (target_values_type) != TYPE_CODE_VOID)
1063       {
1064         /* If the function returns void, don't bother fetching the
1065            return value.  */
1066         switch (gdbarch_return_value (gdbarch, value_type (function),
1067                                       target_values_type, NULL, NULL, NULL))
1068           {
1069           case RETURN_VALUE_REGISTER_CONVENTION:
1070           case RETURN_VALUE_ABI_RETURNS_ADDRESS:
1071           case RETURN_VALUE_ABI_PRESERVES_ADDRESS:
1072             gdbarch_return_value (gdbarch, value_type (function), values_type,
1073                                   retbuf, value_contents_raw (retval), NULL);
1074             break;
1075           case RETURN_VALUE_STRUCT_CONVENTION:
1076             read_value_memory (retval, 0, 1, struct_addr,
1077                                value_contents_raw (retval),
1078                                TYPE_LENGTH (values_type));
1079             break;
1080           }
1081       }
1082
1083     do_cleanups (retbuf_cleanup);
1084
1085     gdb_assert (retval);
1086     return retval;
1087   }
1088 }
1089 \f
1090
1091 /* Provide a prototype to silence -Wmissing-prototypes.  */
1092 void _initialize_infcall (void);
1093
1094 void
1095 _initialize_infcall (void)
1096 {
1097   add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
1098                            &coerce_float_to_double_p, _("\
1099 Set coercion of floats to doubles when calling functions."), _("\
1100 Show coercion of floats to doubles when calling functions"), _("\
1101 Variables of type float should generally be converted to doubles before\n\
1102 calling an unprototyped function, and left alone when calling a prototyped\n\
1103 function.  However, some older debug info formats do not provide enough\n\
1104 information to determine that a function is prototyped.  If this flag is\n\
1105 set, GDB will perform the conversion for a function it considers\n\
1106 unprototyped.\n\
1107 The default is to perform the conversion.\n"),
1108                            NULL,
1109                            show_coerce_float_to_double_p,
1110                            &setlist, &showlist);
1111
1112   add_setshow_boolean_cmd ("unwindonsignal", no_class,
1113                            &unwind_on_signal_p, _("\
1114 Set unwinding of stack if a signal is received while in a call dummy."), _("\
1115 Show unwinding of stack if a signal is received while in a call dummy."), _("\
1116 The unwindonsignal lets the user determine what gdb should do if a signal\n\
1117 is received while in a function called from gdb (call dummy).  If set, gdb\n\
1118 unwinds the stack and restore the context to what as it was before the call.\n\
1119 The default is to stop in the frame where the signal was received."),
1120                            NULL,
1121                            show_unwind_on_signal_p,
1122                            &setlist, &showlist);
1123
1124   add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
1125                            &unwind_on_terminating_exception_p, _("\
1126 Set unwinding of stack if std::terminate is called while in call dummy."), _("\
1127 Show unwinding of stack if std::terminate() is called while in a call dummy."),
1128                            _("\
1129 The unwind on terminating exception flag lets the user determine\n\
1130 what gdb should do if a std::terminate() call is made from the\n\
1131 default exception handler.  If set, gdb unwinds the stack and restores\n\
1132 the context to what it was before the call.  If unset, gdb allows the\n\
1133 std::terminate call to proceed.\n\
1134 The default is to unwind the frame."),
1135                            NULL,
1136                            show_unwind_on_terminating_exception_p,
1137                            &setlist, &showlist);
1138
1139 }