Convert lvalue reference type check to general reference type check
[deliverable/binutils-gdb.git] / gdb / infcall.c
CommitLineData
04714b91
AC
1/* Perform an inferior function call, for GDB, the GNU debugger.
2
61baf725 3 Copyright (C) 1986-2017 Free Software Foundation, Inc.
04714b91
AC
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
04714b91
AC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
04714b91
AC
19
20#include "defs.h"
0700e23e 21#include "infcall.h"
04714b91 22#include "breakpoint.h"
573cda03 23#include "tracepoint.h"
04714b91
AC
24#include "target.h"
25#include "regcache.h"
26#include "inferior.h"
45741a9c 27#include "infrun.h"
04714b91
AC
28#include "block.h"
29#include "gdbcore.h"
30#include "language.h"
9ab9195f 31#include "objfiles.h"
04714b91
AC
32#include "gdbcmd.h"
33#include "command.h"
96860204 34#include "dummy-frame.h"
a93c0eb6 35#include "ada-lang.h"
347bddb7 36#include "gdbthread.h"
beb460e8 37#include "event-top.h"
162078c8 38#include "observer.h"
0b333c5e
PA
39#include "top.h"
40#include "interps.h"
388a7084 41#include "thread-fsm.h"
b89667eb
DE
42
43/* If we can't find a function's name from its address,
44 we print this instead. */
45#define RAW_FUNCTION_ADDRESS_FORMAT "at 0x%s"
46#define RAW_FUNCTION_ADDRESS_SIZE (sizeof (RAW_FUNCTION_ADDRESS_FORMAT) \
47 + 2 * sizeof (CORE_ADDR))
04714b91
AC
48
49/* NOTE: cagney/2003-04-16: What's the future of this code?
50
51 GDB needs an asynchronous expression evaluator, that means an
52 asynchronous inferior function call implementation, and that in
53 turn means restructuring the code so that it is event driven. */
54
55/* How you should pass arguments to a function depends on whether it
56 was defined in K&R style or prototype style. If you define a
57 function using the K&R syntax that takes a `float' argument, then
58 callers must pass that argument as a `double'. If you define the
59 function using the prototype syntax, then you must pass the
60 argument as a `float', with no promotion.
61
62 Unfortunately, on certain older platforms, the debug info doesn't
63 indicate reliably how each function was defined. A function type's
a9ff5f12
UW
64 TYPE_PROTOTYPED flag may be clear, even if the function was defined
65 in prototype style. When calling a function whose TYPE_PROTOTYPED
66 flag is clear, GDB consults this flag to decide what to do.
04714b91
AC
67
68 For modern targets, it is proper to assume that, if the prototype
69 flag is clear, that can be trusted: `float' arguments should be
70 promoted to `double'. For some older targets, if the prototype
71 flag is clear, that doesn't tell us anything. The default is to
72 trust the debug information; the user can override this behavior
73 with "set coerce-float-to-double 0". */
74
75static int coerce_float_to_double_p = 1;
920d2a44
AC
76static void
77show_coerce_float_to_double_p (struct ui_file *file, int from_tty,
78 struct cmd_list_element *c, const char *value)
79{
3e43a32a
MS
80 fprintf_filtered (file,
81 _("Coercion of floats to doubles "
82 "when calling functions is %s.\n"),
920d2a44
AC
83 value);
84}
04714b91
AC
85
86/* This boolean tells what gdb should do if a signal is received while
87 in a function called from gdb (call dummy). If set, gdb unwinds
88 the stack and restore the context to what as it was before the
89 call.
90
1777feb0 91 The default is to stop in the frame where the signal was received. */
04714b91 92
ef61f180 93static int unwind_on_signal_p = 0;
920d2a44
AC
94static void
95show_unwind_on_signal_p (struct ui_file *file, int from_tty,
96 struct cmd_list_element *c, const char *value)
97{
3e43a32a
MS
98 fprintf_filtered (file,
99 _("Unwinding of stack if a signal is "
100 "received while in a call dummy is %s.\n"),
920d2a44
AC
101 value);
102}
103
7cd1089b
PM
104/* This boolean tells what gdb should do if a std::terminate call is
105 made while in a function called from gdb (call dummy).
106 As the confines of a single dummy stack prohibit out-of-frame
107 handlers from handling a raised exception, and as out-of-frame
108 handlers are common in C++, this can lead to no handler being found
109 by the unwinder, and a std::terminate call. This is a false positive.
110 If set, gdb unwinds the stack and restores the context to what it
111 was before the call.
112
113 The default is to unwind the frame if a std::terminate call is
114 made. */
115
116static int unwind_on_terminating_exception_p = 1;
117
118static void
119show_unwind_on_terminating_exception_p (struct ui_file *file, int from_tty,
120 struct cmd_list_element *c,
121 const char *value)
122
123{
3e43a32a
MS
124 fprintf_filtered (file,
125 _("Unwind stack if a C++ exception is "
126 "unhandled while in a call dummy is %s.\n"),
7cd1089b
PM
127 value);
128}
04714b91
AC
129
130/* Perform the standard coercions that are specified
a93c0eb6 131 for arguments to be passed to C or Ada functions.
04714b91
AC
132
133 If PARAM_TYPE is non-NULL, it is the expected parameter type.
a93c0eb6
JB
134 IS_PROTOTYPED is non-zero if the function declaration is prototyped.
135 SP is the stack pointer were additional data can be pushed (updating
136 its value as needed). */
04714b91
AC
137
138static struct value *
7788af6d
UW
139value_arg_coerce (struct gdbarch *gdbarch, struct value *arg,
140 struct type *param_type, int is_prototyped, CORE_ADDR *sp)
04714b91 141{
7788af6d 142 const struct builtin_type *builtin = builtin_type (gdbarch);
df407dfe 143 struct type *arg_type = check_typedef (value_type (arg));
52f0bd74 144 struct type *type
04714b91
AC
145 = param_type ? check_typedef (param_type) : arg_type;
146
a93c0eb6
JB
147 /* Perform any Ada-specific coercion first. */
148 if (current_language->la_language == language_ada)
40bc484c 149 arg = ada_convert_actual (arg, type);
a93c0eb6 150
63092375
DJ
151 /* Force the value to the target if we will need its address. At
152 this point, we could allocate arguments on the stack instead of
153 calling malloc if we knew that their addresses would not be
154 saved by the called function. */
155 arg = value_coerce_to_target (arg);
156
04714b91
AC
157 switch (TYPE_CODE (type))
158 {
159 case TYPE_CODE_REF:
aa006118 160 case TYPE_CODE_RVALUE_REF:
fb933624
DJ
161 {
162 struct value *new_value;
163
aa006118 164 if (TYPE_IS_REFERENCE (arg_type))
b1af9e97 165 return value_cast_pointers (type, arg, 0);
fb933624
DJ
166
167 /* Cast the value to the reference's target type, and then
168 convert it back to a reference. This will issue an error
169 if the value was not previously in memory - in some cases
170 we should clearly be allowing this, but how? */
171 new_value = value_cast (TYPE_TARGET_TYPE (type), arg);
a65cfae5 172 new_value = value_ref (new_value, TYPE_CODE (type));
fb933624
DJ
173 return new_value;
174 }
04714b91
AC
175 case TYPE_CODE_INT:
176 case TYPE_CODE_CHAR:
177 case TYPE_CODE_BOOL:
178 case TYPE_CODE_ENUM:
179 /* If we don't have a prototype, coerce to integer type if necessary. */
180 if (!is_prototyped)
181 {
7788af6d
UW
182 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin->builtin_int))
183 type = builtin->builtin_int;
04714b91
AC
184 }
185 /* Currently all target ABIs require at least the width of an integer
186 type for an argument. We may have to conditionalize the following
187 type coercion for future targets. */
7788af6d
UW
188 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin->builtin_int))
189 type = builtin->builtin_int;
04714b91
AC
190 break;
191 case TYPE_CODE_FLT:
192 if (!is_prototyped && coerce_float_to_double_p)
193 {
7788af6d
UW
194 if (TYPE_LENGTH (type) < TYPE_LENGTH (builtin->builtin_double))
195 type = builtin->builtin_double;
196 else if (TYPE_LENGTH (type) > TYPE_LENGTH (builtin->builtin_double))
197 type = builtin->builtin_long_double;
04714b91
AC
198 }
199 break;
200 case TYPE_CODE_FUNC:
201 type = lookup_pointer_type (type);
202 break;
203 case TYPE_CODE_ARRAY:
204 /* Arrays are coerced to pointers to their first element, unless
205 they are vectors, in which case we want to leave them alone,
206 because they are passed by value. */
207 if (current_language->c_style_arrays)
208 if (!TYPE_VECTOR (type))
209 type = lookup_pointer_type (TYPE_TARGET_TYPE (type));
210 break;
211 case TYPE_CODE_UNDEF:
212 case TYPE_CODE_PTR:
213 case TYPE_CODE_STRUCT:
214 case TYPE_CODE_UNION:
215 case TYPE_CODE_VOID:
216 case TYPE_CODE_SET:
217 case TYPE_CODE_RANGE:
218 case TYPE_CODE_STRING:
04714b91 219 case TYPE_CODE_ERROR:
0d5de010
DJ
220 case TYPE_CODE_MEMBERPTR:
221 case TYPE_CODE_METHODPTR:
04714b91
AC
222 case TYPE_CODE_METHOD:
223 case TYPE_CODE_COMPLEX:
224 default:
225 break;
226 }
227
228 return value_cast (type, arg);
229}
230
07be84bf
JK
231/* Return the return type of a function with its first instruction exactly at
232 the PC address. Return NULL otherwise. */
233
234static struct type *
235find_function_return_type (CORE_ADDR pc)
236{
237 struct symbol *sym = find_pc_function (pc);
238
239 if (sym != NULL && BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) == pc
240 && SYMBOL_TYPE (sym) != NULL)
241 return TYPE_TARGET_TYPE (SYMBOL_TYPE (sym));
242
243 return NULL;
244}
245
04714b91
AC
246/* Determine a function's address and its return type from its value.
247 Calls error() if the function is not valid for calling. */
248
a9fa03de 249CORE_ADDR
04714b91
AC
250find_function_addr (struct value *function, struct type **retval_type)
251{
df407dfe 252 struct type *ftype = check_typedef (value_type (function));
50810684 253 struct gdbarch *gdbarch = get_type_arch (ftype);
7788af6d 254 struct type *value_type = NULL;
09b58708
JK
255 /* Initialize it just to avoid a GCC false warning. */
256 CORE_ADDR funaddr = 0;
04714b91
AC
257
258 /* If it's a member function, just look at the function
259 part of it. */
260
261 /* Determine address to call. */
300f8e10
JK
262 if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
263 || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
264 funaddr = value_address (function);
265 else if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
04714b91
AC
266 {
267 funaddr = value_as_address (function);
268 ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
269 if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
270 || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
300f8e10
JK
271 funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr,
272 &current_target);
04714b91 273 }
300f8e10
JK
274 if (TYPE_CODE (ftype) == TYPE_CODE_FUNC
275 || TYPE_CODE (ftype) == TYPE_CODE_METHOD)
07be84bf
JK
276 {
277 value_type = TYPE_TARGET_TYPE (ftype);
278
279 if (TYPE_GNU_IFUNC (ftype))
280 {
281 funaddr = gnu_ifunc_resolve_addr (gdbarch, funaddr);
282
283 /* Skip querying the function symbol if no RETVAL_TYPE has been
284 asked for. */
285 if (retval_type)
286 value_type = find_function_return_type (funaddr);
287 }
288 }
300f8e10 289 else if (TYPE_CODE (ftype) == TYPE_CODE_INT)
04714b91
AC
290 {
291 /* Handle the case of functions lacking debugging info.
1777feb0 292 Their values are characters since their addresses are char. */
04714b91
AC
293 if (TYPE_LENGTH (ftype) == 1)
294 funaddr = value_as_address (value_addr (function));
295 else
2bbe3cc1
DJ
296 {
297 /* Handle function descriptors lacking debug info. */
298 int found_descriptor = 0;
abbb1732 299
87bc73ea 300 funaddr = 0; /* pacify "gcc -Werror" */
2bbe3cc1
DJ
301 if (VALUE_LVAL (function) == lval_memory)
302 {
303 CORE_ADDR nfunaddr;
abbb1732 304
2bbe3cc1
DJ
305 funaddr = value_as_address (value_addr (function));
306 nfunaddr = funaddr;
50810684 307 funaddr = gdbarch_convert_from_func_ptr_addr (gdbarch, funaddr,
2bbe3cc1
DJ
308 &current_target);
309 if (funaddr != nfunaddr)
310 found_descriptor = 1;
311 }
312 if (!found_descriptor)
313 /* Handle integer used as address of a function. */
314 funaddr = (CORE_ADDR) value_as_long (function);
315 }
04714b91
AC
316 }
317 else
8a3fe4f8 318 error (_("Invalid data type for function to be called."));
04714b91 319
7d9b040b
RC
320 if (retval_type != NULL)
321 *retval_type = value_type;
50810684 322 return funaddr + gdbarch_deprecated_function_start_offset (gdbarch);
04714b91
AC
323}
324
d3712828
AC
325/* For CALL_DUMMY_ON_STACK, push a breakpoint sequence that the called
326 function returns to. */
7043d8dc
AC
327
328static CORE_ADDR
329push_dummy_code (struct gdbarch *gdbarch,
82585c72 330 CORE_ADDR sp, CORE_ADDR funaddr,
7043d8dc
AC
331 struct value **args, int nargs,
332 struct type *value_type,
e4fd649a
UW
333 CORE_ADDR *real_pc, CORE_ADDR *bp_addr,
334 struct regcache *regcache)
7043d8dc 335{
50a834af
MK
336 gdb_assert (gdbarch_push_dummy_code_p (gdbarch));
337
338 return gdbarch_push_dummy_code (gdbarch, sp, funaddr,
339 args, nargs, value_type, real_pc, bp_addr,
340 regcache);
7043d8dc
AC
341}
342
b89667eb
DE
343/* Fetch the name of the function at FUNADDR.
344 This is used in printing an error message for call_function_by_hand.
345 BUF is used to print FUNADDR in hex if the function name cannot be
346 determined. It must be large enough to hold formatted result of
347 RAW_FUNCTION_ADDRESS_FORMAT. */
348
349static const char *
350get_function_name (CORE_ADDR funaddr, char *buf, int buf_size)
351{
352 {
353 struct symbol *symbol = find_pc_function (funaddr);
abbb1732 354
b89667eb
DE
355 if (symbol)
356 return SYMBOL_PRINT_NAME (symbol);
357 }
358
359 {
360 /* Try the minimal symbols. */
7cbd4a93 361 struct bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (funaddr);
abbb1732 362
7cbd4a93 363 if (msymbol.minsym)
efd66ac6 364 return MSYMBOL_PRINT_NAME (msymbol.minsym);
b89667eb
DE
365 }
366
367 {
368 char *tmp = xstrprintf (_(RAW_FUNCTION_ADDRESS_FORMAT),
369 hex_string (funaddr));
abbb1732 370
b89667eb
DE
371 gdb_assert (strlen (tmp) + 1 <= buf_size);
372 strcpy (buf, tmp);
373 xfree (tmp);
374 return buf;
375 }
376}
377
388a7084
PA
378/* All the meta data necessary to extract the call's return value. */
379
380struct call_return_meta_info
381{
382 /* The caller frame's architecture. */
383 struct gdbarch *gdbarch;
384
385 /* The called function. */
386 struct value *function;
387
388 /* The return value's type. */
389 struct type *value_type;
390
391 /* Are we returning a value using a structure return or a normal
392 value return? */
393 int struct_return_p;
394
395 /* If using a structure return, this is the structure's address. */
396 CORE_ADDR struct_addr;
397
398 /* Whether stack temporaries are enabled. */
399 int stack_temporaries_enabled;
400};
401
402/* Extract the called function's return value. */
403
404static struct value *
405get_call_return_value (struct call_return_meta_info *ri)
406{
407 struct value *retval = NULL;
408 int stack_temporaries = thread_stack_temporaries_enabled_p (inferior_ptid);
409
410 if (TYPE_CODE (ri->value_type) == TYPE_CODE_VOID)
411 retval = allocate_value (ri->value_type);
412 else if (ri->struct_return_p)
413 {
414 if (stack_temporaries)
415 {
416 retval = value_from_contents_and_address (ri->value_type, NULL,
417 ri->struct_addr);
418 push_thread_stack_temporary (inferior_ptid, retval);
419 }
420 else
421 {
422 retval = allocate_value (ri->value_type);
423 read_value_memory (retval, 0, 1, ri->struct_addr,
424 value_contents_raw (retval),
425 TYPE_LENGTH (ri->value_type));
426 }
427 }
428 else
429 {
430 retval = allocate_value (ri->value_type);
431 gdbarch_return_value (ri->gdbarch, ri->function, ri->value_type,
432 get_current_regcache (),
433 value_contents_raw (retval), NULL);
434 if (stack_temporaries && class_or_union_p (ri->value_type))
435 {
436 /* Values of class type returned in registers are copied onto
437 the stack and their lval_type set to lval_memory. This is
438 required because further evaluation of the expression
439 could potentially invoke methods on the return value
440 requiring GDB to evaluate the "this" pointer. To evaluate
441 the this pointer, GDB needs the memory address of the
442 value. */
443 value_force_lval (retval, ri->struct_addr);
444 push_thread_stack_temporary (inferior_ptid, retval);
445 }
446 }
447
448 gdb_assert (retval != NULL);
449 return retval;
450}
451
452/* Data for the FSM that manages an infcall. It's main job is to
453 record the called function's return value. */
454
455struct call_thread_fsm
456{
457 /* The base class. */
458 struct thread_fsm thread_fsm;
459
460 /* All the info necessary to be able to extract the return
461 value. */
462 struct call_return_meta_info return_meta_info;
463
464 /* The called function's return value. This is extracted from the
465 target before the dummy frame is popped. */
466 struct value *return_value;
3b12939d
PA
467
468 /* The top level that started the infcall (and is synchronously
469 waiting for it to end). */
470 struct ui *waiting_ui;
388a7084
PA
471};
472
8980e177
PA
473static int call_thread_fsm_should_stop (struct thread_fsm *self,
474 struct thread_info *thread);
388a7084
PA
475static int call_thread_fsm_should_notify_stop (struct thread_fsm *self);
476
477/* call_thread_fsm's vtable. */
478
479static struct thread_fsm_ops call_thread_fsm_ops =
480{
481 NULL, /*dtor */
482 NULL, /* clean_up */
483 call_thread_fsm_should_stop,
484 NULL, /* return_value */
485 NULL, /* async_reply_reason*/
486 call_thread_fsm_should_notify_stop,
487};
488
489/* Allocate a new call_thread_fsm object. */
490
491static struct call_thread_fsm *
8980e177 492new_call_thread_fsm (struct ui *waiting_ui, struct interp *cmd_interp,
3b12939d 493 struct gdbarch *gdbarch, struct value *function,
388a7084
PA
494 struct type *value_type,
495 int struct_return_p, CORE_ADDR struct_addr)
496{
497 struct call_thread_fsm *sm;
498
499 sm = XCNEW (struct call_thread_fsm);
8980e177 500 thread_fsm_ctor (&sm->thread_fsm, &call_thread_fsm_ops, cmd_interp);
388a7084
PA
501
502 sm->return_meta_info.gdbarch = gdbarch;
503 sm->return_meta_info.function = function;
504 sm->return_meta_info.value_type = value_type;
505 sm->return_meta_info.struct_return_p = struct_return_p;
506 sm->return_meta_info.struct_addr = struct_addr;
507
3b12939d
PA
508 sm->waiting_ui = waiting_ui;
509
388a7084
PA
510 return sm;
511}
512
513/* Implementation of should_stop method for infcalls. */
514
515static int
8980e177
PA
516call_thread_fsm_should_stop (struct thread_fsm *self,
517 struct thread_info *thread)
388a7084
PA
518{
519 struct call_thread_fsm *f = (struct call_thread_fsm *) self;
520
521 if (stop_stack_dummy == STOP_STACK_DUMMY)
522 {
523 /* Done. */
524 thread_fsm_set_finished (self);
525
526 /* Stash the return value before the dummy frame is popped and
527 registers are restored to what they were before the
528 call.. */
529 f->return_value = get_call_return_value (&f->return_meta_info);
530
531 /* Break out of wait_sync_command_done. */
4b6749b9 532 scoped_restore save_ui = make_scoped_restore (&current_ui, f->waiting_ui);
3b12939d
PA
533 target_terminal_ours ();
534 f->waiting_ui->prompt_state = PROMPT_NEEDED;
388a7084
PA
535 }
536
537 return 1;
538}
539
540/* Implementation of should_notify_stop method for infcalls. */
541
542static int
543call_thread_fsm_should_notify_stop (struct thread_fsm *self)
544{
545 if (thread_fsm_finished_p (self))
546 {
547 /* Infcall succeeded. Be silent and proceed with evaluating the
548 expression. */
549 return 0;
550 }
551
552 /* Something wrong happened. E.g., an unexpected breakpoint
553 triggered, or a signal was intercepted. Notify the stop. */
554 return 1;
555}
556
b89667eb
DE
557/* Subroutine of call_function_by_hand to simplify it.
558 Start up the inferior and wait for it to stop.
559 Return the exception if there's an error, or an exception with
560 reason >= 0 if there's no error.
561
562 This is done inside a TRY_CATCH so the caller needn't worry about
563 thrown errors. The caller should rethrow if there's an error. */
564
565static struct gdb_exception
388a7084
PA
566run_inferior_call (struct call_thread_fsm *sm,
567 struct thread_info *call_thread, CORE_ADDR real_pc)
b89667eb 568{
492d29ea 569 struct gdb_exception caught_error = exception_none;
16c381f0 570 int saved_in_infcall = call_thread->control.in_infcall;
b89667eb 571 ptid_t call_thread_ptid = call_thread->ptid;
3b12939d 572 enum prompt_state saved_prompt_state = current_ui->prompt_state;
28bf096c 573 int was_running = call_thread->state == THREAD_RUNNING;
cb814510 574 int saved_ui_async = current_ui->async;
c933f875
PA
575
576 /* Infcalls run synchronously, in the foreground. */
3b12939d 577 current_ui->prompt_state = PROMPT_BLOCKED;
0b333c5e
PA
578 /* So that we don't print the prompt prematurely in
579 fetch_inferior_event. */
cb814510 580 current_ui->async = 0;
b89667eb 581
6d61dee5
PA
582 delete_file_handler (current_ui->input_fd);
583
16c381f0 584 call_thread->control.in_infcall = 1;
c5a4d20b 585
70509625 586 clear_proceed_status (0);
b89667eb 587
388a7084
PA
588 /* Associate the FSM with the thread after clear_proceed_status
589 (otherwise it'd clear this FSM), and before anything throws, so
590 we don't leak it (and any resources it manages). */
591 call_thread->thread_fsm = &sm->thread_fsm;
592
b89667eb 593 disable_watchpoints_before_interactive_call_start ();
16c381f0 594
46c03469 595 /* We want to print return value, please... */
16c381f0 596 call_thread->control.proceed_to_finish = 1;
b89667eb 597
492d29ea 598 TRY
3dd5b83d 599 {
64ce06e4 600 proceed (real_pc, GDB_SIGNAL_0);
3dd5b83d
PA
601
602 /* Inferior function calls are always synchronous, even if the
0b333c5e
PA
603 target supports asynchronous execution. */
604 wait_sync_command_done ();
3dd5b83d 605 }
492d29ea
PA
606 CATCH (e, RETURN_MASK_ALL)
607 {
608 caught_error = e;
609 }
610 END_CATCH
b89667eb 611
3b12939d
PA
612 /* If GDB has the prompt blocked before, then ensure that it remains
613 so. normal_stop calls async_enable_stdin, so reset the prompt
614 state again here. In other cases, stdin will be re-enabled by
0b333c5e 615 inferior_event_handler, when an exception is thrown. */
3b12939d 616 current_ui->prompt_state = saved_prompt_state;
6d61dee5
PA
617 if (current_ui->prompt_state == PROMPT_BLOCKED)
618 delete_file_handler (current_ui->input_fd);
619 else
620 ui_register_input_event_handler (current_ui);
cb814510 621 current_ui->async = saved_ui_async;
0b333c5e 622
c5a4d20b
PA
623 /* At this point the current thread may have changed. Refresh
624 CALL_THREAD as it could be invalid if its thread has exited. */
e09875d4 625 call_thread = find_thread_ptid (call_thread_ptid);
b89667eb 626
28bf096c
PA
627 /* If the infcall does NOT succeed, normal_stop will have already
628 finished the thread states. However, on success, normal_stop
629 defers here, so that we can set back the thread states to what
630 they were before the call. Note that we must also finish the
631 state of new threads that might have spawned while the call was
632 running. The main cases to handle are:
633
634 - "(gdb) print foo ()", or any other command that evaluates an
635 expression at the prompt. (The thread was marked stopped before.)
636
637 - "(gdb) break foo if return_false()" or similar cases where we
638 do an infcall while handling an event (while the thread is still
639 marked running). In this example, whether the condition
640 evaluates true and thus we'll present a user-visible stop is
641 decided elsewhere. */
642 if (!was_running
643 && ptid_equal (call_thread_ptid, inferior_ptid)
644 && stop_stack_dummy == STOP_STACK_DUMMY)
645 finish_thread_state (user_visible_resume_ptid (0));
646
b89667eb
DE
647 enable_watchpoints_after_interactive_call_stop ();
648
649 /* Call breakpoint_auto_delete on the current contents of the bpstat
650 of inferior call thread.
651 If all error()s out of proceed ended up calling normal_stop
652 (and perhaps they should; it already does in the special case
653 of error out of resume()), then we wouldn't need this. */
492d29ea 654 if (caught_error.reason < 0)
b89667eb 655 {
c5a4d20b 656 if (call_thread != NULL)
16c381f0 657 breakpoint_auto_delete (call_thread->control.stop_bpstat);
b89667eb
DE
658 }
659
c5a4d20b 660 if (call_thread != NULL)
16c381f0 661 call_thread->control.in_infcall = saved_in_infcall;
c5a4d20b 662
492d29ea 663 return caught_error;
b89667eb
DE
664}
665
aa7d318d
TT
666/* A cleanup function that calls delete_std_terminate_breakpoint. */
667static void
668cleanup_delete_std_terminate_breakpoint (void *ignore)
669{
670 delete_std_terminate_breakpoint ();
671}
672
ed12ef62
JK
673/* See infcall.h. */
674
675struct value *
676call_function_by_hand (struct value *function, int nargs, struct value **args)
677{
678 return call_function_by_hand_dummy (function, nargs, args, NULL, NULL);
679}
680
04714b91
AC
681/* All this stuff with a dummy frame may seem unnecessarily complicated
682 (why not just save registers in GDB?). The purpose of pushing a dummy
683 frame which looks just like a real frame is so that if you call a
684 function and then hit a breakpoint (get a signal, etc), "backtrace"
685 will look right. Whether the backtrace needs to actually show the
686 stack at the time the inferior function was called is debatable, but
687 it certainly needs to not display garbage. So if you are contemplating
688 making dummy frames be different from normal frames, consider that. */
689
690/* Perform a function call in the inferior.
691 ARGS is a vector of values of arguments (NARGS of them).
692 FUNCTION is a value, the function to be called.
693 Returns a value representing what the function returned.
694 May fail to return, if a breakpoint or signal is hit
695 during the execution of the function.
696
1777feb0 697 ARGS is modified to contain coerced values. */
04714b91
AC
698
699struct value *
ed12ef62
JK
700call_function_by_hand_dummy (struct value *function,
701 int nargs, struct value **args,
558e5469 702 dummy_frame_dtor_ftype *dummy_dtor,
ed12ef62 703 void *dummy_dtor_data)
04714b91 704{
52f0bd74 705 CORE_ADDR sp;
41f1b697 706 struct type *values_type, *target_values_type;
18648a37 707 unsigned char struct_return = 0, hidden_first_param_p = 0;
04714b91 708 CORE_ADDR struct_addr = 0;
16c381f0 709 struct infcall_control_state *inf_status;
04714b91 710 struct cleanup *inf_status_cleanup;
16c381f0 711 struct infcall_suspend_state *caller_state;
04714b91 712 CORE_ADDR funaddr;
04714b91 713 CORE_ADDR real_pc;
df407dfe 714 struct type *ftype = check_typedef (value_type (function));
d585e13a 715 CORE_ADDR bp_addr;
96860204 716 struct frame_id dummy_id;
41f1b697 717 struct cleanup *args_cleanup;
0b9dfe2b
MD
718 struct frame_info *frame;
719 struct gdbarch *gdbarch;
aa7d318d 720 struct cleanup *terminate_bp_cleanup;
b89667eb
DE
721 ptid_t call_thread_ptid;
722 struct gdb_exception e;
b89667eb 723 char name_buf[RAW_FUNCTION_ADDRESS_SIZE];
6c659fc2 724 int stack_temporaries = thread_stack_temporaries_enabled_p (inferior_ptid);
04714b91 725
4c850810
DJ
726 if (TYPE_CODE (ftype) == TYPE_CODE_PTR)
727 ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
728
04714b91
AC
729 if (!target_has_execution)
730 noprocess ();
731
573cda03
SS
732 if (get_traceframe_number () >= 0)
733 error (_("May not call functions while looking at trace frames."));
734
949dc678 735 if (execution_direction == EXEC_REVERSE)
c2949be0 736 error (_("Cannot call functions in reverse mode."));
949dc678 737
0b9dfe2b
MD
738 frame = get_current_frame ();
739 gdbarch = get_frame_arch (frame);
740
741 if (!gdbarch_push_dummy_call_p (gdbarch))
2e74121d 742 error (_("This target does not support function calls."));
a86c5fc9 743
b89667eb
DE
744 /* A cleanup for the inferior status.
745 This is only needed while we're preparing the inferior function call. */
16c381f0
JK
746 inf_status = save_infcall_control_state ();
747 inf_status_cleanup
748 = make_cleanup_restore_infcall_control_state (inf_status);
04714b91 749
b89667eb
DE
750 /* Save the caller's registers and other state associated with the
751 inferior itself so that they can be restored once the
96860204
AC
752 callee returns. To allow nested calls the registers are (further
753 down) pushed onto a dummy frame stack. Include a cleanup (which
754 is tossed once the regcache has been pushed). */
16c381f0
JK
755 caller_state = save_infcall_suspend_state ();
756 make_cleanup_restore_infcall_suspend_state (caller_state);
04714b91 757
04714b91 758 /* Ensure that the initial SP is correctly aligned. */
ebc7896c 759 {
0b9dfe2b 760 CORE_ADDR old_sp = get_frame_sp (frame);
abbb1732 761
0b9dfe2b 762 if (gdbarch_frame_align_p (gdbarch))
ebc7896c 763 {
0b9dfe2b 764 sp = gdbarch_frame_align (gdbarch, old_sp);
8b148df9
AC
765 /* NOTE: cagney/2003-08-13: Skip the "red zone". For some
766 ABIs, a function can use memory beyond the inner most stack
767 address. AMD64 called that region the "red zone". Skip at
768 least the "red zone" size before allocating any space on
769 the stack. */
0b9dfe2b
MD
770 if (gdbarch_inner_than (gdbarch, 1, 2))
771 sp -= gdbarch_frame_red_zone_size (gdbarch);
8b148df9 772 else
0b9dfe2b 773 sp += gdbarch_frame_red_zone_size (gdbarch);
8b148df9 774 /* Still aligned? */
0b9dfe2b 775 gdb_assert (sp == gdbarch_frame_align (gdbarch, sp));
ebc7896c
AC
776 /* NOTE: cagney/2002-09-18:
777
778 On a RISC architecture, a void parameterless generic dummy
779 frame (i.e., no parameters, no result) typically does not
780 need to push anything the stack and hence can leave SP and
c48a845b 781 FP. Similarly, a frameless (possibly leaf) function does
ebc7896c
AC
782 not push anything on the stack and, hence, that too can
783 leave FP and SP unchanged. As a consequence, a sequence of
784 void parameterless generic dummy frame calls to frameless
785 functions will create a sequence of effectively identical
786 frames (SP, FP and TOS and PC the same). This, not
787 suprisingly, results in what appears to be a stack in an
788 infinite loop --- when GDB tries to find a generic dummy
789 frame on the internal dummy frame stack, it will always
790 find the first one.
791
792 To avoid this problem, the code below always grows the
793 stack. That way, two dummy frames can never be identical.
794 It does burn a few bytes of stack but that is a small price
795 to pay :-). */
ebc7896c
AC
796 if (sp == old_sp)
797 {
0b9dfe2b 798 if (gdbarch_inner_than (gdbarch, 1, 2))
ebc7896c 799 /* Stack grows down. */
0b9dfe2b 800 sp = gdbarch_frame_align (gdbarch, old_sp - 1);
ebc7896c
AC
801 else
802 /* Stack grows up. */
0b9dfe2b 803 sp = gdbarch_frame_align (gdbarch, old_sp + 1);
ebc7896c 804 }
0e095b7e
JK
805 /* SP may have underflown address zero here from OLD_SP. Memory access
806 functions will probably fail in such case but that is a target's
807 problem. */
ebc7896c
AC
808 }
809 else
a59fe496
AC
810 /* FIXME: cagney/2002-09-18: Hey, you loose!
811
8b148df9
AC
812 Who knows how badly aligned the SP is!
813
814 If the generic dummy frame ends up empty (because nothing is
815 pushed) GDB won't be able to correctly perform back traces.
816 If a target is having trouble with backtraces, first thing to
1777feb0 817 do is add FRAME_ALIGN() to the architecture vector. If that
669fac23 818 fails, try dummy_id().
8b148df9
AC
819
820 If the ABI specifies a "Red Zone" (see the doco) the code
821 below will quietly trash it. */
ebc7896c 822 sp = old_sp;
6c659fc2
SC
823
824 /* Skip over the stack temporaries that might have been generated during
825 the evaluation of an expression. */
826 if (stack_temporaries)
827 {
828 struct value *lastval;
829
830 lastval = get_last_thread_stack_temporary (inferior_ptid);
831 if (lastval != NULL)
832 {
833 CORE_ADDR lastval_addr = value_address (lastval);
834
835 if (gdbarch_inner_than (gdbarch, 1, 2))
836 {
837 gdb_assert (sp >= lastval_addr);
838 sp = lastval_addr;
839 }
840 else
841 {
842 gdb_assert (sp <= lastval_addr);
843 sp = lastval_addr + TYPE_LENGTH (value_type (lastval));
844 }
845
846 if (gdbarch_frame_align_p (gdbarch))
847 sp = gdbarch_frame_align (gdbarch, sp);
848 }
849 }
ebc7896c 850 }
04714b91 851
df407dfe 852 funaddr = find_function_addr (function, &values_type);
7788af6d
UW
853 if (!values_type)
854 values_type = builtin_type (gdbarch)->builtin_int;
855
f168693b 856 values_type = check_typedef (values_type);
04714b91 857
41f1b697
DJ
858 /* Are we returning a value using a structure return (passing a
859 hidden argument pointing to storage) or a normal value return?
860 There are two cases: language-mandated structure return and
861 target ABI structure return. The variable STRUCT_RETURN only
862 describes the latter. The language version is handled by passing
863 the return location as the first parameter to the function,
864 even preceding "this". This is different from the target
865 ABI version, which is target-specific; for instance, on ia64
866 the first argument is passed in out0 but the hidden structure
867 return pointer would normally be passed in r8. */
868
18648a37 869 if (gdbarch_return_in_first_hidden_param_p (gdbarch, values_type))
41f1b697 870 {
18648a37 871 hidden_first_param_p = 1;
04714b91 872
41f1b697
DJ
873 /* Tell the target specific argument pushing routine not to
874 expect a value. */
48319d1f 875 target_values_type = builtin_type (gdbarch)->builtin_void;
41f1b697
DJ
876 }
877 else
878 {
6a3a010b 879 struct_return = using_struct_return (gdbarch, function, values_type);
41f1b697
DJ
880 target_values_type = values_type;
881 }
04714b91 882
162078c8
NB
883 observer_notify_inferior_call_pre (inferior_ptid, funaddr);
884
7043d8dc
AC
885 /* Determine the location of the breakpoint (and possibly other
886 stuff) that the called function will return to. The SPARC, for a
887 function returning a structure or union, needs to make space for
888 not just the breakpoint but also an extra word containing the
889 size (?) of the structure being passed. */
890
0b9dfe2b 891 switch (gdbarch_call_dummy_location (gdbarch))
04714b91
AC
892 {
893 case ON_STACK:
a14dd77e
JK
894 {
895 const gdb_byte *bp_bytes;
896 CORE_ADDR bp_addr_as_address;
897 int bp_size;
898
899 /* Be careful BP_ADDR is in inferior PC encoding while
900 BP_ADDR_AS_ADDRESS is a plain memory address. */
901
902 sp = push_dummy_code (gdbarch, sp, funaddr, args, nargs,
903 target_values_type, &real_pc, &bp_addr,
904 get_current_regcache ());
905
906 /* Write a legitimate instruction at the point where the infcall
907 breakpoint is going to be inserted. While this instruction
908 is never going to be executed, a user investigating the
909 memory from GDB would see this instruction instead of random
910 uninitialized bytes. We chose the breakpoint instruction
911 as it may look as the most logical one to the user and also
912 valgrind 3.7.0 needs it for proper vgdb inferior calls.
913
914 If software breakpoints are unsupported for this target we
915 leave the user visible memory content uninitialized. */
916
917 bp_addr_as_address = bp_addr;
918 bp_bytes = gdbarch_breakpoint_from_pc (gdbarch, &bp_addr_as_address,
919 &bp_size);
920 if (bp_bytes != NULL)
921 write_memory (bp_addr_as_address, bp_bytes, bp_size);
922 }
7043d8dc 923 break;
5931a2fa
JK
924 case AT_ENTRY_POINT:
925 {
926 CORE_ADDR dummy_addr;
927
928 real_pc = funaddr;
929 dummy_addr = entry_point_address ();
a14dd77e 930
5931a2fa 931 /* A call dummy always consists of just a single breakpoint, so
a14dd77e
JK
932 its address is the same as the address of the dummy.
933
934 The actual breakpoint is inserted separatly so there is no need to
935 write that out. */
5931a2fa
JK
936 bp_addr = dummy_addr;
937 break;
938 }
04714b91 939 default:
e2e0b3e5 940 internal_error (__FILE__, __LINE__, _("bad switch"));
04714b91
AC
941 }
942
04714b91 943 if (nargs < TYPE_NFIELDS (ftype))
2e74121d 944 error (_("Too few arguments in function call."));
04714b91 945
ebc7896c
AC
946 {
947 int i;
abbb1732 948
ebc7896c
AC
949 for (i = nargs - 1; i >= 0; i--)
950 {
951 int prototyped;
952 struct type *param_type;
953
954 /* FIXME drow/2002-05-31: Should just always mark methods as
955 prototyped. Can we respect TYPE_VARARGS? Probably not. */
956 if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
957 prototyped = 1;
958 else if (i < TYPE_NFIELDS (ftype))
959 prototyped = TYPE_PROTOTYPED (ftype);
960 else
961 prototyped = 0;
962
963 if (i < TYPE_NFIELDS (ftype))
964 param_type = TYPE_FIELD_TYPE (ftype, i);
965 else
966 param_type = NULL;
41f1b697 967
7788af6d
UW
968 args[i] = value_arg_coerce (gdbarch, args[i],
969 param_type, prototyped, &sp);
ebc7896c 970
41f1b697
DJ
971 if (param_type != NULL && language_pass_by_reference (param_type))
972 args[i] = value_addr (args[i]);
ebc7896c
AC
973 }
974 }
04714b91 975
04714b91
AC
976 /* Reserve space for the return structure to be written on the
977 stack, if necessary. Make certain that the value is correctly
6c659fc2
SC
978 aligned.
979
980 While evaluating expressions, we reserve space on the stack for
981 return values of class type even if the language ABI and the target
982 ABI do not require that the return value be passed as a hidden first
983 argument. This is because we want to store the return value as an
984 on-stack temporary while the expression is being evaluated. This
985 enables us to have chained function calls in expressions.
04714b91 986
6c659fc2
SC
987 Keeping the return values as on-stack temporaries while the expression
988 is being evaluated is OK because the thread is stopped until the
989 expression is completely evaluated. */
990
991 if (struct_return || hidden_first_param_p
992 || (stack_temporaries && class_or_union_p (values_type)))
04714b91 993 {
0b9dfe2b 994 if (gdbarch_inner_than (gdbarch, 1, 2))
04714b91
AC
995 {
996 /* Stack grows downward. Align STRUCT_ADDR and SP after
997 making space for the return value. */
744a8059 998 sp -= TYPE_LENGTH (values_type);
0b9dfe2b
MD
999 if (gdbarch_frame_align_p (gdbarch))
1000 sp = gdbarch_frame_align (gdbarch, sp);
04714b91
AC
1001 struct_addr = sp;
1002 }
1003 else
1004 {
1005 /* Stack grows upward. Align the frame, allocate space, and
1777feb0 1006 then again, re-align the frame??? */
0b9dfe2b
MD
1007 if (gdbarch_frame_align_p (gdbarch))
1008 sp = gdbarch_frame_align (gdbarch, sp);
04714b91 1009 struct_addr = sp;
744a8059 1010 sp += TYPE_LENGTH (values_type);
0b9dfe2b
MD
1011 if (gdbarch_frame_align_p (gdbarch))
1012 sp = gdbarch_frame_align (gdbarch, sp);
04714b91
AC
1013 }
1014 }
1015
18648a37 1016 if (hidden_first_param_p)
41f1b697
DJ
1017 {
1018 struct value **new_args;
1019
1020 /* Add the new argument to the front of the argument list. */
8d749320 1021 new_args = XNEWVEC (struct value *, nargs + 1);
41f1b697
DJ
1022 new_args[0] = value_from_pointer (lookup_pointer_type (values_type),
1023 struct_addr);
1024 memcpy (&new_args[1], &args[0], sizeof (struct value *) * nargs);
1025 args = new_args;
1026 nargs++;
1027 args_cleanup = make_cleanup (xfree, args);
1028 }
1029 else
1030 args_cleanup = make_cleanup (null_cleanup, NULL);
1031
04714b91
AC
1032 /* Create the dummy stack frame. Pass in the call dummy address as,
1033 presumably, the ABI code knows where, in the call dummy, the
1034 return address should be pointed. */
0b9dfe2b
MD
1035 sp = gdbarch_push_dummy_call (gdbarch, function, get_current_regcache (),
1036 bp_addr, nargs, args,
594f7785 1037 sp, struct_return, struct_addr);
04714b91 1038
41f1b697
DJ
1039 do_cleanups (args_cleanup);
1040
96860204
AC
1041 /* Set up a frame ID for the dummy frame so we can pass it to
1042 set_momentary_breakpoint. We need to give the breakpoint a frame
1043 ID so that the breakpoint code can correctly re-identify the
1044 dummy breakpoint. */
8241eaa6 1045 /* Sanity. The exact same SP value is returned by PUSH_DUMMY_CALL,
669fac23 1046 saved as the dummy-frame TOS, and used by dummy_id to form
8241eaa6 1047 the frame ID's stack address. */
96860204 1048 dummy_id = frame_id_build (sp, bp_addr);
04714b91 1049
74cfe982
AC
1050 /* Create a momentary breakpoint at the return address of the
1051 inferior. That way it breaks when it returns. */
04714b91 1052
74cfe982 1053 {
e2e4d78b 1054 struct breakpoint *bpt, *longjmp_b;
74cfe982 1055 struct symtab_and_line sal;
abbb1732 1056
74cfe982 1057 init_sal (&sal); /* initialize to zeroes */
6c95b8df 1058 sal.pspace = current_program_space;
74cfe982
AC
1059 sal.pc = bp_addr;
1060 sal.section = find_pc_overlay (sal.pc);
8241eaa6
AC
1061 /* Sanity. The exact same SP value is returned by
1062 PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by
669fac23 1063 dummy_id to form the frame ID's stack address. */
a6d9a66e 1064 bpt = set_momentary_breakpoint (gdbarch, sal, dummy_id, bp_call_dummy);
c70a6932
JK
1065
1066 /* set_momentary_breakpoint invalidates FRAME. */
1067 frame = NULL;
1068
74cfe982 1069 bpt->disposition = disp_del;
e2e4d78b
JK
1070 gdb_assert (bpt->related_breakpoint == bpt);
1071
1072 longjmp_b = set_longjmp_breakpoint_for_call_dummy ();
1073 if (longjmp_b)
1074 {
1075 /* Link BPT into the chain of LONGJMP_B. */
1076 bpt->related_breakpoint = longjmp_b;
1077 while (longjmp_b->related_breakpoint != bpt->related_breakpoint)
1078 longjmp_b = longjmp_b->related_breakpoint;
1079 longjmp_b->related_breakpoint = bpt;
1080 }
74cfe982 1081 }
04714b91 1082
7cd1089b
PM
1083 /* Create a breakpoint in std::terminate.
1084 If a C++ exception is raised in the dummy-frame, and the
1085 exception handler is (normally, and expected to be) out-of-frame,
1086 the default C++ handler will (wrongly) be called in an inferior
1087 function call. This is wrong, as an exception can be normally
1088 and legally handled out-of-frame. The confines of the dummy frame
1089 prevent the unwinder from finding the correct handler (or any
1090 handler, unless it is in-frame). The default handler calls
1091 std::terminate. This will kill the inferior. Assert that
1092 terminate should never be called in an inferior function
1093 call. Place a momentary breakpoint in the std::terminate function
1094 and if triggered in the call, rewind. */
1095 if (unwind_on_terminating_exception_p)
aa7d318d 1096 set_std_terminate_breakpoint ();
7cd1089b 1097
8a6c4031
JK
1098 /* Discard both inf_status and caller_state cleanups.
1099 From this point on we explicitly restore the associated state
1100 or discard it. */
1101 discard_cleanups (inf_status_cleanup);
1102
96860204
AC
1103 /* Everything's ready, push all the info needed to restore the
1104 caller (and identify the dummy-frame) onto the dummy-frame
1105 stack. */
b67a2c6f 1106 dummy_frame_push (caller_state, &dummy_id, inferior_ptid);
ed12ef62
JK
1107 if (dummy_dtor != NULL)
1108 register_dummy_frame_dtor (dummy_id, inferior_ptid,
1109 dummy_dtor, dummy_dtor_data);
b89667eb 1110
7cd1089b 1111 /* Register a clean-up for unwind_on_terminating_exception_breakpoint. */
aa7d318d
TT
1112 terminate_bp_cleanup = make_cleanup (cleanup_delete_std_terminate_breakpoint,
1113 NULL);
7cd1089b 1114
96860204
AC
1115 /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP -
1116 If you're looking to implement asynchronous dummy-frames, then
1117 just below is the place to chop this function in two.. */
1118
b89667eb
DE
1119 /* TP is invalid after run_inferior_call returns, so enclose this
1120 in a block so that it's only in scope during the time it's valid. */
74cfe982 1121 {
32400beb 1122 struct thread_info *tp = inferior_thread ();
388a7084
PA
1123 struct thread_fsm *saved_sm;
1124 struct call_thread_fsm *sm;
1125
1126 /* Save the current FSM. We'll override it. */
1127 saved_sm = tp->thread_fsm;
1128 tp->thread_fsm = NULL;
74cfe982 1129
b89667eb
DE
1130 /* Save this thread's ptid, we need it later but the thread
1131 may have exited. */
1132 call_thread_ptid = tp->ptid;
74cfe982 1133
b89667eb 1134 /* Run the inferior until it stops. */
f5871ec0 1135
388a7084
PA
1136 /* Create the FSM used to manage the infcall. It tells infrun to
1137 not report the stop to the user, and captures the return value
1138 before the dummy frame is popped. run_inferior_call registers
1139 it with the thread ASAP. */
8980e177 1140 sm = new_call_thread_fsm (current_ui, command_interp (),
3b12939d 1141 gdbarch, function,
388a7084
PA
1142 values_type,
1143 struct_return || hidden_first_param_p,
1144 struct_addr);
1145
1146 e = run_inferior_call (sm, tp, real_pc);
1147
1148 observer_notify_inferior_call_post (call_thread_ptid, funaddr);
1149
1150 tp = find_thread_ptid (call_thread_ptid);
1151 if (tp != NULL)
1152 {
1153 /* The FSM should still be the same. */
1154 gdb_assert (tp->thread_fsm == &sm->thread_fsm);
1155
1156 if (thread_fsm_finished_p (tp->thread_fsm))
1157 {
1158 struct value *retval;
1159
1160 /* The inferior call is successful. Pop the dummy frame,
1161 which runs its destructors and restores the inferior's
1162 suspend state, and restore the inferior control
1163 state. */
1164 dummy_frame_pop (dummy_id, call_thread_ptid);
1165 restore_infcall_control_state (inf_status);
1166
1167 /* Get the return value. */
1168 retval = sm->return_value;
1169
1170 /* Clean up / destroy the call FSM, and restore the
1171 original one. */
8980e177 1172 thread_fsm_clean_up (tp->thread_fsm, tp);
388a7084
PA
1173 thread_fsm_delete (tp->thread_fsm);
1174 tp->thread_fsm = saved_sm;
04714b91 1175
388a7084
PA
1176 maybe_remove_breakpoints ();
1177
1178 do_cleanups (terminate_bp_cleanup);
1179 gdb_assert (retval != NULL);
1180 return retval;
1181 }
1182
1183 /* Didn't complete. Restore previous state machine, and
1184 handle the error. */
1185 tp->thread_fsm = saved_sm;
1186 }
1187 }
162078c8 1188
b89667eb
DE
1189 /* Rethrow an error if we got one trying to run the inferior. */
1190
1191 if (e.reason < 0)
1192 {
1193 const char *name = get_function_name (funaddr,
1194 name_buf, sizeof (name_buf));
1195
16c381f0 1196 discard_infcall_control_state (inf_status);
b89667eb
DE
1197
1198 /* We could discard the dummy frame here if the program exited,
1199 but it will get garbage collected the next time the program is
1200 run anyway. */
1201
1202 switch (e.reason)
1203 {
1204 case RETURN_ERROR:
ac74f770
MS
1205 throw_error (e.error, _("%s\n\
1206An error occurred while in a function called from GDB.\n\
1207Evaluation of the expression containing the function\n\
1208(%s) will be abandoned.\n\
1209When the function is done executing, GDB will silently stop."),
b89667eb
DE
1210 e.message, name);
1211 case RETURN_QUIT:
1212 default:
1213 throw_exception (e);
1214 }
1215 }
1216
1217 /* If the program has exited, or we stopped at a different thread,
1218 exit and inform the user. */
1219
de04a248
DE
1220 if (! target_has_execution)
1221 {
b89667eb
DE
1222 const char *name = get_function_name (funaddr,
1223 name_buf, sizeof (name_buf));
1224
1225 /* If we try to restore the inferior status,
de04a248 1226 we'll crash as the inferior is no longer running. */
16c381f0 1227 discard_infcall_control_state (inf_status);
b89667eb
DE
1228
1229 /* We could discard the dummy frame here given that the program exited,
1230 but it will get garbage collected the next time the program is
1231 run anyway. */
1232
3e43a32a
MS
1233 error (_("The program being debugged exited while in a function "
1234 "called from GDB.\n"
1235 "Evaluation of the expression containing the function\n"
1236 "(%s) will be abandoned."),
b89667eb
DE
1237 name);
1238 }
1239
1240 if (! ptid_equal (call_thread_ptid, inferior_ptid))
1241 {
1242 const char *name = get_function_name (funaddr,
1243 name_buf, sizeof (name_buf));
1244
1245 /* We've switched threads. This can happen if another thread gets a
1246 signal or breakpoint while our thread was running.
1247 There's no point in restoring the inferior status,
1248 we're in a different thread. */
16c381f0 1249 discard_infcall_control_state (inf_status);
b89667eb
DE
1250 /* Keep the dummy frame record, if the user switches back to the
1251 thread with the hand-call, we'll need it. */
1252 if (stopped_by_random_signal)
ac74f770
MS
1253 error (_("\
1254The program received a signal in another thread while\n\
1255making a function call from GDB.\n\
1256Evaluation of the expression containing the function\n\
1257(%s) will be abandoned.\n\
1258When the function is done executing, GDB will silently stop."),
b89667eb
DE
1259 name);
1260 else
ac74f770
MS
1261 error (_("\
1262The program stopped in another thread while making a function call from GDB.\n\
1263Evaluation of the expression containing the function\n\
1264(%s) will be abandoned.\n\
1265When the function is done executing, GDB will silently stop."),
b89667eb 1266 name);
de04a248
DE
1267 }
1268
52557533 1269 {
5fe75eec
JK
1270 /* Make a copy as NAME may be in an objfile freed by dummy_frame_pop. */
1271 char *name = xstrdup (get_function_name (funaddr,
1272 name_buf, sizeof (name_buf)));
1273 make_cleanup (xfree, name);
1274
b89667eb 1275
52557533
AC
1276 if (stopped_by_random_signal)
1277 {
1278 /* We stopped inside the FUNCTION because of a random
1279 signal. Further execution of the FUNCTION is not
1777feb0 1280 allowed. */
04714b91 1281
52557533
AC
1282 if (unwind_on_signal_p)
1283 {
1777feb0 1284 /* The user wants the context restored. */
52557533
AC
1285
1286 /* We must get back to the frame we were before the
b89667eb 1287 dummy call. */
b67a2c6f 1288 dummy_frame_pop (dummy_id, call_thread_ptid);
b89667eb
DE
1289
1290 /* We also need to restore inferior status to that before the
1291 dummy call. */
16c381f0 1292 restore_infcall_control_state (inf_status);
04714b91 1293
52557533
AC
1294 /* FIXME: Insert a bunch of wrap_here; name can be very
1295 long if it's a C++ name with arguments and stuff. */
ac74f770
MS
1296 error (_("\
1297The program being debugged was signaled while in a function called from GDB.\n\
1298GDB has restored the context to what it was before the call.\n\
1299To change this behavior use \"set unwindonsignal off\".\n\
1300Evaluation of the expression containing the function\n\
1301(%s) will be abandoned."),
52557533
AC
1302 name);
1303 }
1304 else
1305 {
1306 /* The user wants to stay in the frame where we stopped
b89667eb
DE
1307 (default).
1308 Discard inferior status, we're not at the same point
1309 we started at. */
16c381f0 1310 discard_infcall_control_state (inf_status);
b89667eb 1311
52557533
AC
1312 /* FIXME: Insert a bunch of wrap_here; name can be very
1313 long if it's a C++ name with arguments and stuff. */
ac74f770
MS
1314 error (_("\
1315The program being debugged was signaled while in a function called from GDB.\n\
1316GDB remains in the frame where the signal was received.\n\
1317To change this behavior use \"set unwindonsignal on\".\n\
1318Evaluation of the expression containing the function\n\
1319(%s) will be abandoned.\n\
1320When the function is done executing, GDB will silently stop."),
52557533
AC
1321 name);
1322 }
1323 }
04714b91 1324
aa7d318d 1325 if (stop_stack_dummy == STOP_STD_TERMINATE)
52557533 1326 {
aa7d318d
TT
1327 /* We must get back to the frame we were before the dummy
1328 call. */
b67a2c6f 1329 dummy_frame_pop (dummy_id, call_thread_ptid);
7cd1089b 1330
aa7d318d
TT
1331 /* We also need to restore inferior status to that before
1332 the dummy call. */
16c381f0 1333 restore_infcall_control_state (inf_status);
aa7d318d 1334
ac74f770
MS
1335 error (_("\
1336The program being debugged entered a std::terminate call, most likely\n\
1337caused by an unhandled C++ exception. GDB blocked this call in order\n\
1338to prevent the program from being terminated, and has restored the\n\
1339context to its original state before the call.\n\
1340To change this behaviour use \"set unwind-on-terminating-exception off\".\n\
1341Evaluation of the expression containing the function (%s)\n\
1342will be abandoned."),
aa7d318d
TT
1343 name);
1344 }
1345 else if (stop_stack_dummy == STOP_NONE)
1346 {
1347
b89667eb
DE
1348 /* We hit a breakpoint inside the FUNCTION.
1349 Keep the dummy frame, the user may want to examine its state.
1350 Discard inferior status, we're not at the same point
1351 we started at. */
16c381f0 1352 discard_infcall_control_state (inf_status);
b89667eb 1353
52557533
AC
1354 /* The following error message used to say "The expression
1355 which contained the function call has been discarded."
1356 It is a hard concept to explain in a few words. Ideally,
1357 GDB would be able to resume evaluation of the expression
1358 when the function finally is done executing. Perhaps
1359 someday this will be implemented (it would not be easy). */
1360 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1361 a C++ name with arguments and stuff. */
ac74f770
MS
1362 error (_("\
1363The program being debugged stopped while in a function called from GDB.\n\
1364Evaluation of the expression containing the function\n\
1365(%s) will be abandoned.\n\
1366When the function is done executing, GDB will silently stop."),
b89667eb 1367 name);
52557533
AC
1368 }
1369
52557533 1370 }
04714b91 1371
388a7084
PA
1372 /* The above code errors out, so ... */
1373 gdb_assert_not_reached ("... should not be here");
04714b91 1374}
1a4d7a36 1375\f
04714b91 1376
1a4d7a36 1377/* Provide a prototype to silence -Wmissing-prototypes. */
04714b91
AC
1378void _initialize_infcall (void);
1379
1380void
1381_initialize_infcall (void)
1382{
1383 add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
7915a72c
AC
1384 &coerce_float_to_double_p, _("\
1385Set coercion of floats to doubles when calling functions."), _("\
1386Show coercion of floats to doubles when calling functions"), _("\
04714b91
AC
1387Variables of type float should generally be converted to doubles before\n\
1388calling an unprototyped function, and left alone when calling a prototyped\n\
1389function. However, some older debug info formats do not provide enough\n\
1390information to determine that a function is prototyped. If this flag is\n\
1391set, GDB will perform the conversion for a function it considers\n\
1392unprototyped.\n\
7915a72c 1393The default is to perform the conversion.\n"),
2c5b56ce 1394 NULL,
920d2a44 1395 show_coerce_float_to_double_p,
2c5b56ce 1396 &setlist, &showlist);
04714b91
AC
1397
1398 add_setshow_boolean_cmd ("unwindonsignal", no_class,
7915a72c
AC
1399 &unwind_on_signal_p, _("\
1400Set unwinding of stack if a signal is received while in a call dummy."), _("\
1401Show unwinding of stack if a signal is received while in a call dummy."), _("\
04714b91
AC
1402The unwindonsignal lets the user determine what gdb should do if a signal\n\
1403is received while in a function called from gdb (call dummy). If set, gdb\n\
1404unwinds the stack and restore the context to what as it was before the call.\n\
7915a72c 1405The default is to stop in the frame where the signal was received."),
2c5b56ce 1406 NULL,
920d2a44 1407 show_unwind_on_signal_p,
2c5b56ce 1408 &setlist, &showlist);
7cd1089b
PM
1409
1410 add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
1411 &unwind_on_terminating_exception_p, _("\
1412Set unwinding of stack if std::terminate is called while in call dummy."), _("\
3e43a32a
MS
1413Show unwinding of stack if std::terminate() is called while in a call dummy."),
1414 _("\
7cd1089b
PM
1415The unwind on terminating exception flag lets the user determine\n\
1416what gdb should do if a std::terminate() call is made from the\n\
1417default exception handler. If set, gdb unwinds the stack and restores\n\
1418the context to what it was before the call. If unset, gdb allows the\n\
1419std::terminate call to proceed.\n\
1420The default is to unwind the frame."),
1421 NULL,
1422 show_unwind_on_terminating_exception_p,
1423 &setlist, &showlist);
1424
04714b91 1425}
This page took 1.301054 seconds and 4 git commands to generate.