OSDN Git Service

2003-04-22 Andrew Cagney <cagney@redhat.com>
[pf3gnuchains/pf3gnuchains3x.git] / gdb / infcall.c
1 /* Perform an inferior function call, for GDB, the GNU debugger.
2
3    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
5    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 2 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, write to the Free Software
21    Foundation, Inc., 59 Temple Place - Suite 330,
22    Boston, MA 02111-1307, USA.  */
23
24 #include "defs.h"
25 #include "breakpoint.h"
26 #include "target.h"
27 #include "regcache.h"
28 #include "inferior.h"
29 #include "gdb_assert.h"
30 #include "block.h"
31 #include "gdbcore.h"
32 #include "language.h"
33 #include "symfile.h"
34 #include "gdbcmd.h"
35 #include "command.h"
36 #include "gdb_string.h"
37
38 /* NOTE: cagney/2003-04-16: What's the future of this code?
39
40    GDB needs an asynchronous expression evaluator, that means an
41    asynchronous inferior function call implementation, and that in
42    turn means restructuring the code so that it is event driven.  */
43
44 /* How you should pass arguments to a function depends on whether it
45    was defined in K&R style or prototype style.  If you define a
46    function using the K&R syntax that takes a `float' argument, then
47    callers must pass that argument as a `double'.  If you define the
48    function using the prototype syntax, then you must pass the
49    argument as a `float', with no promotion.
50
51    Unfortunately, on certain older platforms, the debug info doesn't
52    indicate reliably how each function was defined.  A function type's
53    TYPE_FLAG_PROTOTYPED flag may be clear, even if the function was
54    defined in prototype style.  When calling a function whose
55    TYPE_FLAG_PROTOTYPED flag is clear, GDB consults this flag to
56    decide what to do.
57
58    For modern targets, it is proper to assume that, if the prototype
59    flag is clear, that can be trusted: `float' arguments should be
60    promoted to `double'.  For some older targets, if the prototype
61    flag is clear, that doesn't tell us anything.  The default is to
62    trust the debug information; the user can override this behavior
63    with "set coerce-float-to-double 0".  */
64
65 static int coerce_float_to_double_p = 1;
66
67 /* This boolean tells what gdb should do if a signal is received while
68    in a function called from gdb (call dummy).  If set, gdb unwinds
69    the stack and restore the context to what as it was before the
70    call.
71
72    The default is to stop in the frame where the signal was received. */
73
74 int unwind_on_signal_p = 0;
75
76 /* Perform the standard coercions that are specified
77    for arguments to be passed to C functions.
78
79    If PARAM_TYPE is non-NULL, it is the expected parameter type.
80    IS_PROTOTYPED is non-zero if the function declaration is prototyped.  */
81
82 static struct value *
83 value_arg_coerce (struct value *arg, struct type *param_type,
84                   int is_prototyped)
85 {
86   register struct type *arg_type = check_typedef (VALUE_TYPE (arg));
87   register struct type *type
88     = param_type ? check_typedef (param_type) : arg_type;
89
90   switch (TYPE_CODE (type))
91     {
92     case TYPE_CODE_REF:
93       if (TYPE_CODE (arg_type) != TYPE_CODE_REF
94           && TYPE_CODE (arg_type) != TYPE_CODE_PTR)
95         {
96           arg = value_addr (arg);
97           VALUE_TYPE (arg) = param_type;
98           return arg;
99         }
100       break;
101     case TYPE_CODE_INT:
102     case TYPE_CODE_CHAR:
103     case TYPE_CODE_BOOL:
104     case TYPE_CODE_ENUM:
105       /* If we don't have a prototype, coerce to integer type if necessary.  */
106       if (!is_prototyped)
107         {
108           if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
109             type = builtin_type_int;
110         }
111       /* Currently all target ABIs require at least the width of an integer
112          type for an argument.  We may have to conditionalize the following
113          type coercion for future targets.  */
114       if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_int))
115         type = builtin_type_int;
116       break;
117     case TYPE_CODE_FLT:
118       if (!is_prototyped && coerce_float_to_double_p)
119         {
120           if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin_type_double))
121             type = builtin_type_double;
122           else if (TYPE_LENGTH (type) > TYPE_LENGTH (builtin_type_double))
123             type = builtin_type_long_double;
124         }
125       break;
126     case TYPE_CODE_FUNC:
127       type = lookup_pointer_type (type);
128       break;
129     case TYPE_CODE_ARRAY:
130       /* Arrays are coerced to pointers to their first element, unless
131          they are vectors, in which case we want to leave them alone,
132          because they are passed by value.  */
133       if (current_language->c_style_arrays)
134         if (!TYPE_VECTOR (type))
135           type = lookup_pointer_type (TYPE_TARGET_TYPE (type));
136       break;
137     case TYPE_CODE_UNDEF:
138     case TYPE_CODE_PTR:
139     case TYPE_CODE_STRUCT:
140     case TYPE_CODE_UNION:
141     case TYPE_CODE_VOID:
142     case TYPE_CODE_SET:
143     case TYPE_CODE_RANGE:
144     case TYPE_CODE_STRING:
145     case TYPE_CODE_BITSTRING:
146     case TYPE_CODE_ERROR:
147     case TYPE_CODE_MEMBER:
148     case TYPE_CODE_METHOD:
149     case TYPE_CODE_COMPLEX:
150     default:
151       break;
152     }
153
154   return value_cast (type, arg);
155 }
156
157 /* Determine a function's address and its return type from its value.
158    Calls error() if the function is not valid for calling.  */
159
160 static CORE_ADDR
161 find_function_addr (struct value *function, struct type **retval_type)
162 {
163   register struct type *ftype = check_typedef (VALUE_TYPE (function));
164   register enum type_code code = TYPE_CODE (ftype);
165   struct type *value_type;
166   CORE_ADDR funaddr;
167
168   /* If it's a member function, just look at the function
169      part of it.  */
170
171   /* Determine address to call.  */
172   if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
173     {
174       funaddr = VALUE_ADDRESS (function);
175       value_type = TYPE_TARGET_TYPE (ftype);
176     }
177   else if (code == TYPE_CODE_PTR)
178     {
179       funaddr = value_as_address (function);
180       ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
181       if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
182           || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
183         {
184           funaddr = CONVERT_FROM_FUNC_PTR_ADDR (funaddr);
185           value_type = TYPE_TARGET_TYPE (ftype);
186         }
187       else
188         value_type = builtin_type_int;
189     }
190   else if (code == TYPE_CODE_INT)
191     {
192       /* Handle the case of functions lacking debugging info.
193          Their values are characters since their addresses are char */
194       if (TYPE_LENGTH (ftype) == 1)
195         funaddr = value_as_address (value_addr (function));
196       else
197         /* Handle integer used as address of a function.  */
198         funaddr = (CORE_ADDR) value_as_long (function);
199
200       value_type = builtin_type_int;
201     }
202   else
203     error ("Invalid data type for function to be called.");
204
205   *retval_type = value_type;
206   return funaddr;
207 }
208
209 /* Call breakpoint_auto_delete on the current contents of the bpstat
210    pointed to by arg (which is really a bpstat *).  */
211
212 static void
213 breakpoint_auto_delete_contents (void *arg)
214 {
215   breakpoint_auto_delete (*(bpstat *) arg);
216 }
217
218 /* All this stuff with a dummy frame may seem unnecessarily complicated
219    (why not just save registers in GDB?).  The purpose of pushing a dummy
220    frame which looks just like a real frame is so that if you call a
221    function and then hit a breakpoint (get a signal, etc), "backtrace"
222    will look right.  Whether the backtrace needs to actually show the
223    stack at the time the inferior function was called is debatable, but
224    it certainly needs to not display garbage.  So if you are contemplating
225    making dummy frames be different from normal frames, consider that.  */
226
227 /* Perform a function call in the inferior.
228    ARGS is a vector of values of arguments (NARGS of them).
229    FUNCTION is a value, the function to be called.
230    Returns a value representing what the function returned.
231    May fail to return, if a breakpoint or signal is hit
232    during the execution of the function.
233
234    ARGS is modified to contain coerced values. */
235
236 struct value *
237 call_function_by_hand (struct value *function, int nargs, struct value **args)
238 {
239   register CORE_ADDR sp;
240   register int i;
241   int rc;
242   CORE_ADDR start_sp;
243   /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
244      is in host byte order.  Before calling FIX_CALL_DUMMY, we byteswap it
245      and remove any extra bytes which might exist because ULONGEST is
246      bigger than REGISTER_SIZE.
247
248      NOTE: This is pretty wierd, as the call dummy is actually a
249      sequence of instructions.  But CISC machines will have
250      to pack the instructions into REGISTER_SIZE units (and
251      so will RISC machines for which INSTRUCTION_SIZE is not
252      REGISTER_SIZE).
253
254      NOTE: This is pretty stupid.  CALL_DUMMY should be in strict
255      target byte order. */
256
257   static ULONGEST *dummy;
258   int sizeof_dummy1;
259   char *dummy1;
260   CORE_ADDR dummy_addr;
261   CORE_ADDR old_sp;
262   struct type *value_type;
263   unsigned char struct_return;
264   CORE_ADDR struct_addr = 0;
265   struct regcache *retbuf;
266   struct cleanup *retbuf_cleanup;
267   struct inferior_status *inf_status;
268   struct cleanup *inf_status_cleanup;
269   CORE_ADDR funaddr;
270   int using_gcc;                /* Set to version of gcc in use, or zero if not gcc */
271   CORE_ADDR real_pc;
272   struct type *param_type = NULL;
273   struct type *ftype = check_typedef (SYMBOL_TYPE (function));
274   int n_method_args = 0;
275   CORE_ADDR bp_addr;
276
277   dummy = alloca (SIZEOF_CALL_DUMMY_WORDS);
278   sizeof_dummy1 = REGISTER_SIZE * SIZEOF_CALL_DUMMY_WORDS / sizeof (ULONGEST);
279   dummy1 = alloca (sizeof_dummy1);
280   memcpy (dummy, CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS);
281
282   if (!target_has_execution)
283     noprocess ();
284
285   /* Create a cleanup chain that contains the retbuf (buffer
286      containing the register values).  This chain is create BEFORE the
287      inf_status chain so that the inferior status can cleaned up
288      (restored or discarded) without having the retbuf freed.  */
289   retbuf = regcache_xmalloc (current_gdbarch);
290   retbuf_cleanup = make_cleanup_regcache_xfree (retbuf);
291
292   /* A cleanup for the inferior status.  Create this AFTER the retbuf
293      so that this can be discarded or applied without interfering with
294      the regbuf.  */
295   inf_status = save_inferior_status (1);
296   inf_status_cleanup = make_cleanup_restore_inferior_status (inf_status);
297
298   if (DEPRECATED_PUSH_DUMMY_FRAME_P ())
299     {
300       /* DEPRECATED_PUSH_DUMMY_FRAME is responsible for saving the
301          inferior registers (and frame_pop() for restoring them).  (At
302          least on most machines) they are saved on the stack in the
303          inferior.  */
304       DEPRECATED_PUSH_DUMMY_FRAME;
305     }
306   else
307     {
308       /* FIXME: cagney/2003-02-26: Step zero of this little tinker is
309       to extract the generic dummy frame code from the architecture
310       vector.  Hence this direct call.
311
312       A follow-on change is to modify this interface so that it takes
313       thread OR frame OR tpid as a parameter, and returns a dummy
314       frame handle.  The handle can then be used further down as a
315       parameter SAVE_DUMMY_FRAME_TOS.  Hmm, thinking about it, since
316       everything is ment to be using generic dummy frames, why not
317       even use some of the dummy frame code to here - do a regcache
318       dup and then pass the duped regcache, along with all the other
319       stuff, at one single point.
320
321       In fact, you can even save the structure's return address in the
322       dummy frame and fix one of those nasty lost struct return edge
323       conditions.  */
324       generic_push_dummy_frame ();
325     }
326
327   old_sp = read_sp ();
328
329   /* Ensure that the initial SP is correctly aligned.  */
330   if (gdbarch_frame_align_p (current_gdbarch))
331     {
332       /* NOTE: cagney/2002-09-18:
333
334          On a RISC architecture, a void parameterless generic dummy
335          frame (i.e., no parameters, no result) typically does not
336          need to push anything the stack and hence can leave SP and
337          FP.  Similarly, a framelss (possibly leaf) function does not
338          push anything on the stack and, hence, that too can leave FP
339          and SP unchanged.  As a consequence, a sequence of void
340          parameterless generic dummy frame calls to frameless
341          functions will create a sequence of effectively identical
342          frames (SP, FP and TOS and PC the same).  This, not
343          suprisingly, results in what appears to be a stack in an
344          infinite loop --- when GDB tries to find a generic dummy
345          frame on the internal dummy frame stack, it will always find
346          the first one.
347
348          To avoid this problem, the code below always grows the stack.
349          That way, two dummy frames can never be identical.  It does
350          burn a few bytes of stack but that is a small price to pay
351          :-).  */
352       sp = gdbarch_frame_align (current_gdbarch, old_sp);
353       if (sp == old_sp)
354         {
355           if (INNER_THAN (1, 2))
356             /* Stack grows down.  */
357             sp = gdbarch_frame_align (current_gdbarch, old_sp - 1);
358           else
359             /* Stack grows up.  */
360             sp = gdbarch_frame_align (current_gdbarch, old_sp + 1);
361         }
362       gdb_assert ((INNER_THAN (1, 2) && sp <= old_sp)
363                   || (INNER_THAN (2, 1) && sp >= old_sp));
364     }
365   else
366     /* FIXME: cagney/2002-09-18: Hey, you loose!  Who knows how badly
367        aligned the SP is!  Further, per comment above, if the generic
368        dummy frame ends up empty (because nothing is pushed) GDB won't
369        be able to correctly perform back traces.  If a target is
370        having trouble with backtraces, first thing to do is add
371        FRAME_ALIGN() to its architecture vector.  After that, try
372        adding SAVE_DUMMY_FRAME_TOS() and modifying
373        DEPRECATED_FRAME_CHAIN so that when the next outer frame is a
374        generic dummy, it returns the current frame's base.  */
375     sp = old_sp;
376
377   if (INNER_THAN (1, 2))
378     {
379       /* Stack grows down */
380       sp -= sizeof_dummy1;
381       start_sp = sp;
382     }
383   else
384     {
385       /* Stack grows up */
386       start_sp = sp;
387       sp += sizeof_dummy1;
388     }
389
390   /* NOTE: cagney/2002-09-10: Don't bother re-adjusting the stack
391      after allocating space for the call dummy.  A target can specify
392      a SIZEOF_DUMMY1 (via SIZEOF_CALL_DUMMY_WORDS) such that all local
393      alignment requirements are met.  */
394
395   funaddr = find_function_addr (function, &value_type);
396   CHECK_TYPEDEF (value_type);
397
398   {
399     struct block *b = block_for_pc (funaddr);
400     /* If compiled without -g, assume GCC 2.  */
401     using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b));
402   }
403
404   /* Are we returning a value using a structure return or a normal
405      value return? */
406
407   struct_return = using_struct_return (function, funaddr, value_type,
408                                        using_gcc);
409
410   /* Create a call sequence customized for this function
411      and the number of arguments for it.  */
412   for (i = 0; i < (int) (SIZEOF_CALL_DUMMY_WORDS / sizeof (dummy[0])); i++)
413     store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
414                             REGISTER_SIZE,
415                             (ULONGEST) dummy[i]);
416
417   switch (CALL_DUMMY_LOCATION)
418     {
419     case ON_STACK:
420       /* NOTE: cagney/2003-04-22: This computation of REAL_PC, BP_ADDR
421          and DUMMY_ADDR is pretty messed up.  It comes from constant
422          tinkering with the values.  Instead a FIX_CALL_DUMMY
423          replacement (PUSH_DUMMY_BREAKPOINT?) should just do
424          everything.  */
425 #ifdef GDB_TARGET_IS_HPPA
426       real_pc = FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
427                                 value_type, using_gcc);
428 #else
429       if (FIX_CALL_DUMMY_P ())
430         {
431           /* gdb_assert (CALL_DUMMY_LOCATION == ON_STACK) true?  */
432           FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args, value_type,
433                           using_gcc);
434         }
435       real_pc = start_sp;
436 #endif
437       dummy_addr = start_sp;
438       /* Yes, the offset is applied to the real_pc and not the dummy
439          addr.  Ulgh!  Blame the HP/UX target.  */
440       bp_addr = real_pc + CALL_DUMMY_BREAKPOINT_OFFSET;
441       /* Yes, the offset is applied to the real_pc and not the
442          dummy_addr.  Ulgh!  Blame the HP/UX target.  */
443       real_pc += CALL_DUMMY_START_OFFSET;
444       write_memory (start_sp, (char *) dummy1, sizeof_dummy1);
445       if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
446         generic_save_call_dummy_addr (start_sp, start_sp + sizeof_dummy1);
447       break;
448     case AT_ENTRY_POINT:
449       real_pc = funaddr;
450       dummy_addr = CALL_DUMMY_ADDRESS ();
451       /* A call dummy always consists of just a single breakpoint, so
452          it's address is the same as the address of the dummy.  */
453       bp_addr = dummy_addr;
454       if (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
455         /* NOTE: cagney/2002-04-13: The entry point is going to be
456            modified with a single breakpoint.  */
457         generic_save_call_dummy_addr (CALL_DUMMY_ADDRESS (),
458                                       CALL_DUMMY_ADDRESS () + 1);
459       break;
460     default:
461       internal_error (__FILE__, __LINE__, "bad switch");
462     }
463
464 #ifdef lint
465   sp = old_sp;                  /* It really is used, for some ifdef's... */
466 #endif
467
468   if (nargs < TYPE_NFIELDS (ftype))
469     error ("too few arguments in function call");
470
471   for (i = nargs - 1; i >= 0; i--)
472     {
473       int prototyped;
474
475       /* FIXME drow/2002-05-31: Should just always mark methods as
476          prototyped.  Can we respect TYPE_VARARGS?  Probably not.  */
477       if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
478         prototyped = 1;
479       else
480         prototyped = TYPE_PROTOTYPED (ftype);
481
482       if (i < TYPE_NFIELDS (ftype))
483         args[i] = value_arg_coerce (args[i], TYPE_FIELD_TYPE (ftype, i),
484                                     prototyped);
485       else
486         args[i] = value_arg_coerce (args[i], NULL, 0);
487
488       /*elz: this code is to handle the case in which the function to be called
489          has a pointer to function as parameter and the corresponding actual argument
490          is the address of a function and not a pointer to function variable.
491          In aCC compiled code, the calls through pointers to functions (in the body
492          of the function called by hand) are made via $$dyncall_external which
493          requires some registers setting, this is taken care of if we call
494          via a function pointer variable, but not via a function address.
495          In cc this is not a problem. */
496
497       if (using_gcc == 0)
498         if (param_type && TYPE_CODE (ftype) != TYPE_CODE_METHOD)
499           /* if this parameter is a pointer to function */
500           if (TYPE_CODE (param_type) == TYPE_CODE_PTR)
501             if (TYPE_CODE (TYPE_TARGET_TYPE (param_type)) == TYPE_CODE_FUNC)
502               /* elz: FIXME here should go the test about the compiler used
503                  to compile the target. We want to issue the error
504                  message only if the compiler used was HP's aCC.
505                  If we used HP's cc, then there is no problem and no need
506                  to return at this point */
507               if (using_gcc == 0)       /* && compiler == aCC */
508                 /* go see if the actual parameter is a variable of type
509                    pointer to function or just a function */
510                 if (args[i]->lval == not_lval)
511                   {
512                     char *arg_name;
513                     if (find_pc_partial_function ((CORE_ADDR) args[i]->aligner.contents[0], &arg_name, NULL, NULL))
514                       error ("\
515 You cannot use function <%s> as argument. \n\
516 You must use a pointer to function type variable. Command ignored.", arg_name);
517                   }
518     }
519
520   if (REG_STRUCT_HAS_ADDR_P ())
521     {
522       /* This is a machine like the sparc, where we may need to pass a
523          pointer to the structure, not the structure itself.  */
524       for (i = nargs - 1; i >= 0; i--)
525         {
526           struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
527           if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
528                || TYPE_CODE (arg_type) == TYPE_CODE_UNION
529                || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
530                || TYPE_CODE (arg_type) == TYPE_CODE_STRING
531                || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
532                || TYPE_CODE (arg_type) == TYPE_CODE_SET
533                || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
534                    && TYPE_LENGTH (arg_type) > 8)
535                )
536               && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
537             {
538               CORE_ADDR addr;
539               int len;          /*  = TYPE_LENGTH (arg_type); */
540               int aligned_len;
541               arg_type = check_typedef (VALUE_ENCLOSING_TYPE (args[i]));
542               len = TYPE_LENGTH (arg_type);
543
544               if (STACK_ALIGN_P ())
545                 /* MVS 11/22/96: I think at least some of this
546                    stack_align code is really broken.  Better to let
547                    PUSH_ARGUMENTS adjust the stack in a target-defined
548                    manner.  */
549                 aligned_len = STACK_ALIGN (len);
550               else
551                 aligned_len = len;
552               if (INNER_THAN (1, 2))
553                 {
554                   /* stack grows downward */
555                   sp -= aligned_len;
556                   /* ... so the address of the thing we push is the
557                      stack pointer after we push it.  */
558                   addr = sp;
559                 }
560               else
561                 {
562                   /* The stack grows up, so the address of the thing
563                      we push is the stack pointer before we push it.  */
564                   addr = sp;
565                   sp += aligned_len;
566                 }
567               /* Push the structure.  */
568               write_memory (addr, VALUE_CONTENTS_ALL (args[i]), len);
569               /* The value we're going to pass is the address of the
570                  thing we just pushed.  */
571               /*args[i] = value_from_longest (lookup_pointer_type (value_type),
572                 (LONGEST) addr); */
573               args[i] = value_from_pointer (lookup_pointer_type (arg_type),
574                                             addr);
575             }
576         }
577     }
578
579
580   /* Reserve space for the return structure to be written on the
581      stack, if necessary.  Make certain that the value is correctly
582      aligned. */
583
584   if (struct_return)
585     {
586       int len = TYPE_LENGTH (value_type);
587       if (STACK_ALIGN_P ())
588         /* NOTE: cagney/2003-03-22: Should rely on frame align, rather
589            than stack align to force the alignment of the stack.  */
590         len = STACK_ALIGN (len);
591       if (INNER_THAN (1, 2))
592         {
593           /* Stack grows downward.  Align STRUCT_ADDR and SP after
594              making space for the return value.  */
595           sp -= len;
596           if (gdbarch_frame_align_p (current_gdbarch))
597             sp = gdbarch_frame_align (current_gdbarch, sp);
598           struct_addr = sp;
599         }
600       else
601         {
602           /* Stack grows upward.  Align the frame, allocate space, and
603              then again, re-align the frame??? */
604           if (gdbarch_frame_align_p (current_gdbarch))
605             sp = gdbarch_frame_align (current_gdbarch, sp);
606           struct_addr = sp;
607           sp += len;
608           if (gdbarch_frame_align_p (current_gdbarch))
609             sp = gdbarch_frame_align (current_gdbarch, sp);
610         }
611     }
612
613   /* elz: on HPPA no need for this extra alignment, maybe it is needed
614      on other architectures. This is because all the alignment is
615      taken care of in the above code (ifdef REG_STRUCT_HAS_ADDR) and
616      in hppa_push_arguments */
617   /* NOTE: cagney/2003-03-24: The below code is very broken.  Given an
618      odd sized parameter the below will mis-align the stack.  As was
619      suggested back in '96, better to let PUSH_ARGUMENTS handle it.  */
620   if (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED)
621     {
622       /* MVS 11/22/96: I think at least some of this stack_align code
623          is really broken.  Better to let push_dummy_call() adjust the
624          stack in a target-defined manner.  */
625       if (STACK_ALIGN_P () && INNER_THAN (1, 2))
626         {
627           /* If stack grows down, we must leave a hole at the top. */
628           int len = 0;
629
630           for (i = nargs - 1; i >= 0; i--)
631             len += TYPE_LENGTH (VALUE_ENCLOSING_TYPE (args[i]));
632           if (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P ())
633             len += DEPRECATED_CALL_DUMMY_STACK_ADJUST;
634           sp -= STACK_ALIGN (len) - len;
635         }
636     }
637
638   /* Create the dummy stack frame.  Pass in the call dummy address as,
639      presumably, the ABI code knows where, in the call dummy, the
640      return address should be pointed.  */
641   if (gdbarch_push_dummy_call_p (current_gdbarch))
642     /* When there is no push_dummy_call method, should this code
643        simply error out.  That would the implementation of this method
644        for all ABIs (which is probably a good thing).  */
645     sp = gdbarch_push_dummy_call (current_gdbarch, current_regcache,
646                                   dummy_addr, nargs, args, sp, struct_return,
647                                   struct_addr);
648   else  if (DEPRECATED_PUSH_ARGUMENTS_P ())
649     /* Keep old targets working.  */
650     sp = DEPRECATED_PUSH_ARGUMENTS (nargs, args, sp, struct_return,
651                                     struct_addr);
652   else
653     sp = legacy_push_arguments (nargs, args, sp, struct_return, struct_addr);
654
655   if (DEPRECATED_PUSH_RETURN_ADDRESS_P ())
656     /* for targets that use no CALL_DUMMY */
657     /* There are a number of targets now which actually don't write
658        any CALL_DUMMY instructions into the target, but instead just
659        save the machine state, push the arguments, and jump directly
660        to the callee function.  Since this doesn't actually involve
661        executing a JSR/BSR instruction, the return address must be set
662        up by hand, either by pushing onto the stack or copying into a
663        return-address register as appropriate.  Formerly this has been
664        done in PUSH_ARGUMENTS, but that's overloading its
665        functionality a bit, so I'm making it explicit to do it here.  */
666     /* NOTE: cagney/2003-04-22: The first parameter ("real_pc") has
667        been replaced with zero, it turns out that no implementation
668        used that parameter.  This occured because the value being
669        supplied - the address of the called function's entry point
670        instead of the address of the breakpoint that the called
671        function should return to - wasn't useful.  */
672     sp = DEPRECATED_PUSH_RETURN_ADDRESS (0, sp);
673
674   /* NOTE: cagney/2003-03-23: Diable this code when there is a
675      push_dummy_call() method.  Since that method will have already
676      handled any alignment issues, the code below is entirely
677      redundant.  */
678   if (!gdbarch_push_dummy_call_p (current_gdbarch)
679       && STACK_ALIGN_P () && !INNER_THAN (1, 2))
680     {
681       /* If stack grows up, we must leave a hole at the bottom, note
682          that sp already has been advanced for the arguments!  */
683       if (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P ())
684         sp += DEPRECATED_CALL_DUMMY_STACK_ADJUST;
685       sp = STACK_ALIGN (sp);
686     }
687
688 /* XXX This seems wrong.  For stacks that grow down we shouldn't do
689    anything here!  */
690   /* MVS 11/22/96: I think at least some of this stack_align code is
691      really broken.  Better to let PUSH_ARGUMENTS adjust the stack in
692      a target-defined manner.  */
693   if (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P ())
694     if (INNER_THAN (1, 2))
695       {
696         /* stack grows downward */
697         sp -= DEPRECATED_CALL_DUMMY_STACK_ADJUST;
698       }
699
700   /* Store the address at which the structure is supposed to be
701      written.  */
702   /* NOTE: 2003-03-24: Since PUSH_ARGUMENTS can (and typically does)
703      store the struct return address, this call is entirely redundant.  */
704   if (struct_return && DEPRECATED_STORE_STRUCT_RETURN_P ())
705     DEPRECATED_STORE_STRUCT_RETURN (struct_addr, sp);
706
707   /* Write the stack pointer.  This is here because the statements above
708      might fool with it.  On SPARC, this write also stores the register
709      window into the right place in the new stack frame, which otherwise
710      wouldn't happen.  (See store_inferior_registers in sparc-nat.c.)  */
711   /* NOTE: cagney/2003-03-23: Disable this code when there is a
712      push_dummy_call() method.  Since that method will have already
713      stored the stack pointer (as part of creating the fake call
714      frame), and none of the code following that code adjusts the
715      stack-pointer value, the below call is entirely redundant.  */
716   if (DEPRECATED_DUMMY_WRITE_SP_P ())
717     DEPRECATED_DUMMY_WRITE_SP (sp);
718
719   if (SAVE_DUMMY_FRAME_TOS_P ())
720     SAVE_DUMMY_FRAME_TOS (sp);
721
722   {
723     char *name;
724     struct symbol *symbol;
725
726     name = NULL;
727     symbol = find_pc_function (funaddr);
728     if (symbol)
729       {
730         name = SYMBOL_PRINT_NAME (symbol);
731       }
732     else
733       {
734         /* Try the minimal symbols.  */
735         struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
736
737         if (msymbol)
738           {
739             name = SYMBOL_PRINT_NAME (msymbol);
740           }
741       }
742     if (name == NULL)
743       {
744         char format[80];
745         sprintf (format, "at %s", local_hex_format ());
746         name = alloca (80);
747         /* FIXME-32x64: assumes funaddr fits in a long.  */
748         sprintf (name, format, (unsigned long) funaddr);
749       }
750
751     {
752       /* Execute a "stack dummy", a piece of code stored in the stack
753          by the debugger to be executed in the inferior.
754
755          The dummy's frame is automatically popped whenever that break
756          is hit.  If that is the first time the program stops,
757          call_function_by_hand returns to its caller with that frame
758          already gone and sets RC to 0.
759    
760          Otherwise, set RC to a non-zero value.  If the called
761          function receives a random signal, we do not allow the user
762          to continue executing it as this may not work.  The dummy
763          frame is poped and we return 1.  If we hit a breakpoint, we
764          leave the frame in place and return 2 (the frame will
765          eventually be popped when we do hit the dummy end
766          breakpoint).  */
767
768       struct regcache *buffer = retbuf;
769       struct cleanup *old_cleanups = make_cleanup (null_cleanup, 0);
770       int saved_async = 0;
771       struct breakpoint *bpt;
772       struct symtab_and_line sal;
773
774       /* Now proceed, having reached the desired place.  */
775       clear_proceed_status ();
776
777       init_sal (&sal);          /* initialize to zeroes */
778       sal.pc = bp_addr;
779       sal.section = find_pc_overlay (sal.pc);
780   
781       {
782         /* Set up a frame ID for the dummy frame so we can pass it to
783            set_momentary_breakpoint.  We need to give the breakpoint a
784            frame ID so that the breakpoint code can correctly
785            re-identify the dummy breakpoint.  */
786         struct frame_id frame = frame_id_build (read_fp (), sal.pc);
787         /* Create a momentary breakpoint at the return address of the
788            inferior.  That way it breaks when it returns.  */
789         bpt = set_momentary_breakpoint (sal, frame, bp_call_dummy);
790         bpt->disposition = disp_del;
791       }
792
793       /* If all error()s out of proceed ended up calling normal_stop
794          (and perhaps they should; it already does in the special case
795          of error out of resume()), then we wouldn't need this.  */
796       make_cleanup (breakpoint_auto_delete_contents, &stop_bpstat);
797
798       disable_watchpoints_before_interactive_call_start ();
799       proceed_to_finish = 1;    /* We want stop_registers, please... */
800
801       if (target_can_async_p ())
802         saved_async = target_async_mask (0);
803
804       proceed (real_pc, TARGET_SIGNAL_0, 0);
805
806       if (saved_async)
807         target_async_mask (saved_async);
808       
809       enable_watchpoints_after_interactive_call_stop ();
810       
811       discard_cleanups (old_cleanups);
812   
813       if (stopped_by_random_signal)
814         /* We can stop during an inferior call because a signal is
815            received. */
816         rc = 1;
817       else if (!stop_stack_dummy)
818         /* We may also stop prematurely because we hit a breakpoint in
819            the called routine. */
820         rc = 2;
821       else
822         {
823           /* On normal return, the stack dummy has been popped
824              already.  */
825           regcache_cpy_no_passthrough (buffer, stop_registers);
826           rc = 0;
827         }
828     }
829
830     if (rc == 1)
831       {
832         /* We stopped inside the FUNCTION because of a random signal.
833            Further execution of the FUNCTION is not allowed. */
834
835         if (unwind_on_signal_p)
836           {
837             /* The user wants the context restored. */
838
839             /* We must get back to the frame we were before the dummy
840                call. */
841             frame_pop (get_current_frame ());
842
843             /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
844                a C++ name with arguments and stuff.  */
845             error ("\
846 The program being debugged was signaled while in a function called from GDB.\n\
847 GDB has restored the context to what it was before the call.\n\
848 To change this behavior use \"set unwindonsignal off\"\n\
849 Evaluation of the expression containing the function (%s) will be abandoned.",
850                    name);
851           }
852         else
853           {
854             /* The user wants to stay in the frame where we stopped (default).*/
855
856             /* If we restored the inferior status (via the cleanup),
857                we would print a spurious error message (Unable to
858                restore previously selected frame), would write the
859                registers from the inf_status (which is wrong), and
860                would do other wrong things.  */
861             discard_cleanups (inf_status_cleanup);
862             discard_inferior_status (inf_status);
863
864             /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
865                a C++ name with arguments and stuff.  */
866             error ("\
867 The program being debugged was signaled while in a function called from GDB.\n\
868 GDB remains in the frame where the signal was received.\n\
869 To change this behavior use \"set unwindonsignal on\"\n\
870 Evaluation of the expression containing the function (%s) will be abandoned.",
871                    name);
872           }
873       }
874
875     if (rc == 2)
876       {
877         /* We hit a breakpoint inside the FUNCTION. */
878
879         /* If we restored the inferior status (via the cleanup), we
880            would print a spurious error message (Unable to restore
881            previously selected frame), would write the registers from
882            the inf_status (which is wrong), and would do other wrong
883            things.  */
884         discard_cleanups (inf_status_cleanup);
885         discard_inferior_status (inf_status);
886
887         /* The following error message used to say "The expression
888            which contained the function call has been discarded."  It
889            is a hard concept to explain in a few words.  Ideally, GDB
890            would be able to resume evaluation of the expression when
891            the function finally is done executing.  Perhaps someday
892            this will be implemented (it would not be easy).  */
893
894         /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
895            a C++ name with arguments and stuff.  */
896         error ("\
897 The program being debugged stopped while in a function called from GDB.\n\
898 When the function (%s) is done executing, GDB will silently\n\
899 stop (instead of continuing to evaluate the expression containing\n\
900 the function call).", name);
901       }
902
903     /* If we get here the called FUNCTION run to completion. */
904
905     /* Restore the inferior status, via its cleanup.  At this stage,
906        leave the RETBUF alone.  */
907     do_cleanups (inf_status_cleanup);
908
909     /* Figure out the value returned by the function.  */
910     /* elz: I defined this new macro for the hppa architecture only.
911        this gives us a way to get the value returned by the function
912        from the stack, at the same address we told the function to put
913        it.  We cannot assume on the pa that r28 still contains the
914        address of the returned structure. Usually this will be
915        overwritten by the callee.  I don't know about other
916        architectures, so I defined this macro */
917 #ifdef VALUE_RETURNED_FROM_STACK
918     if (struct_return)
919       {
920         do_cleanups (retbuf_cleanup);
921         return VALUE_RETURNED_FROM_STACK (value_type, struct_addr);
922       }
923 #endif
924     /* NOTE: cagney/2002-09-10: Only when the stack has been correctly
925        aligned (using frame_align()) do we can trust STRUCT_ADDR and
926        fetch the return value direct from the stack.  This lack of
927        trust comes about because legacy targets have a nasty habit of
928        silently, and local to PUSH_ARGUMENTS(), moving STRUCT_ADDR.
929        For such targets, just hope that value_being_returned() can
930        find the adjusted value.  */
931     if (struct_return && gdbarch_frame_align_p (current_gdbarch))
932       {
933         struct value *retval = value_at (value_type, struct_addr, NULL);
934         do_cleanups (retbuf_cleanup);
935         return retval;
936       }
937     else
938       {
939         struct value *retval = value_being_returned (value_type, retbuf,
940                                                      struct_return);
941         do_cleanups (retbuf_cleanup);
942         return retval;
943       }
944   }
945 }
946
947 void _initialize_infcall (void);
948
949 void
950 _initialize_infcall (void)
951 {
952   add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
953                            &coerce_float_to_double_p, "\
954 Set coercion of floats to doubles when calling functions\n\
955 Variables of type float should generally be converted to doubles before\n\
956 calling an unprototyped function, and left alone when calling a prototyped\n\
957 function.  However, some older debug info formats do not provide enough\n\
958 information to determine that a function is prototyped.  If this flag is\n\
959 set, GDB will perform the conversion for a function it considers\n\
960 unprototyped.\n\
961 The default is to perform the conversion.\n", "\
962 Show coercion of floats to doubles when calling functions\n\
963 Variables of type float should generally be converted to doubles before\n\
964 calling an unprototyped function, and left alone when calling a prototyped\n\
965 function.  However, some older debug info formats do not provide enough\n\
966 information to determine that a function is prototyped.  If this flag is\n\
967 set, GDB will perform the conversion for a function it considers\n\
968 unprototyped.\n\
969 The default is to perform the conversion.\n",
970                            NULL, NULL, &setlist, &showlist);
971
972   add_setshow_boolean_cmd ("unwindonsignal", no_class,
973                            &unwind_on_signal_p, "\
974 Set unwinding of stack if a signal is received while in a call dummy.\n\
975 The unwindonsignal lets the user determine what gdb should do if a signal\n\
976 is received while in a function called from gdb (call dummy).  If set, gdb\n\
977 unwinds the stack and restore the context to what as it was before the call.\n\
978 The default is to stop in the frame where the signal was received.", "\
979 Set unwinding of stack if a signal is received while in a call dummy.\n\
980 The unwindonsignal lets the user determine what gdb should do if a signal\n\
981 is received while in a function called from gdb (call dummy).  If set, gdb\n\
982 unwinds the stack and restore the context to what as it was before the call.\n\
983 The default is to stop in the frame where the signal was received.",
984                            NULL, NULL, &setlist, &showlist);
985 }