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