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