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