]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/infcall.c
[MIPS] Add load-link, store-conditional paired instructions
[thirdparty/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{
cc06b668 571 struct gdb_exception caught_error;
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
a70b8144 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 }
94aeb44b 608 catch (gdb_exception &e)
492d29ea 609 {
94aeb44b 610 caught_error = std::move (e);
492d29ea 611 }
b89667eb 612
3b12939d
PA
613 /* If GDB has the prompt blocked before, then ensure that it remains
614 so. normal_stop calls async_enable_stdin, so reset the prompt
615 state again here. In other cases, stdin will be re-enabled by
0b333c5e 616 inferior_event_handler, when an exception is thrown. */
3b12939d 617 current_ui->prompt_state = saved_prompt_state;
6d61dee5
PA
618 if (current_ui->prompt_state == PROMPT_BLOCKED)
619 delete_file_handler (current_ui->input_fd);
620 else
621 ui_register_input_event_handler (current_ui);
cb814510 622 current_ui->async = saved_ui_async;
0b333c5e 623
28bf096c
PA
624 /* If the infcall does NOT succeed, normal_stop will have already
625 finished the thread states. However, on success, normal_stop
626 defers here, so that we can set back the thread states to what
627 they were before the call. Note that we must also finish the
628 state of new threads that might have spawned while the call was
629 running. The main cases to handle are:
630
631 - "(gdb) print foo ()", or any other command that evaluates an
632 expression at the prompt. (The thread was marked stopped before.)
633
634 - "(gdb) break foo if return_false()" or similar cases where we
635 do an infcall while handling an event (while the thread is still
636 marked running). In this example, whether the condition
637 evaluates true and thus we'll present a user-visible stop is
638 decided elsewhere. */
639 if (!was_running
00431a78 640 && call_thread_ptid == inferior_ptid
28bf096c
PA
641 && stop_stack_dummy == STOP_STACK_DUMMY)
642 finish_thread_state (user_visible_resume_ptid (0));
643
b89667eb
DE
644 enable_watchpoints_after_interactive_call_stop ();
645
646 /* Call breakpoint_auto_delete on the current contents of the bpstat
647 of inferior call thread.
648 If all error()s out of proceed ended up calling normal_stop
649 (and perhaps they should; it already does in the special case
650 of error out of resume()), then we wouldn't need this. */
492d29ea 651 if (caught_error.reason < 0)
b89667eb 652 {
00431a78 653 if (call_thread->state != THREAD_EXITED)
16c381f0 654 breakpoint_auto_delete (call_thread->control.stop_bpstat);
b89667eb
DE
655 }
656
00431a78 657 call_thread->control.in_infcall = saved_in_infcall;
c5a4d20b 658
492d29ea 659 return caught_error;
b89667eb
DE
660}
661
ed12ef62
JK
662/* See infcall.h. */
663
664struct value *
7022349d
PA
665call_function_by_hand (struct value *function,
666 type *default_return_type,
e71585ff 667 gdb::array_view<value *> args)
ed12ef62 668{
7022349d 669 return call_function_by_hand_dummy (function, default_return_type,
e71585ff 670 args, NULL, NULL);
ed12ef62
JK
671}
672
04714b91
AC
673/* All this stuff with a dummy frame may seem unnecessarily complicated
674 (why not just save registers in GDB?). The purpose of pushing a dummy
675 frame which looks just like a real frame is so that if you call a
676 function and then hit a breakpoint (get a signal, etc), "backtrace"
677 will look right. Whether the backtrace needs to actually show the
678 stack at the time the inferior function was called is debatable, but
679 it certainly needs to not display garbage. So if you are contemplating
680 making dummy frames be different from normal frames, consider that. */
681
682/* Perform a function call in the inferior.
683 ARGS is a vector of values of arguments (NARGS of them).
684 FUNCTION is a value, the function to be called.
685 Returns a value representing what the function returned.
686 May fail to return, if a breakpoint or signal is hit
687 during the execution of the function.
688
1777feb0 689 ARGS is modified to contain coerced values. */
04714b91
AC
690
691struct value *
ed12ef62 692call_function_by_hand_dummy (struct value *function,
7022349d 693 type *default_return_type,
e71585ff 694 gdb::array_view<value *> args,
558e5469 695 dummy_frame_dtor_ftype *dummy_dtor,
ed12ef62 696 void *dummy_dtor_data)
04714b91 697{
52f0bd74 698 CORE_ADDR sp;
8388016d 699 struct type *target_values_type;
c5ac5cbb 700 function_call_return_method return_method = return_method_normal;
04714b91 701 CORE_ADDR struct_addr = 0;
04714b91 702 CORE_ADDR real_pc;
d585e13a 703 CORE_ADDR bp_addr;
96860204 704 struct frame_id dummy_id;
0b9dfe2b
MD
705 struct frame_info *frame;
706 struct gdbarch *gdbarch;
b89667eb
DE
707 ptid_t call_thread_ptid;
708 struct gdb_exception e;
b89667eb 709 char name_buf[RAW_FUNCTION_ADDRESS_SIZE];
04714b91 710
04714b91
AC
711 if (!target_has_execution)
712 noprocess ();
713
573cda03
SS
714 if (get_traceframe_number () >= 0)
715 error (_("May not call functions while looking at trace frames."));
716
949dc678 717 if (execution_direction == EXEC_REVERSE)
c2949be0 718 error (_("Cannot call functions in reverse mode."));
949dc678 719
00431a78
PA
720 /* We're going to run the target, and inspect the thread's state
721 afterwards. Hold a strong reference so that the pointer remains
722 valid even if the thread exits. */
723 thread_info_ref call_thread
724 = thread_info_ref::new_reference (inferior_thread ());
725
726 bool stack_temporaries = thread_stack_temporaries_enabled_p (call_thread.get ());
727
0b9dfe2b
MD
728 frame = get_current_frame ();
729 gdbarch = get_frame_arch (frame);
730
731 if (!gdbarch_push_dummy_call_p (gdbarch))
2e74121d 732 error (_("This target does not support function calls."));
a86c5fc9 733
c7c4d3fa 734 /* A holder for the inferior status.
b89667eb 735 This is only needed while we're preparing the inferior function call. */
c7c4d3fa 736 infcall_control_state_up inf_status (save_infcall_control_state ());
04714b91 737
b89667eb
DE
738 /* Save the caller's registers and other state associated with the
739 inferior itself so that they can be restored once the
96860204 740 callee returns. To allow nested calls the registers are (further
c7c4d3fa
TT
741 down) pushed onto a dummy frame stack. This unique pointer
742 is released once the regcache has been pushed). */
743 infcall_suspend_state_up caller_state (save_infcall_suspend_state ());
04714b91 744
04714b91 745 /* Ensure that the initial SP is correctly aligned. */
ebc7896c 746 {
0b9dfe2b 747 CORE_ADDR old_sp = get_frame_sp (frame);
abbb1732 748
0b9dfe2b 749 if (gdbarch_frame_align_p (gdbarch))
ebc7896c 750 {
0b9dfe2b 751 sp = gdbarch_frame_align (gdbarch, old_sp);
8b148df9
AC
752 /* NOTE: cagney/2003-08-13: Skip the "red zone". For some
753 ABIs, a function can use memory beyond the inner most stack
754 address. AMD64 called that region the "red zone". Skip at
755 least the "red zone" size before allocating any space on
756 the stack. */
0b9dfe2b
MD
757 if (gdbarch_inner_than (gdbarch, 1, 2))
758 sp -= gdbarch_frame_red_zone_size (gdbarch);
8b148df9 759 else
0b9dfe2b 760 sp += gdbarch_frame_red_zone_size (gdbarch);
8b148df9 761 /* Still aligned? */
0b9dfe2b 762 gdb_assert (sp == gdbarch_frame_align (gdbarch, sp));
ebc7896c
AC
763 /* NOTE: cagney/2002-09-18:
764
765 On a RISC architecture, a void parameterless generic dummy
766 frame (i.e., no parameters, no result) typically does not
767 need to push anything the stack and hence can leave SP and
c48a845b 768 FP. Similarly, a frameless (possibly leaf) function does
ebc7896c
AC
769 not push anything on the stack and, hence, that too can
770 leave FP and SP unchanged. As a consequence, a sequence of
771 void parameterless generic dummy frame calls to frameless
772 functions will create a sequence of effectively identical
773 frames (SP, FP and TOS and PC the same). This, not
774 suprisingly, results in what appears to be a stack in an
775 infinite loop --- when GDB tries to find a generic dummy
776 frame on the internal dummy frame stack, it will always
777 find the first one.
778
779 To avoid this problem, the code below always grows the
780 stack. That way, two dummy frames can never be identical.
781 It does burn a few bytes of stack but that is a small price
782 to pay :-). */
ebc7896c
AC
783 if (sp == old_sp)
784 {
0b9dfe2b 785 if (gdbarch_inner_than (gdbarch, 1, 2))
ebc7896c 786 /* Stack grows down. */
0b9dfe2b 787 sp = gdbarch_frame_align (gdbarch, old_sp - 1);
ebc7896c
AC
788 else
789 /* Stack grows up. */
0b9dfe2b 790 sp = gdbarch_frame_align (gdbarch, old_sp + 1);
ebc7896c 791 }
0e095b7e
JK
792 /* SP may have underflown address zero here from OLD_SP. Memory access
793 functions will probably fail in such case but that is a target's
794 problem. */
ebc7896c
AC
795 }
796 else
a59fe496
AC
797 /* FIXME: cagney/2002-09-18: Hey, you loose!
798
8b148df9
AC
799 Who knows how badly aligned the SP is!
800
801 If the generic dummy frame ends up empty (because nothing is
802 pushed) GDB won't be able to correctly perform back traces.
803 If a target is having trouble with backtraces, first thing to
1777feb0 804 do is add FRAME_ALIGN() to the architecture vector. If that
669fac23 805 fails, try dummy_id().
8b148df9
AC
806
807 If the ABI specifies a "Red Zone" (see the doco) the code
808 below will quietly trash it. */
ebc7896c 809 sp = old_sp;
6c659fc2
SC
810
811 /* Skip over the stack temporaries that might have been generated during
812 the evaluation of an expression. */
813 if (stack_temporaries)
814 {
815 struct value *lastval;
816
00431a78 817 lastval = get_last_thread_stack_temporary (call_thread.get ());
6c659fc2
SC
818 if (lastval != NULL)
819 {
820 CORE_ADDR lastval_addr = value_address (lastval);
821
822 if (gdbarch_inner_than (gdbarch, 1, 2))
823 {
824 gdb_assert (sp >= lastval_addr);
825 sp = lastval_addr;
826 }
827 else
828 {
829 gdb_assert (sp <= lastval_addr);
830 sp = lastval_addr + TYPE_LENGTH (value_type (lastval));
831 }
832
833 if (gdbarch_frame_align_p (gdbarch))
834 sp = gdbarch_frame_align (gdbarch, sp);
835 }
836 }
ebc7896c 837 }
04714b91 838
8388016d
PA
839 type *ftype;
840 type *values_type;
841 CORE_ADDR funaddr = find_function_addr (function, &values_type, &ftype);
842
7022349d
PA
843 if (values_type == NULL)
844 values_type = default_return_type;
845 if (values_type == NULL)
846 {
847 const char *name = get_function_name (funaddr,
848 name_buf, sizeof (name_buf));
849 error (_("'%s' has unknown return type; "
850 "cast the call to its declared return type"),
851 name);
852 }
7788af6d 853
f168693b 854 values_type = check_typedef (values_type);
04714b91 855
c5ac5cbb 856 /* Are we returning a value using a structure return? */
41f1b697 857
18648a37 858 if (gdbarch_return_in_first_hidden_param_p (gdbarch, values_type))
41f1b697 859 {
c5ac5cbb 860 return_method = return_method_hidden_param;
04714b91 861
41f1b697
DJ
862 /* Tell the target specific argument pushing routine not to
863 expect a value. */
48319d1f 864 target_values_type = builtin_type (gdbarch)->builtin_void;
41f1b697
DJ
865 }
866 else
867 {
c5ac5cbb
AH
868 if (using_struct_return (gdbarch, function, values_type))
869 return_method = return_method_struct;
41f1b697
DJ
870 target_values_type = values_type;
871 }
04714b91 872
76727919 873 gdb::observers::inferior_call_pre.notify (inferior_ptid, funaddr);
162078c8 874
7043d8dc
AC
875 /* Determine the location of the breakpoint (and possibly other
876 stuff) that the called function will return to. The SPARC, for a
877 function returning a structure or union, needs to make space for
878 not just the breakpoint but also an extra word containing the
879 size (?) of the structure being passed. */
880
0b9dfe2b 881 switch (gdbarch_call_dummy_location (gdbarch))
04714b91
AC
882 {
883 case ON_STACK:
a14dd77e
JK
884 {
885 const gdb_byte *bp_bytes;
886 CORE_ADDR bp_addr_as_address;
887 int bp_size;
888
889 /* Be careful BP_ADDR is in inferior PC encoding while
890 BP_ADDR_AS_ADDRESS is a plain memory address. */
891
e71585ff 892 sp = push_dummy_code (gdbarch, sp, funaddr, args,
a14dd77e
JK
893 target_values_type, &real_pc, &bp_addr,
894 get_current_regcache ());
895
896 /* Write a legitimate instruction at the point where the infcall
897 breakpoint is going to be inserted. While this instruction
898 is never going to be executed, a user investigating the
899 memory from GDB would see this instruction instead of random
900 uninitialized bytes. We chose the breakpoint instruction
901 as it may look as the most logical one to the user and also
902 valgrind 3.7.0 needs it for proper vgdb inferior calls.
903
904 If software breakpoints are unsupported for this target we
905 leave the user visible memory content uninitialized. */
906
907 bp_addr_as_address = bp_addr;
908 bp_bytes = gdbarch_breakpoint_from_pc (gdbarch, &bp_addr_as_address,
909 &bp_size);
910 if (bp_bytes != NULL)
911 write_memory (bp_addr_as_address, bp_bytes, bp_size);
912 }
7043d8dc 913 break;
5931a2fa
JK
914 case AT_ENTRY_POINT:
915 {
916 CORE_ADDR dummy_addr;
917
918 real_pc = funaddr;
919 dummy_addr = entry_point_address ();
a14dd77e 920
5931a2fa 921 /* A call dummy always consists of just a single breakpoint, so
a14dd77e
JK
922 its address is the same as the address of the dummy.
923
924 The actual breakpoint is inserted separatly so there is no need to
925 write that out. */
5931a2fa
JK
926 bp_addr = dummy_addr;
927 break;
928 }
04714b91 929 default:
e2e0b3e5 930 internal_error (__FILE__, __LINE__, _("bad switch"));
04714b91
AC
931 }
932
e71585ff 933 if (args.size () < TYPE_NFIELDS (ftype))
2e74121d 934 error (_("Too few arguments in function call."));
04714b91 935
e71585ff 936 for (int i = args.size () - 1; i >= 0; i--)
b4b08fa2
TT
937 {
938 int prototyped;
939 struct type *param_type;
e71585ff 940
b4b08fa2
TT
941 /* FIXME drow/2002-05-31: Should just always mark methods as
942 prototyped. Can we respect TYPE_VARARGS? Probably not. */
943 if (TYPE_CODE (ftype) == TYPE_CODE_METHOD)
944 prototyped = 1;
945 if (TYPE_TARGET_TYPE (ftype) == NULL && TYPE_NFIELDS (ftype) == 0
946 && default_return_type != NULL)
947 {
948 /* Calling a no-debug function with the return type
949 explicitly cast. Assume the function is prototyped,
950 with a prototype matching the types of the arguments.
951 E.g., with:
952 float mult (float v1, float v2) { return v1 * v2; }
953 This:
954 (gdb) p (float) mult (2.0f, 3.0f)
955 Is a simpler alternative to:
956 (gdb) p ((float (*) (float, float)) mult) (2.0f, 3.0f)
957 */
ebc7896c 958 prototyped = 1;
b4b08fa2
TT
959 }
960 else if (i < TYPE_NFIELDS (ftype))
961 prototyped = TYPE_PROTOTYPED (ftype);
962 else
963 prototyped = 0;
ebc7896c 964
b4b08fa2
TT
965 if (i < TYPE_NFIELDS (ftype))
966 param_type = TYPE_FIELD_TYPE (ftype, i);
967 else
968 param_type = NULL;
41f1b697 969
b4b08fa2
TT
970 args[i] = value_arg_coerce (gdbarch, args[i],
971 param_type, prototyped, &sp);
ebc7896c 972
b4b08fa2
TT
973 if (param_type != NULL && language_pass_by_reference (param_type))
974 args[i] = value_addr (args[i]);
975 }
04714b91 976
04714b91
AC
977 /* Reserve space for the return structure to be written on the
978 stack, if necessary. Make certain that the value is correctly
6c659fc2
SC
979 aligned.
980
981 While evaluating expressions, we reserve space on the stack for
982 return values of class type even if the language ABI and the target
983 ABI do not require that the return value be passed as a hidden first
984 argument. This is because we want to store the return value as an
985 on-stack temporary while the expression is being evaluated. This
986 enables us to have chained function calls in expressions.
04714b91 987
6c659fc2
SC
988 Keeping the return values as on-stack temporaries while the expression
989 is being evaluated is OK because the thread is stopped until the
990 expression is completely evaluated. */
991
c5ac5cbb 992 if (return_method != return_method_normal
6c659fc2 993 || (stack_temporaries && class_or_union_p (values_type)))
04714b91 994 {
0b9dfe2b 995 if (gdbarch_inner_than (gdbarch, 1, 2))
04714b91
AC
996 {
997 /* Stack grows downward. Align STRUCT_ADDR and SP after
998 making space for the return value. */
744a8059 999 sp -= TYPE_LENGTH (values_type);
0b9dfe2b
MD
1000 if (gdbarch_frame_align_p (gdbarch))
1001 sp = gdbarch_frame_align (gdbarch, sp);
04714b91
AC
1002 struct_addr = sp;
1003 }
1004 else
1005 {
1006 /* Stack grows upward. Align the frame, allocate space, and
1777feb0 1007 then again, re-align the frame??? */
0b9dfe2b
MD
1008 if (gdbarch_frame_align_p (gdbarch))
1009 sp = gdbarch_frame_align (gdbarch, sp);
04714b91 1010 struct_addr = sp;
744a8059 1011 sp += TYPE_LENGTH (values_type);
0b9dfe2b
MD
1012 if (gdbarch_frame_align_p (gdbarch))
1013 sp = gdbarch_frame_align (gdbarch, sp);
04714b91
AC
1014 }
1015 }
1016
6ccb583f 1017 std::vector<struct value *> new_args;
c5ac5cbb 1018 if (return_method == return_method_hidden_param)
41f1b697 1019 {
41f1b697 1020 /* Add the new argument to the front of the argument list. */
e71585ff 1021 new_args.reserve (args.size ());
6ccb583f
TT
1022 new_args.push_back
1023 (value_from_pointer (lookup_pointer_type (values_type), struct_addr));
e71585ff
PA
1024 new_args.insert (new_args.end (), args.begin (), args.end ());
1025 args = new_args;
41f1b697 1026 }
41f1b697 1027
04714b91
AC
1028 /* Create the dummy stack frame. Pass in the call dummy address as,
1029 presumably, the ABI code knows where, in the call dummy, the
1030 return address should be pointed. */
0b9dfe2b 1031 sp = gdbarch_push_dummy_call (gdbarch, function, get_current_regcache (),
e71585ff
PA
1032 bp_addr, args.size (), args.data (),
1033 sp, return_method, struct_addr);
04714b91 1034
96860204
AC
1035 /* Set up a frame ID for the dummy frame so we can pass it to
1036 set_momentary_breakpoint. We need to give the breakpoint a frame
1037 ID so that the breakpoint code can correctly re-identify the
1038 dummy breakpoint. */
8241eaa6 1039 /* Sanity. The exact same SP value is returned by PUSH_DUMMY_CALL,
669fac23 1040 saved as the dummy-frame TOS, and used by dummy_id to form
8241eaa6 1041 the frame ID's stack address. */
96860204 1042 dummy_id = frame_id_build (sp, bp_addr);
04714b91 1043
74cfe982
AC
1044 /* Create a momentary breakpoint at the return address of the
1045 inferior. That way it breaks when it returns. */
04714b91 1046
74cfe982 1047 {
51abb421 1048 symtab_and_line sal;
6c95b8df 1049 sal.pspace = current_program_space;
74cfe982
AC
1050 sal.pc = bp_addr;
1051 sal.section = find_pc_overlay (sal.pc);
51abb421 1052
8241eaa6
AC
1053 /* Sanity. The exact same SP value is returned by
1054 PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by
669fac23 1055 dummy_id to form the frame ID's stack address. */
454dafbd
TT
1056 breakpoint *bpt
1057 = set_momentary_breakpoint (gdbarch, sal,
1058 dummy_id, bp_call_dummy).release ();
c70a6932
JK
1059
1060 /* set_momentary_breakpoint invalidates FRAME. */
1061 frame = NULL;
1062
74cfe982 1063 bpt->disposition = disp_del;
e2e4d78b
JK
1064 gdb_assert (bpt->related_breakpoint == bpt);
1065
51abb421 1066 breakpoint *longjmp_b = set_longjmp_breakpoint_for_call_dummy ();
e2e4d78b
JK
1067 if (longjmp_b)
1068 {
1069 /* Link BPT into the chain of LONGJMP_B. */
1070 bpt->related_breakpoint = longjmp_b;
1071 while (longjmp_b->related_breakpoint != bpt->related_breakpoint)
1072 longjmp_b = longjmp_b->related_breakpoint;
1073 longjmp_b->related_breakpoint = bpt;
1074 }
74cfe982 1075 }
04714b91 1076
7cd1089b
PM
1077 /* Create a breakpoint in std::terminate.
1078 If a C++ exception is raised in the dummy-frame, and the
1079 exception handler is (normally, and expected to be) out-of-frame,
1080 the default C++ handler will (wrongly) be called in an inferior
1081 function call. This is wrong, as an exception can be normally
1082 and legally handled out-of-frame. The confines of the dummy frame
1083 prevent the unwinder from finding the correct handler (or any
1084 handler, unless it is in-frame). The default handler calls
1085 std::terminate. This will kill the inferior. Assert that
1086 terminate should never be called in an inferior function
1087 call. Place a momentary breakpoint in the std::terminate function
1088 and if triggered in the call, rewind. */
1089 if (unwind_on_terminating_exception_p)
aa7d318d 1090 set_std_terminate_breakpoint ();
7cd1089b 1091
96860204
AC
1092 /* Everything's ready, push all the info needed to restore the
1093 caller (and identify the dummy-frame) onto the dummy-frame
1094 stack. */
c7c4d3fa 1095 dummy_frame_push (caller_state.release (), &dummy_id, call_thread.get ());
ed12ef62 1096 if (dummy_dtor != NULL)
00431a78 1097 register_dummy_frame_dtor (dummy_id, call_thread.get (),
ed12ef62 1098 dummy_dtor, dummy_dtor_data);
b89667eb 1099
7cd1089b 1100 /* Register a clean-up for unwind_on_terminating_exception_breakpoint. */
2cc83d1e 1101 SCOPE_EXIT { delete_std_terminate_breakpoint (); };
7cd1089b 1102
96860204
AC
1103 /* - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP - SNIP -
1104 If you're looking to implement asynchronous dummy-frames, then
1105 just below is the place to chop this function in two.. */
1106
74cfe982 1107 {
388a7084
PA
1108 struct thread_fsm *saved_sm;
1109 struct call_thread_fsm *sm;
1110
1111 /* Save the current FSM. We'll override it. */
00431a78
PA
1112 saved_sm = call_thread->thread_fsm;
1113 call_thread->thread_fsm = NULL;
74cfe982 1114
b89667eb
DE
1115 /* Save this thread's ptid, we need it later but the thread
1116 may have exited. */
00431a78 1117 call_thread_ptid = call_thread->ptid;
74cfe982 1118
b89667eb 1119 /* Run the inferior until it stops. */
f5871ec0 1120
388a7084
PA
1121 /* Create the FSM used to manage the infcall. It tells infrun to
1122 not report the stop to the user, and captures the return value
1123 before the dummy frame is popped. run_inferior_call registers
1124 it with the thread ASAP. */
46e3ed7f 1125 sm = new call_thread_fsm (current_ui, command_interp (),
3b12939d 1126 gdbarch, function,
388a7084 1127 values_type,
c5ac5cbb 1128 return_method != return_method_normal,
388a7084
PA
1129 struct_addr);
1130
00431a78 1131 e = run_inferior_call (sm, call_thread.get (), real_pc);
388a7084 1132
76727919 1133 gdb::observers::inferior_call_post.notify (call_thread_ptid, funaddr);
388a7084 1134
00431a78 1135 if (call_thread->state != THREAD_EXITED)
388a7084
PA
1136 {
1137 /* The FSM should still be the same. */
46e3ed7f 1138 gdb_assert (call_thread->thread_fsm == sm);
388a7084 1139
46e3ed7f 1140 if (call_thread->thread_fsm->finished_p ())
388a7084
PA
1141 {
1142 struct value *retval;
1143
1144 /* The inferior call is successful. Pop the dummy frame,
1145 which runs its destructors and restores the inferior's
1146 suspend state, and restore the inferior control
1147 state. */
00431a78 1148 dummy_frame_pop (dummy_id, call_thread.get ());
c7c4d3fa 1149 restore_infcall_control_state (inf_status.release ());
388a7084
PA
1150
1151 /* Get the return value. */
1152 retval = sm->return_value;
1153
1154 /* Clean up / destroy the call FSM, and restore the
1155 original one. */
46e3ed7f
TT
1156 call_thread->thread_fsm->clean_up (call_thread.get ());
1157 delete call_thread->thread_fsm;
00431a78 1158 call_thread->thread_fsm = saved_sm;
04714b91 1159
388a7084
PA
1160 maybe_remove_breakpoints ();
1161
388a7084
PA
1162 gdb_assert (retval != NULL);
1163 return retval;
1164 }
1165
e3319240
PW
1166 /* Didn't complete. Clean up / destroy the call FSM, and restore the
1167 previous state machine, and handle the error. */
46e3ed7f
TT
1168 call_thread->thread_fsm->clean_up (call_thread.get ());
1169 delete call_thread->thread_fsm;
00431a78 1170 call_thread->thread_fsm = saved_sm;
388a7084
PA
1171 }
1172 }
162078c8 1173
b89667eb
DE
1174 /* Rethrow an error if we got one trying to run the inferior. */
1175
1176 if (e.reason < 0)
1177 {
1178 const char *name = get_function_name (funaddr,
1179 name_buf, sizeof (name_buf));
1180
c7c4d3fa 1181 discard_infcall_control_state (inf_status.release ());
b89667eb
DE
1182
1183 /* We could discard the dummy frame here if the program exited,
1184 but it will get garbage collected the next time the program is
1185 run anyway. */
1186
1187 switch (e.reason)
1188 {
1189 case RETURN_ERROR:
ac74f770
MS
1190 throw_error (e.error, _("%s\n\
1191An error occurred while in a function called from GDB.\n\
1192Evaluation of the expression containing the function\n\
1193(%s) will be abandoned.\n\
1194When the function is done executing, GDB will silently stop."),
3d6e9d23 1195 e.what (), name);
b89667eb
DE
1196 case RETURN_QUIT:
1197 default:
94aeb44b 1198 throw_exception (std::move (e));
b89667eb
DE
1199 }
1200 }
1201
1202 /* If the program has exited, or we stopped at a different thread,
1203 exit and inform the user. */
1204
de04a248
DE
1205 if (! target_has_execution)
1206 {
b89667eb
DE
1207 const char *name = get_function_name (funaddr,
1208 name_buf, sizeof (name_buf));
1209
1210 /* If we try to restore the inferior status,
de04a248 1211 we'll crash as the inferior is no longer running. */
c7c4d3fa 1212 discard_infcall_control_state (inf_status.release ());
b89667eb
DE
1213
1214 /* We could discard the dummy frame here given that the program exited,
1215 but it will get garbage collected the next time the program is
1216 run anyway. */
1217
3e43a32a
MS
1218 error (_("The program being debugged exited while in a function "
1219 "called from GDB.\n"
1220 "Evaluation of the expression containing the function\n"
1221 "(%s) will be abandoned."),
b89667eb
DE
1222 name);
1223 }
1224
d7e15655 1225 if (call_thread_ptid != inferior_ptid)
b89667eb
DE
1226 {
1227 const char *name = get_function_name (funaddr,
1228 name_buf, sizeof (name_buf));
1229
1230 /* We've switched threads. This can happen if another thread gets a
1231 signal or breakpoint while our thread was running.
1232 There's no point in restoring the inferior status,
1233 we're in a different thread. */
c7c4d3fa 1234 discard_infcall_control_state (inf_status.release ());
b89667eb
DE
1235 /* Keep the dummy frame record, if the user switches back to the
1236 thread with the hand-call, we'll need it. */
1237 if (stopped_by_random_signal)
ac74f770
MS
1238 error (_("\
1239The program received a signal in another thread while\n\
1240making a function call from GDB.\n\
1241Evaluation of the expression containing the function\n\
1242(%s) will be abandoned.\n\
1243When the function is done executing, GDB will silently stop."),
b89667eb
DE
1244 name);
1245 else
ac74f770
MS
1246 error (_("\
1247The program stopped in another thread while making a function call from GDB.\n\
1248Evaluation of the expression containing the function\n\
1249(%s) will be abandoned.\n\
1250When the function is done executing, GDB will silently stop."),
b89667eb 1251 name);
de04a248
DE
1252 }
1253
52557533 1254 {
5fe75eec 1255 /* Make a copy as NAME may be in an objfile freed by dummy_frame_pop. */
395423c4
TT
1256 std::string name = get_function_name (funaddr, name_buf,
1257 sizeof (name_buf));
b89667eb 1258
52557533
AC
1259 if (stopped_by_random_signal)
1260 {
1261 /* We stopped inside the FUNCTION because of a random
1262 signal. Further execution of the FUNCTION is not
1777feb0 1263 allowed. */
04714b91 1264
52557533
AC
1265 if (unwind_on_signal_p)
1266 {
1777feb0 1267 /* The user wants the context restored. */
52557533
AC
1268
1269 /* We must get back to the frame we were before the
b89667eb 1270 dummy call. */
00431a78 1271 dummy_frame_pop (dummy_id, call_thread.get ());
b89667eb
DE
1272
1273 /* We also need to restore inferior status to that before the
1274 dummy call. */
c7c4d3fa 1275 restore_infcall_control_state (inf_status.release ());
04714b91 1276
52557533
AC
1277 /* FIXME: Insert a bunch of wrap_here; name can be very
1278 long if it's a C++ name with arguments and stuff. */
ac74f770
MS
1279 error (_("\
1280The program being debugged was signaled while in a function called from GDB.\n\
1281GDB has restored the context to what it was before the call.\n\
1282To change this behavior use \"set unwindonsignal off\".\n\
1283Evaluation of the expression containing the function\n\
1284(%s) will be abandoned."),
395423c4 1285 name.c_str ());
52557533
AC
1286 }
1287 else
1288 {
1289 /* The user wants to stay in the frame where we stopped
b89667eb
DE
1290 (default).
1291 Discard inferior status, we're not at the same point
1292 we started at. */
c7c4d3fa 1293 discard_infcall_control_state (inf_status.release ());
b89667eb 1294
52557533
AC
1295 /* FIXME: Insert a bunch of wrap_here; name can be very
1296 long if it's a C++ name with arguments and stuff. */
ac74f770
MS
1297 error (_("\
1298The program being debugged was signaled while in a function called from GDB.\n\
1299GDB remains in the frame where the signal was received.\n\
1300To change this behavior use \"set unwindonsignal on\".\n\
1301Evaluation of the expression containing the function\n\
1302(%s) will be abandoned.\n\
1303When the function is done executing, GDB will silently stop."),
395423c4 1304 name.c_str ());
52557533
AC
1305 }
1306 }
04714b91 1307
aa7d318d 1308 if (stop_stack_dummy == STOP_STD_TERMINATE)
52557533 1309 {
aa7d318d
TT
1310 /* We must get back to the frame we were before the dummy
1311 call. */
00431a78 1312 dummy_frame_pop (dummy_id, call_thread.get ());
7cd1089b 1313
aa7d318d
TT
1314 /* We also need to restore inferior status to that before
1315 the dummy call. */
c7c4d3fa 1316 restore_infcall_control_state (inf_status.release ());
aa7d318d 1317
ac74f770
MS
1318 error (_("\
1319The program being debugged entered a std::terminate call, most likely\n\
1320caused by an unhandled C++ exception. GDB blocked this call in order\n\
1321to prevent the program from being terminated, and has restored the\n\
1322context to its original state before the call.\n\
1323To change this behaviour use \"set unwind-on-terminating-exception off\".\n\
1324Evaluation of the expression containing the function (%s)\n\
1325will be abandoned."),
395423c4 1326 name.c_str ());
aa7d318d
TT
1327 }
1328 else if (stop_stack_dummy == STOP_NONE)
1329 {
1330
b89667eb
DE
1331 /* We hit a breakpoint inside the FUNCTION.
1332 Keep the dummy frame, the user may want to examine its state.
1333 Discard inferior status, we're not at the same point
1334 we started at. */
c7c4d3fa 1335 discard_infcall_control_state (inf_status.release ());
b89667eb 1336
52557533
AC
1337 /* The following error message used to say "The expression
1338 which contained the function call has been discarded."
1339 It is a hard concept to explain in a few words. Ideally,
1340 GDB would be able to resume evaluation of the expression
1341 when the function finally is done executing. Perhaps
1342 someday this will be implemented (it would not be easy). */
1343 /* FIXME: Insert a bunch of wrap_here; name can be very long if it's
1344 a C++ name with arguments and stuff. */
ac74f770
MS
1345 error (_("\
1346The program being debugged stopped while in a function called from GDB.\n\
1347Evaluation of the expression containing the function\n\
1348(%s) will be abandoned.\n\
1349When the function is done executing, GDB will silently stop."),
395423c4 1350 name.c_str ());
52557533
AC
1351 }
1352
52557533 1353 }
04714b91 1354
388a7084
PA
1355 /* The above code errors out, so ... */
1356 gdb_assert_not_reached ("... should not be here");
04714b91 1357}
04714b91
AC
1358
1359void
1360_initialize_infcall (void)
1361{
1362 add_setshow_boolean_cmd ("coerce-float-to-double", class_obscure,
7915a72c
AC
1363 &coerce_float_to_double_p, _("\
1364Set coercion of floats to doubles when calling functions."), _("\
1365Show coercion of floats to doubles when calling functions"), _("\
04714b91
AC
1366Variables of type float should generally be converted to doubles before\n\
1367calling an unprototyped function, and left alone when calling a prototyped\n\
1368function. However, some older debug info formats do not provide enough\n\
1369information to determine that a function is prototyped. If this flag is\n\
1370set, GDB will perform the conversion for a function it considers\n\
1371unprototyped.\n\
7915a72c 1372The default is to perform the conversion.\n"),
2c5b56ce 1373 NULL,
920d2a44 1374 show_coerce_float_to_double_p,
2c5b56ce 1375 &setlist, &showlist);
04714b91
AC
1376
1377 add_setshow_boolean_cmd ("unwindonsignal", no_class,
7915a72c
AC
1378 &unwind_on_signal_p, _("\
1379Set unwinding of stack if a signal is received while in a call dummy."), _("\
1380Show unwinding of stack if a signal is received while in a call dummy."), _("\
04714b91
AC
1381The unwindonsignal lets the user determine what gdb should do if a signal\n\
1382is received while in a function called from gdb (call dummy). If set, gdb\n\
1383unwinds the stack and restore the context to what as it was before the call.\n\
7915a72c 1384The default is to stop in the frame where the signal was received."),
2c5b56ce 1385 NULL,
920d2a44 1386 show_unwind_on_signal_p,
2c5b56ce 1387 &setlist, &showlist);
7cd1089b
PM
1388
1389 add_setshow_boolean_cmd ("unwind-on-terminating-exception", no_class,
1390 &unwind_on_terminating_exception_p, _("\
1391Set unwinding of stack if std::terminate is called while in call dummy."), _("\
3e43a32a
MS
1392Show unwinding of stack if std::terminate() is called while in a call dummy."),
1393 _("\
7cd1089b
PM
1394The unwind on terminating exception flag lets the user determine\n\
1395what gdb should do if a std::terminate() call is made from the\n\
1396default exception handler. If set, gdb unwinds the stack and restores\n\
1397the context to what it was before the call. If unset, gdb allows the\n\
1398std::terminate call to proceed.\n\
1399The default is to unwind the frame."),
1400 NULL,
1401 show_unwind_on_terminating_exception_p,
1402 &setlist, &showlist);
1403
04714b91 1404}