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