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