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