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