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