]> Git Repo - binutils.git/blob - gdb/infcall.c
2003-04-23 Andrew Cagney <[email protected]>
[binutils.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   int rc;
241   CORE_ADDR start_sp;
242   /* CALL_DUMMY is an array of words (REGISTER_SIZE), but each word
243      is in host byte order.  Before calling FIX_CALL_DUMMY, we byteswap it
244      and remove any extra bytes which might exist because ULONGEST is
245      bigger than REGISTER_SIZE.
246
247      NOTE: This is pretty wierd, as the call dummy is actually a
248      sequence of instructions.  But CISC machines will have
249      to pack the instructions into REGISTER_SIZE units (and
250      so will RISC machines for which INSTRUCTION_SIZE is not
251      REGISTER_SIZE).
252
253      NOTE: This is pretty stupid.  CALL_DUMMY should be in strict
254      target byte order. */
255
256   static ULONGEST *dummy;
257   int sizeof_dummy1;
258   char *dummy1;
259   CORE_ADDR dummy_addr;
260   struct type *value_type;
261   unsigned char struct_return;
262   CORE_ADDR struct_addr = 0;
263   struct regcache *retbuf;
264   struct cleanup *retbuf_cleanup;
265   struct inferior_status *inf_status;
266   struct cleanup *inf_status_cleanup;
267   CORE_ADDR funaddr;
268   int using_gcc;                /* Set to version of gcc in use, or zero if not gcc */
269   CORE_ADDR real_pc;
270   struct type *ftype = check_typedef (SYMBOL_TYPE (function));
271   CORE_ADDR bp_addr;
272
273   dummy = alloca (SIZEOF_CALL_DUMMY_WORDS);
274   sizeof_dummy1 = REGISTER_SIZE * SIZEOF_CALL_DUMMY_WORDS / sizeof (ULONGEST);
275   dummy1 = alloca (sizeof_dummy1);
276   memcpy (dummy, CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS);
277
278   if (!target_has_execution)
279     noprocess ();
280
281   /* Create a cleanup chain that contains the retbuf (buffer
282      containing the register values).  This chain is create BEFORE the
283      inf_status chain so that the inferior status can cleaned up
284      (restored or discarded) without having the retbuf freed.  */
285   retbuf = regcache_xmalloc (current_gdbarch);
286   retbuf_cleanup = make_cleanup_regcache_xfree (retbuf);
287
288   /* A cleanup for the inferior status.  Create this AFTER the retbuf
289      so that this can be discarded or applied without interfering with
290      the regbuf.  */
291   inf_status = save_inferior_status (1);
292   inf_status_cleanup = make_cleanup_restore_inferior_status (inf_status);
293
294   if (DEPRECATED_PUSH_DUMMY_FRAME_P ())
295     {
296       /* DEPRECATED_PUSH_DUMMY_FRAME is responsible for saving the
297          inferior registers (and frame_pop() for restoring them).  (At
298          least on most machines) they are saved on the stack in the
299          inferior.  */
300       DEPRECATED_PUSH_DUMMY_FRAME;
301     }
302   else
303     {
304       /* FIXME: cagney/2003-02-26: Step zero of this little tinker is
305       to extract the generic dummy frame code from the architecture
306       vector.  Hence this direct call.
307
308       A follow-on change is to modify this interface so that it takes
309       thread OR frame OR tpid as a parameter, and returns a dummy
310       frame handle.  The handle can then be used further down as a
311       parameter SAVE_DUMMY_FRAME_TOS.  Hmm, thinking about it, since
312       everything is ment to be using generic dummy frames, why not
313       even use some of the dummy frame code to here - do a regcache
314       dup and then pass the duped regcache, along with all the other
315       stuff, at one single point.
316
317       In fact, you can even save the structure's return address in the
318       dummy frame and fix one of those nasty lost struct return edge
319       conditions.  */
320       generic_push_dummy_frame ();
321     }
322
323   /* Ensure that the initial SP is correctly aligned.  */
324   {
325     CORE_ADDR old_sp = read_sp ();
326     if (gdbarch_frame_align_p (current_gdbarch))
327       {
328         /* NOTE: cagney/2002-09-18:
329            
330            On a RISC architecture, a void parameterless generic dummy
331            frame (i.e., no parameters, no result) typically does not
332            need to push anything the stack and hence can leave SP and
333            FP.  Similarly, a framelss (possibly leaf) function does
334            not push anything on the stack and, hence, that too can
335            leave FP and SP unchanged.  As a consequence, a sequence of
336            void parameterless generic dummy frame calls to frameless
337            functions will create a sequence of effectively identical
338            frames (SP, FP and TOS and PC the same).  This, not
339            suprisingly, results in what appears to be a stack in an
340            infinite loop --- when GDB tries to find a generic dummy
341            frame on the internal dummy frame stack, it will always
342            find the first one.
343
344            To avoid this problem, the code below always grows the
345            stack.  That way, two dummy frames can never be identical.
346            It does burn a few bytes of stack but that is a small price
347            to pay :-).  */
348         sp = gdbarch_frame_align (current_gdbarch, old_sp);
349         if (sp == old_sp)
350           {
351             if (INNER_THAN (1, 2))
352               /* Stack grows down.  */
353               sp = gdbarch_frame_align (current_gdbarch, old_sp - 1);
354             else
355               /* Stack grows up.  */
356               sp = gdbarch_frame_align (current_gdbarch, old_sp + 1);
357           }
358         gdb_assert ((INNER_THAN (1, 2) && sp <= old_sp)
359                     || (INNER_THAN (2, 1) && sp >= old_sp));
360       }
361     else
362       /* FIXME: cagney/2002-09-18: Hey, you loose!  Who knows how
363          badly aligned the SP is!  Further, per comment above, if the
364          generic dummy frame ends up empty (because nothing is pushed)
365          GDB won't be able to correctly perform back traces.  If a
366          target is having trouble with backtraces, first thing to do
367          is add FRAME_ALIGN() to its architecture vector.  After that,
368          try adding SAVE_DUMMY_FRAME_TOS() and modifying
369          DEPRECATED_FRAME_CHAIN so that when the next outer frame is a
370          generic dummy, it returns the current frame's base.  */
371       sp = old_sp;
372   }
373
374   if (INNER_THAN (1, 2))
375     {
376       /* Stack grows down */
377       sp -= sizeof_dummy1;
378       start_sp = sp;
379     }
380   else
381     {
382       /* Stack grows up */
383       start_sp = sp;
384       sp += sizeof_dummy1;
385     }
386
387   /* NOTE: cagney/2002-09-10: Don't bother re-adjusting the stack
388      after allocating space for the call dummy.  A target can specify
389      a SIZEOF_DUMMY1 (via SIZEOF_CALL_DUMMY_WORDS) such that all local
390      alignment requirements are met.  */
391
392   funaddr = find_function_addr (function, &value_type);
393   CHECK_TYPEDEF (value_type);
394
395   {
396     struct block *b = block_for_pc (funaddr);
397     /* If compiled without -g, assume GCC 2.  */
398     using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b));
399   }
400
401   /* Are we returning a value using a structure return or a normal
402      value return? */
403
404   struct_return = using_struct_return (function, funaddr, value_type,
405                                        using_gcc);
406
407   /* Create a call sequence customized for this function
408      and the number of arguments for it.  */
409   {
410     int i;
411     for (i = 0; i < (int) (SIZEOF_CALL_DUMMY_WORDS / sizeof (dummy[0])); i++)
412       store_unsigned_integer (&dummy1[i * REGISTER_SIZE],
413                               REGISTER_SIZE,
414                               (ULONGEST) dummy[i]);
415   }
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   if (nargs < TYPE_NFIELDS (ftype))
465     error ("too few arguments in function call");
466
467   {
468     int i;
469     for (i = nargs - 1; i >= 0; i--)
470       {
471         int prototyped;
472         struct type *param_type;
473         
474         /* FIXME drow/2002-05-31: Should just always mark methods as
475            prototyped.  Can we respect TYPE_VARARGS?  Probably not.  */
476         if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
477           prototyped = 1;
478         else if (i < TYPE_NFIELDS (ftype))
479           prototyped = TYPE_PROTOTYPED (ftype);
480         else
481           prototyped = 0;
482
483         if (i < TYPE_NFIELDS (ftype))
484           param_type = TYPE_FIELD_TYPE (ftype, i);
485         else
486           param_type = NULL;
487         
488         args[i] = value_arg_coerce (args[i], param_type, prototyped);
489
490         /* elz: this code is to handle the case in which the function
491            to be called has a pointer to function as parameter and the
492            corresponding actual argument is the address of a function
493            and not a pointer to function variable.  In aCC compiled
494            code, the calls through pointers to functions (in the body
495            of the function called by hand) are made via
496            $$dyncall_external which requires some registers setting,
497            this is taken care of if we call via a function pointer
498            variable, but not via a function address.  In cc this is
499            not a problem. */
500
501         if (using_gcc == 0)
502           {
503             if (param_type != NULL && TYPE_CODE (ftype) != TYPE_CODE_METHOD)
504               {
505                 /* if this parameter is a pointer to function.  */
506                 if (TYPE_CODE (param_type) == TYPE_CODE_PTR)
507                   if (TYPE_CODE (TYPE_TARGET_TYPE (param_type)) == TYPE_CODE_FUNC)
508                     /* elz: FIXME here should go the test about the
509                        compiler used to compile the target. We want to
510                        issue the error message only if the compiler
511                        used was HP's aCC.  If we used HP's cc, then
512                        there is no problem and no need to return at
513                        this point.  */
514                     /* Go see if the actual parameter is a variable of
515                        type pointer to function or just a function.  */
516                     if (args[i]->lval == not_lval)
517                       {
518                         char *arg_name;
519                         if (find_pc_partial_function ((CORE_ADDR) args[i]->aligner.contents[0], &arg_name, NULL, NULL))
520                           error ("\
521 You cannot use function <%s> as argument. \n\
522 You must use a pointer to function type variable. Command ignored.", arg_name);
523                       }
524               }
525           }
526       }
527   }
528
529   if (REG_STRUCT_HAS_ADDR_P ())
530     {
531       int i;
532       /* This is a machine like the sparc, where we may need to pass a
533          pointer to the structure, not the structure itself.  */
534       for (i = nargs - 1; i >= 0; i--)
535         {
536           struct type *arg_type = check_typedef (VALUE_TYPE (args[i]));
537           if ((TYPE_CODE (arg_type) == TYPE_CODE_STRUCT
538                || TYPE_CODE (arg_type) == TYPE_CODE_UNION
539                || TYPE_CODE (arg_type) == TYPE_CODE_ARRAY
540                || TYPE_CODE (arg_type) == TYPE_CODE_STRING
541                || TYPE_CODE (arg_type) == TYPE_CODE_BITSTRING
542                || TYPE_CODE (arg_type) == TYPE_CODE_SET
543                || (TYPE_CODE (arg_type) == TYPE_CODE_FLT
544                    && TYPE_LENGTH (arg_type) > 8)
545                )
546               && REG_STRUCT_HAS_ADDR (using_gcc, arg_type))
547             {
548               CORE_ADDR addr;
549               int len;          /*  = TYPE_LENGTH (arg_type); */
550               int aligned_len;
551               arg_type = check_typedef (VALUE_ENCLOSING_TYPE (args[i]));
552               len = TYPE_LENGTH (arg_type);
553
554               if (STACK_ALIGN_P ())
555                 /* MVS 11/22/96: I think at least some of this
556                    stack_align code is really broken.  Better to let
557                    PUSH_ARGUMENTS adjust the stack in a target-defined
558                    manner.  */
559                 aligned_len = STACK_ALIGN (len);
560               else
561                 aligned_len = len;
562               if (INNER_THAN (1, 2))
563                 {
564                   /* stack grows downward */
565                   sp -= aligned_len;
566                   /* ... so the address of the thing we push is the
567                      stack pointer after we push it.  */
568                   addr = sp;
569                 }
570               else
571                 {
572                   /* The stack grows up, so the address of the thing
573                      we push is the stack pointer before we push it.  */
574                   addr = sp;
575                   sp += aligned_len;
576                 }
577               /* Push the structure.  */
578               write_memory (addr, VALUE_CONTENTS_ALL (args[i]), len);
579               /* The value we're going to pass is the address of the
580                  thing we just pushed.  */
581               /*args[i] = value_from_longest (lookup_pointer_type (value_type),
582                 (LONGEST) addr); */
583               args[i] = value_from_pointer (lookup_pointer_type (arg_type),
584                                             addr);
585             }
586         }
587     }
588
589
590   /* Reserve space for the return structure to be written on the
591      stack, if necessary.  Make certain that the value is correctly
592      aligned. */
593
594   if (struct_return)
595     {
596       int len = TYPE_LENGTH (value_type);
597       if (STACK_ALIGN_P ())
598         /* NOTE: cagney/2003-03-22: Should rely on frame align, rather
599            than stack align to force the alignment of the stack.  */
600         len = STACK_ALIGN (len);
601       if (INNER_THAN (1, 2))
602         {
603           /* Stack grows downward.  Align STRUCT_ADDR and SP after
604              making space for the return value.  */
605           sp -= len;
606           if (gdbarch_frame_align_p (current_gdbarch))
607             sp = gdbarch_frame_align (current_gdbarch, sp);
608           struct_addr = sp;
609         }
610       else
611         {
612           /* Stack grows upward.  Align the frame, allocate space, and
613              then again, re-align the frame??? */
614           if (gdbarch_frame_align_p (current_gdbarch))
615             sp = gdbarch_frame_align (current_gdbarch, sp);
616           struct_addr = sp;
617           sp += len;
618           if (gdbarch_frame_align_p (current_gdbarch))
619             sp = gdbarch_frame_align (current_gdbarch, sp);
620         }
621     }
622
623   /* elz: on HPPA no need for this extra alignment, maybe it is needed
624      on other architectures. This is because all the alignment is
625      taken care of in the above code (ifdef REG_STRUCT_HAS_ADDR) and
626      in hppa_push_arguments */
627   /* NOTE: cagney/2003-03-24: The below code is very broken.  Given an
628      odd sized parameter the below will mis-align the stack.  As was
629      suggested back in '96, better to let PUSH_ARGUMENTS handle it.  */
630   if (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED)
631     {
632       /* MVS 11/22/96: I think at least some of this stack_align code
633          is really broken.  Better to let push_dummy_call() adjust the
634          stack in a target-defined manner.  */
635       if (STACK_ALIGN_P () && INNER_THAN (1, 2))
636         {
637           /* If stack grows down, we must leave a hole at the top. */
638           int len = 0;
639           int i;
640           for (i = nargs - 1; i >= 0; i--)
641             len += TYPE_LENGTH (VALUE_ENCLOSING_TYPE (args[i]));
642           if (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P ())
643             len += DEPRECATED_CALL_DUMMY_STACK_ADJUST;
644           sp -= STACK_ALIGN (len) - len;
645         }
646     }
647
648   /* Create the dummy stack frame.  Pass in the call dummy address as,
649      presumably, the ABI code knows where, in the call dummy, the
650      return address should be pointed.  */
651   if (gdbarch_push_dummy_call_p (current_gdbarch))
652     /* When there is no push_dummy_call method, should this code
653        simply error out.  That would the implementation of this method
654        for all ABIs (which is probably a good thing).  */
655     sp = gdbarch_push_dummy_call (current_gdbarch, current_regcache,
656                                   dummy_addr, nargs, args, sp, struct_return,
657                                   struct_addr);
658   else  if (DEPRECATED_PUSH_ARGUMENTS_P ())
659     /* Keep old targets working.  */
660     sp = DEPRECATED_PUSH_ARGUMENTS (nargs, args, sp, struct_return,
661                                     struct_addr);
662   else
663     sp = legacy_push_arguments (nargs, args, sp, struct_return, struct_addr);
664
665   if (DEPRECATED_PUSH_RETURN_ADDRESS_P ())
666     /* for targets that use no CALL_DUMMY */
667     /* There are a number of targets now which actually don't write
668        any CALL_DUMMY instructions into the target, but instead just
669        save the machine state, push the arguments, and jump directly
670        to the callee function.  Since this doesn't actually involve
671        executing a JSR/BSR instruction, the return address must be set
672        up by hand, either by pushing onto the stack or copying into a
673        return-address register as appropriate.  Formerly this has been
674        done in PUSH_ARGUMENTS, but that's overloading its
675        functionality a bit, so I'm making it explicit to do it here.  */
676     /* NOTE: cagney/2003-04-22: The first parameter ("real_pc") has
677        been replaced with zero, it turns out that no implementation
678        used that parameter.  This occured because the value being
679        supplied - the address of the called function's entry point
680        instead of the address of the breakpoint that the called
681        function should return to - wasn't useful.  */
682     sp = DEPRECATED_PUSH_RETURN_ADDRESS (0, sp);
683
684   /* NOTE: cagney/2003-03-23: Diable this code when there is a
685      push_dummy_call() method.  Since that method will have already
686      handled any alignment issues, the code below is entirely
687      redundant.  */
688   if (!gdbarch_push_dummy_call_p (current_gdbarch)
689       && STACK_ALIGN_P () && !INNER_THAN (1, 2))
690     {
691       /* If stack grows up, we must leave a hole at the bottom, note
692          that sp already has been advanced for the arguments!  */
693       if (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P ())
694         sp += DEPRECATED_CALL_DUMMY_STACK_ADJUST;
695       sp = STACK_ALIGN (sp);
696     }
697
698 /* XXX This seems wrong.  For stacks that grow down we shouldn't do
699    anything here!  */
700   /* MVS 11/22/96: I think at least some of this stack_align code is
701      really broken.  Better to let PUSH_ARGUMENTS adjust the stack in
702      a target-defined manner.  */
703   if (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P ())
704     if (INNER_THAN (1, 2))
705       {
706         /* stack grows downward */
707         sp -= DEPRECATED_CALL_DUMMY_STACK_ADJUST;
708       }
709
710   /* Store the address at which the structure is supposed to be
711      written.  */
712   /* NOTE: 2003-03-24: Since PUSH_ARGUMENTS can (and typically does)
713      store the struct return address, this call is entirely redundant.  */
714   if (struct_return && DEPRECATED_STORE_STRUCT_RETURN_P ())
715     DEPRECATED_STORE_STRUCT_RETURN (struct_addr, sp);
716
717   /* Write the stack pointer.  This is here because the statements above
718      might fool with it.  On SPARC, this write also stores the register
719      window into the right place in the new stack frame, which otherwise
720      wouldn't happen.  (See store_inferior_registers in sparc-nat.c.)  */
721   /* NOTE: cagney/2003-03-23: Disable this code when there is a
722      push_dummy_call() method.  Since that method will have already
723      stored the stack pointer (as part of creating the fake call
724      frame), and none of the code following that code adjusts the
725      stack-pointer value, the below call is entirely redundant.  */
726   if (DEPRECATED_DUMMY_WRITE_SP_P ())
727     DEPRECATED_DUMMY_WRITE_SP (sp);
728
729   if (SAVE_DUMMY_FRAME_TOS_P ())
730     SAVE_DUMMY_FRAME_TOS (sp);
731
732   {
733     char *name;
734     struct symbol *symbol;
735
736     name = NULL;
737     symbol = find_pc_function (funaddr);
738     if (symbol)
739       {
740         name = SYMBOL_PRINT_NAME (symbol);
741       }
742     else
743       {
744         /* Try the minimal symbols.  */
745         struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (funaddr);
746
747         if (msymbol)
748           {
749             name = SYMBOL_PRINT_NAME (msymbol);
750           }
751       }
752     if (name == NULL)
753       {
754         char format[80];
755         sprintf (format, "at %s", local_hex_format ());
756         name = alloca (80);
757         /* FIXME-32x64: assumes funaddr fits in a long.  */
758         sprintf (name, format, (unsigned long) funaddr);
759       }
760
761     {
762       /* Execute a "stack dummy", a piece of code stored in the stack
763          by the debugger to be executed in the inferior.
764
765          The dummy's frame is automatically popped whenever that break
766          is hit.  If that is the first time the program stops,
767          call_function_by_hand returns to its caller with that frame
768          already gone and sets RC to 0.
769    
770          Otherwise, set RC to a non-zero value.  If the called
771          function receives a random signal, we do not allow the user
772          to continue executing it as this may not work.  The dummy
773          frame is poped and we return 1.  If we hit a breakpoint, we
774          leave the frame in place and return 2 (the frame will
775          eventually be popped when we do hit the dummy end
776          breakpoint).  */
777
778       struct regcache *buffer = retbuf;
779       struct cleanup *old_cleanups = make_cleanup (null_cleanup, 0);
780       int saved_async = 0;
781
782       /* Now proceed, having reached the desired place.  */
783       clear_proceed_status ();
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;
790         struct symtab_and_line sal;
791         struct frame_id frame;
792         init_sal (&sal);                /* initialize to zeroes */
793         sal.pc = bp_addr;
794         sal.section = find_pc_overlay (sal.pc);
795         /* Set up a frame ID for the dummy frame so we can pass it to
796            set_momentary_breakpoint.  We need to give the breakpoint a
797            frame ID so that the breakpoint code can correctly
798            re-identify the dummy breakpoint.  */
799         frame = frame_id_build (read_fp (), sal.pc);
800         bpt = set_momentary_breakpoint (sal, frame, bp_call_dummy);
801         bpt->disposition = disp_del;
802       }
803
804       /* If all error()s out of proceed ended up calling normal_stop
805          (and perhaps they should; it already does in the special case
806          of error out of resume()), then we wouldn't need this.  */
807       make_cleanup (breakpoint_auto_delete_contents, &stop_bpstat);
808
809       disable_watchpoints_before_interactive_call_start ();
810       proceed_to_finish = 1;    /* We want stop_registers, please... */
811
812       if (target_can_async_p ())
813         saved_async = target_async_mask (0);
814
815       proceed (real_pc, TARGET_SIGNAL_0, 0);
816
817       if (saved_async)
818         target_async_mask (saved_async);
819       
820       enable_watchpoints_after_interactive_call_stop ();
821       
822       discard_cleanups (old_cleanups);
823   
824       if (stopped_by_random_signal)
825         /* We can stop during an inferior call because a signal is
826            received. */
827         rc = 1;
828       else if (!stop_stack_dummy)
829         /* We may also stop prematurely because we hit a breakpoint in
830            the called routine. */
831         rc = 2;
832       else
833         {
834           /* On normal return, the stack dummy has been popped
835              already.  */
836           regcache_cpy_no_passthrough (buffer, stop_registers);
837           rc = 0;
838         }
839     }
840
841     if (rc == 1)
842       {
843         /* We stopped inside the FUNCTION because of a random signal.
844            Further execution of the FUNCTION is not allowed. */
845
846         if (unwind_on_signal_p)
847           {
848             /* The user wants the context restored. */
849
850             /* We must get back to the frame we were before the dummy
851                call. */
852             frame_pop (get_current_frame ());
853
854             /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
855                a C++ name with arguments and stuff.  */
856             error ("\
857 The program being debugged was signaled while in a function called from GDB.\n\
858 GDB has restored the context to what it was before the call.\n\
859 To change this behavior use \"set unwindonsignal off\"\n\
860 Evaluation of the expression containing the function (%s) will be abandoned.",
861                    name);
862           }
863         else
864           {
865             /* The user wants to stay in the frame where we stopped (default).*/
866
867             /* If we restored the inferior status (via the cleanup),
868                we would print a spurious error message (Unable to
869                restore previously selected frame), would write the
870                registers from the inf_status (which is wrong), and
871                would do other wrong things.  */
872             discard_cleanups (inf_status_cleanup);
873             discard_inferior_status (inf_status);
874
875             /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
876                a C++ name with arguments and stuff.  */
877             error ("\
878 The program being debugged was signaled while in a function called from GDB.\n\
879 GDB remains in the frame where the signal was received.\n\
880 To change this behavior use \"set unwindonsignal on\"\n\
881 Evaluation of the expression containing the function (%s) will be abandoned.",
882                    name);
883           }
884       }
885
886     if (rc == 2)
887       {
888         /* We hit a breakpoint inside the FUNCTION. */
889
890         /* If we restored the inferior status (via the cleanup), we
891            would print a spurious error message (Unable to restore
892            previously selected frame), would write the registers from
893            the inf_status (which is wrong), and would do other wrong
894            things.  */
895         discard_cleanups (inf_status_cleanup);
896         discard_inferior_status (inf_status);
897
898         /* The following error message used to say "The expression
899            which contained the function call has been discarded."  It
900            is a hard concept to explain in a few words.  Ideally, GDB
901            would be able to resume evaluation of the expression when
902            the function finally is done executing.  Perhaps someday
903            this will be implemented (it would not be easy).  */
904
905         /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
906            a C++ name with arguments and stuff.  */
907         error ("\
908 The program being debugged stopped while in a function called from GDB.\n\
909 When the function (%s) is done executing, GDB will silently\n\
910 stop (instead of continuing to evaluate the expression containing\n\
911 the function call).", name);
912       }
913
914     /* If we get here the called FUNCTION run to completion. */
915
916     /* Restore the inferior status, via its cleanup.  At this stage,
917        leave the RETBUF alone.  */
918     do_cleanups (inf_status_cleanup);
919
920     /* Figure out the value returned by the function.  */
921     /* elz: I defined this new macro for the hppa architecture only.
922        this gives us a way to get the value returned by the function
923        from the stack, at the same address we told the function to put
924        it.  We cannot assume on the pa that r28 still contains the
925        address of the returned structure. Usually this will be
926        overwritten by the callee.  I don't know about other
927        architectures, so I defined this macro */
928 #ifdef VALUE_RETURNED_FROM_STACK
929     if (struct_return)
930       {
931         do_cleanups (retbuf_cleanup);
932         return VALUE_RETURNED_FROM_STACK (value_type, struct_addr);
933       }
934 #endif
935     /* NOTE: cagney/2002-09-10: Only when the stack has been correctly
936        aligned (using frame_align()) do we can trust STRUCT_ADDR and
937        fetch the return value direct from the stack.  This lack of
938        trust comes about because legacy targets have a nasty habit of
939        silently, and local to PUSH_ARGUMENTS(), moving STRUCT_ADDR.
940        For such targets, just hope that value_being_returned() can
941        find the adjusted value.  */
942     if (struct_return && gdbarch_frame_align_p (current_gdbarch))
943       {
944         struct value *retval = value_at (value_type, struct_addr, NULL);
945         do_cleanups (retbuf_cleanup);
946         return retval;
947       }
948     else
949       {
950         struct value *retval = value_being_returned (value_type, retbuf,
951                                                      struct_return);
952         do_cleanups (retbuf_cleanup);
953         return retval;
954       }
955   }
956 }
957
958 void _initialize_infcall (void);
959
960 void
961 _initialize_infcall (void)
962 {
963   add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
964                            &coerce_float_to_double_p, "\
965 Set coercion of floats to doubles when calling functions\n\
966 Variables of type float should generally be converted to doubles before\n\
967 calling an unprototyped function, and left alone when calling a prototyped\n\
968 function.  However, some older debug info formats do not provide enough\n\
969 information to determine that a function is prototyped.  If this flag is\n\
970 set, GDB will perform the conversion for a function it considers\n\
971 unprototyped.\n\
972 The default is to perform the conversion.\n", "\
973 Show coercion of floats to doubles when calling functions\n\
974 Variables of type float should generally be converted to doubles before\n\
975 calling an unprototyped function, and left alone when calling a prototyped\n\
976 function.  However, some older debug info formats do not provide enough\n\
977 information to determine that a function is prototyped.  If this flag is\n\
978 set, GDB will perform the conversion for a function it considers\n\
979 unprototyped.\n\
980 The default is to perform the conversion.\n",
981                            NULL, NULL, &setlist, &showlist);
982
983   add_setshow_boolean_cmd ("unwindonsignal", no_class,
984                            &unwind_on_signal_p, "\
985 Set unwinding of stack if a signal is received while in a call dummy.\n\
986 The unwindonsignal lets the user determine what gdb should do if a signal\n\
987 is received while in a function called from gdb (call dummy).  If set, gdb\n\
988 unwinds the stack and restore the context to what as it was before the call.\n\
989 The default is to stop in the frame where the signal was received.", "\
990 Set unwinding of stack if a signal is received while in a call dummy.\n\
991 The unwindonsignal lets the user determine what gdb should do if a signal\n\
992 is received while in a function called from gdb (call dummy).  If set, gdb\n\
993 unwinds the stack and restore the context to what as it was before the call.\n\
994 The default is to stop in the frame where the signal was received.",
995                            NULL, NULL, &setlist, &showlist);
996 }
This page took 0.084114 seconds and 4 git commands to generate.