OLD | NEW |
1 /* Perform an inferior function call, for GDB, the GNU debugger. | 1 /* Perform an inferior function call, for GDB, the GNU debugger. |
2 | 2 |
3 Copyright (C) 1986-2012 Free Software Foundation, Inc. | 3 Copyright (C) 1986-2012 Free Software Foundation, Inc. |
4 | 4 |
5 This file is part of GDB. | 5 This file is part of GDB. |
6 | 6 |
7 This program is free software; you can redistribute it and/or modify | 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 | 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 | 9 the Free Software Foundation; either version 3 of the License, or |
10 (at your option) any later version. | 10 (at your option) any later version. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 value); | 81 value); |
82 } | 82 } |
83 | 83 |
84 /* This boolean tells what gdb should do if a signal is received while | 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 | 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 | 86 the stack and restore the context to what as it was before the |
87 call. | 87 call. |
88 | 88 |
89 The default is to stop in the frame where the signal was received. */ | 89 The default is to stop in the frame where the signal was received. */ |
90 | 90 |
91 int unwind_on_signal_p = 0; | 91 static int unwind_on_signal_p = 0; |
92 static void | 92 static void |
93 show_unwind_on_signal_p (struct ui_file *file, int from_tty, | 93 show_unwind_on_signal_p (struct ui_file *file, int from_tty, |
94 struct cmd_list_element *c, const char *value) | 94 struct cmd_list_element *c, const char *value) |
95 { | 95 { |
96 fprintf_filtered (file, | 96 fprintf_filtered (file, |
97 _("Unwinding of stack if a signal is " | 97 _("Unwinding of stack if a signal is " |
98 "received while in a call dummy is %s.\n"), | 98 "received while in a call dummy is %s.\n"), |
99 value); | 99 value); |
100 } | 100 } |
101 | 101 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 saved by the called function. */ | 152 saved by the called function. */ |
153 arg = value_coerce_to_target (arg); | 153 arg = value_coerce_to_target (arg); |
154 | 154 |
155 switch (TYPE_CODE (type)) | 155 switch (TYPE_CODE (type)) |
156 { | 156 { |
157 case TYPE_CODE_REF: | 157 case TYPE_CODE_REF: |
158 { | 158 { |
159 struct value *new_value; | 159 struct value *new_value; |
160 | 160 |
161 if (TYPE_CODE (arg_type) == TYPE_CODE_REF) | 161 if (TYPE_CODE (arg_type) == TYPE_CODE_REF) |
162 » return value_cast_pointers (type, arg); | 162 » return value_cast_pointers (type, arg, 0); |
163 | 163 |
164 /* Cast the value to the reference's target type, and then | 164 /* Cast the value to the reference's target type, and then |
165 convert it back to a reference. This will issue an error | 165 convert it back to a reference. This will issue an error |
166 if the value was not previously in memory - in some cases | 166 if the value was not previously in memory - in some cases |
167 we should clearly be allowing this, but how? */ | 167 we should clearly be allowing this, but how? */ |
168 new_value = value_cast (TYPE_TARGET_TYPE (type), arg); | 168 new_value = value_cast (TYPE_TARGET_TYPE (type), arg); |
169 new_value = value_ref (new_value); | 169 new_value = value_ref (new_value); |
170 return new_value; | 170 return new_value; |
171 } | 171 } |
172 case TYPE_CODE_INT: | 172 case TYPE_CODE_INT: |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
392 | 392 |
393 clear_proceed_status (); | 393 clear_proceed_status (); |
394 | 394 |
395 disable_watchpoints_before_interactive_call_start (); | 395 disable_watchpoints_before_interactive_call_start (); |
396 | 396 |
397 /* We want stop_registers, please... */ | 397 /* We want stop_registers, please... */ |
398 call_thread->control.proceed_to_finish = 1; | 398 call_thread->control.proceed_to_finish = 1; |
399 | 399 |
400 TRY_CATCH (e, RETURN_MASK_ALL) | 400 TRY_CATCH (e, RETURN_MASK_ALL) |
401 { | 401 { |
402 proceed (real_pc, TARGET_SIGNAL_0, 0); | 402 proceed (real_pc, GDB_SIGNAL_0, 0); |
403 | 403 |
404 /* Inferior function calls are always synchronous, even if the | 404 /* Inferior function calls are always synchronous, even if the |
405 target supports asynchronous execution. Do here what | 405 target supports asynchronous execution. Do here what |
406 `proceed' itself does in sync mode. */ | 406 `proceed' itself does in sync mode. */ |
407 if (target_can_async_p () && is_running (inferior_ptid)) | 407 if (target_can_async_p () && is_running (inferior_ptid)) |
408 { | 408 { |
409 wait_for_inferior (); | 409 wait_for_inferior (); |
410 normal_stop (); | 410 normal_stop (); |
411 } | 411 } |
412 } | 412 } |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 May fail to return, if a breakpoint or signal is hit | 457 May fail to return, if a breakpoint or signal is hit |
458 during the execution of the function. | 458 during the execution of the function. |
459 | 459 |
460 ARGS is modified to contain coerced values. */ | 460 ARGS is modified to contain coerced values. */ |
461 | 461 |
462 struct value * | 462 struct value * |
463 call_function_by_hand (struct value *function, int nargs, struct value **args) | 463 call_function_by_hand (struct value *function, int nargs, struct value **args) |
464 { | 464 { |
465 CORE_ADDR sp; | 465 CORE_ADDR sp; |
466 struct type *values_type, *target_values_type; | 466 struct type *values_type, *target_values_type; |
467 unsigned char struct_return = 0, lang_struct_return = 0; | 467 unsigned char struct_return = 0, hidden_first_param_p = 0; |
468 CORE_ADDR struct_addr = 0; | 468 CORE_ADDR struct_addr = 0; |
469 struct infcall_control_state *inf_status; | 469 struct infcall_control_state *inf_status; |
470 struct cleanup *inf_status_cleanup; | 470 struct cleanup *inf_status_cleanup; |
471 struct infcall_suspend_state *caller_state; | 471 struct infcall_suspend_state *caller_state; |
472 CORE_ADDR funaddr; | 472 CORE_ADDR funaddr; |
473 CORE_ADDR real_pc; | 473 CORE_ADDR real_pc; |
474 struct type *ftype = check_typedef (value_type (function)); | 474 struct type *ftype = check_typedef (value_type (function)); |
475 CORE_ADDR bp_addr; | 475 CORE_ADDR bp_addr; |
476 struct frame_id dummy_id; | 476 struct frame_id dummy_id; |
477 struct cleanup *args_cleanup; | 477 struct cleanup *args_cleanup; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 hidden argument pointing to storage) or a normal value return? | 591 hidden argument pointing to storage) or a normal value return? |
592 There are two cases: language-mandated structure return and | 592 There are two cases: language-mandated structure return and |
593 target ABI structure return. The variable STRUCT_RETURN only | 593 target ABI structure return. The variable STRUCT_RETURN only |
594 describes the latter. The language version is handled by passing | 594 describes the latter. The language version is handled by passing |
595 the return location as the first parameter to the function, | 595 the return location as the first parameter to the function, |
596 even preceding "this". This is different from the target | 596 even preceding "this". This is different from the target |
597 ABI version, which is target-specific; for instance, on ia64 | 597 ABI version, which is target-specific; for instance, on ia64 |
598 the first argument is passed in out0 but the hidden structure | 598 the first argument is passed in out0 but the hidden structure |
599 return pointer would normally be passed in r8. */ | 599 return pointer would normally be passed in r8. */ |
600 | 600 |
601 if (language_pass_by_reference (values_type)) | 601 if (gdbarch_return_in_first_hidden_param_p (gdbarch, values_type)) |
602 { | 602 { |
603 lang_struct_return = 1; | 603 hidden_first_param_p = 1; |
604 | 604 |
605 /* Tell the target specific argument pushing routine not to | 605 /* Tell the target specific argument pushing routine not to |
606 expect a value. */ | 606 expect a value. */ |
607 target_values_type = builtin_type (gdbarch)->builtin_void; | 607 target_values_type = builtin_type (gdbarch)->builtin_void; |
608 } | 608 } |
609 else | 609 else |
610 { | 610 { |
611 struct_return = using_struct_return (gdbarch, | 611 struct_return = using_struct_return (gdbarch, function, values_type); |
612 » » » » » value_type (function), values_type); | |
613 target_values_type = values_type; | 612 target_values_type = values_type; |
614 } | 613 } |
615 | 614 |
616 /* Determine the location of the breakpoint (and possibly other | 615 /* Determine the location of the breakpoint (and possibly other |
617 stuff) that the called function will return to. The SPARC, for a | 616 stuff) that the called function will return to. The SPARC, for a |
618 function returning a structure or union, needs to make space for | 617 function returning a structure or union, needs to make space for |
619 not just the breakpoint but also an extra word containing the | 618 not just the breakpoint but also an extra word containing the |
620 size (?) of the structure being passed. */ | 619 size (?) of the structure being passed. */ |
621 | 620 |
622 /* The actual breakpoint (at BP_ADDR) is inserted separatly so there | |
623 is no need to write that out. */ | |
624 | |
625 switch (gdbarch_call_dummy_location (gdbarch)) | 621 switch (gdbarch_call_dummy_location (gdbarch)) |
626 { | 622 { |
627 case ON_STACK: | 623 case ON_STACK: |
628 sp = push_dummy_code (gdbarch, sp, funaddr, | 624 { |
629 » » » » args, nargs, target_values_type, | 625 » const gdb_byte *bp_bytes; |
630 » » » » &real_pc, &bp_addr, get_current_regcache ()); | 626 » CORE_ADDR bp_addr_as_address; |
| 627 » int bp_size; |
| 628 |
| 629 » /* Be careful BP_ADDR is in inferior PC encoding while |
| 630 » BP_ADDR_AS_ADDRESS is a plain memory address. */ |
| 631 |
| 632 » sp = push_dummy_code (gdbarch, sp, funaddr, args, nargs, |
| 633 » » » target_values_type, &real_pc, &bp_addr, |
| 634 » » » get_current_regcache ()); |
| 635 |
| 636 » /* Write a legitimate instruction at the point where the infcall |
| 637 » breakpoint is going to be inserted. While this instruction |
| 638 » is never going to be executed, a user investigating the |
| 639 » memory from GDB would see this instruction instead of random |
| 640 » uninitialized bytes. We chose the breakpoint instruction |
| 641 » as it may look as the most logical one to the user and also |
| 642 » valgrind 3.7.0 needs it for proper vgdb inferior calls. |
| 643 |
| 644 » If software breakpoints are unsupported for this target we |
| 645 » leave the user visible memory content uninitialized. */ |
| 646 |
| 647 » bp_addr_as_address = bp_addr; |
| 648 » bp_bytes = gdbarch_breakpoint_from_pc (gdbarch, &bp_addr_as_address, |
| 649 » » » » » &bp_size); |
| 650 » if (bp_bytes != NULL) |
| 651 » write_memory (bp_addr_as_address, bp_bytes, bp_size); |
| 652 } |
631 break; | 653 break; |
632 case AT_ENTRY_POINT: | 654 case AT_ENTRY_POINT: |
633 { | 655 { |
634 CORE_ADDR dummy_addr; | 656 CORE_ADDR dummy_addr; |
635 | 657 |
636 real_pc = funaddr; | 658 real_pc = funaddr; |
637 dummy_addr = entry_point_address (); | 659 dummy_addr = entry_point_address (); |
| 660 |
638 /* A call dummy always consists of just a single breakpoint, so | 661 /* A call dummy always consists of just a single breakpoint, so |
639 » its address is the same as the address of the dummy. */ | 662 » its address is the same as the address of the dummy. |
| 663 |
| 664 » The actual breakpoint is inserted separatly so there is no need to |
| 665 » write that out. */ |
640 bp_addr = dummy_addr; | 666 bp_addr = dummy_addr; |
641 break; | 667 break; |
642 } | 668 } |
643 case AT_SYMBOL: | |
644 /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose | |
645 address is the location where the breakpoint should be | |
646 placed. Once all targets are using the overhauled frame code | |
647 this can be deleted - ON_STACK is a better option. */ | |
648 { | |
649 struct minimal_symbol *sym; | |
650 CORE_ADDR dummy_addr; | |
651 | |
652 sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL); | |
653 real_pc = funaddr; | |
654 if (sym) | |
655 { | |
656 dummy_addr = SYMBOL_VALUE_ADDRESS (sym); | |
657 /* Make certain that the address points at real code, and not | |
658 a function descriptor. */ | |
659 dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch, | |
660 dummy_addr, | |
661 ¤t_target); | |
662 } | |
663 else | |
664 dummy_addr = entry_point_address (); | |
665 /* A call dummy always consists of just a single breakpoint, | |
666 so it's address is the same as the address of the dummy. */ | |
667 bp_addr = dummy_addr; | |
668 break; | |
669 } | |
670 default: | 669 default: |
671 internal_error (__FILE__, __LINE__, _("bad switch")); | 670 internal_error (__FILE__, __LINE__, _("bad switch")); |
672 } | 671 } |
673 | 672 |
674 if (nargs < TYPE_NFIELDS (ftype)) | 673 if (nargs < TYPE_NFIELDS (ftype)) |
675 error (_("Too few arguments in function call.")); | 674 error (_("Too few arguments in function call.")); |
676 | 675 |
677 { | 676 { |
678 int i; | 677 int i; |
679 | 678 |
(...skipping 21 matching lines...) Expand all Loading... |
701 | 700 |
702 if (param_type != NULL && language_pass_by_reference (param_type)) | 701 if (param_type != NULL && language_pass_by_reference (param_type)) |
703 args[i] = value_addr (args[i]); | 702 args[i] = value_addr (args[i]); |
704 } | 703 } |
705 } | 704 } |
706 | 705 |
707 /* Reserve space for the return structure to be written on the | 706 /* Reserve space for the return structure to be written on the |
708 stack, if necessary. Make certain that the value is correctly | 707 stack, if necessary. Make certain that the value is correctly |
709 aligned. */ | 708 aligned. */ |
710 | 709 |
711 if (struct_return || lang_struct_return) | 710 if (struct_return || hidden_first_param_p) |
712 { | 711 { |
713 int len = TYPE_LENGTH (values_type); | 712 int len = TYPE_LENGTH (values_type); |
714 | 713 |
715 if (gdbarch_inner_than (gdbarch, 1, 2)) | 714 if (gdbarch_inner_than (gdbarch, 1, 2)) |
716 { | 715 { |
717 /* Stack grows downward. Align STRUCT_ADDR and SP after | 716 /* Stack grows downward. Align STRUCT_ADDR and SP after |
718 making space for the return value. */ | 717 making space for the return value. */ |
719 sp -= len; | 718 sp -= len; |
720 if (gdbarch_frame_align_p (gdbarch)) | 719 if (gdbarch_frame_align_p (gdbarch)) |
721 sp = gdbarch_frame_align (gdbarch, sp); | 720 sp = gdbarch_frame_align (gdbarch, sp); |
722 struct_addr = sp; | 721 struct_addr = sp; |
723 } | 722 } |
724 else | 723 else |
725 { | 724 { |
726 /* Stack grows upward. Align the frame, allocate space, and | 725 /* Stack grows upward. Align the frame, allocate space, and |
727 then again, re-align the frame??? */ | 726 then again, re-align the frame??? */ |
728 if (gdbarch_frame_align_p (gdbarch)) | 727 if (gdbarch_frame_align_p (gdbarch)) |
729 sp = gdbarch_frame_align (gdbarch, sp); | 728 sp = gdbarch_frame_align (gdbarch, sp); |
730 struct_addr = sp; | 729 struct_addr = sp; |
731 sp += len; | 730 sp += len; |
732 if (gdbarch_frame_align_p (gdbarch)) | 731 if (gdbarch_frame_align_p (gdbarch)) |
733 sp = gdbarch_frame_align (gdbarch, sp); | 732 sp = gdbarch_frame_align (gdbarch, sp); |
734 } | 733 } |
735 } | 734 } |
736 | 735 |
737 if (lang_struct_return) | 736 if (hidden_first_param_p) |
738 { | 737 { |
739 struct value **new_args; | 738 struct value **new_args; |
740 | 739 |
741 /* Add the new argument to the front of the argument list. */ | 740 /* Add the new argument to the front of the argument list. */ |
742 new_args = xmalloc (sizeof (struct value *) * (nargs + 1)); | 741 new_args = xmalloc (sizeof (struct value *) * (nargs + 1)); |
743 new_args[0] = value_from_pointer (lookup_pointer_type (values_type), | 742 new_args[0] = value_from_pointer (lookup_pointer_type (values_type), |
744 struct_addr); | 743 struct_addr); |
745 memcpy (&new_args[1], &args[0], sizeof (struct value *) * nargs); | 744 memcpy (&new_args[1], &args[0], sizeof (struct value *) * nargs); |
746 args = new_args; | 745 args = new_args; |
747 nargs++; | 746 nargs++; |
(...skipping 17 matching lines...) Expand all Loading... |
765 dummy breakpoint. */ | 764 dummy breakpoint. */ |
766 /* Sanity. The exact same SP value is returned by PUSH_DUMMY_CALL, | 765 /* Sanity. The exact same SP value is returned by PUSH_DUMMY_CALL, |
767 saved as the dummy-frame TOS, and used by dummy_id to form | 766 saved as the dummy-frame TOS, and used by dummy_id to form |
768 the frame ID's stack address. */ | 767 the frame ID's stack address. */ |
769 dummy_id = frame_id_build (sp, bp_addr); | 768 dummy_id = frame_id_build (sp, bp_addr); |
770 | 769 |
771 /* Create a momentary breakpoint at the return address of the | 770 /* Create a momentary breakpoint at the return address of the |
772 inferior. That way it breaks when it returns. */ | 771 inferior. That way it breaks when it returns. */ |
773 | 772 |
774 { | 773 { |
775 struct breakpoint *bpt; | 774 struct breakpoint *bpt, *longjmp_b; |
776 struct symtab_and_line sal; | 775 struct symtab_and_line sal; |
777 | 776 |
778 init_sal (&sal); /* initialize to zeroes */ | 777 init_sal (&sal); /* initialize to zeroes */ |
779 sal.pspace = current_program_space; | 778 sal.pspace = current_program_space; |
780 sal.pc = bp_addr; | 779 sal.pc = bp_addr; |
781 sal.section = find_pc_overlay (sal.pc); | 780 sal.section = find_pc_overlay (sal.pc); |
782 /* Sanity. The exact same SP value is returned by | 781 /* Sanity. The exact same SP value is returned by |
783 PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by | 782 PUSH_DUMMY_CALL, saved as the dummy-frame TOS, and used by |
784 dummy_id to form the frame ID's stack address. */ | 783 dummy_id to form the frame ID's stack address. */ |
785 bpt = set_momentary_breakpoint (gdbarch, sal, dummy_id, bp_call_dummy); | 784 bpt = set_momentary_breakpoint (gdbarch, sal, dummy_id, bp_call_dummy); |
| 785 |
| 786 /* set_momentary_breakpoint invalidates FRAME. */ |
| 787 frame = NULL; |
| 788 |
786 bpt->disposition = disp_del; | 789 bpt->disposition = disp_del; |
| 790 gdb_assert (bpt->related_breakpoint == bpt); |
| 791 |
| 792 longjmp_b = set_longjmp_breakpoint_for_call_dummy (); |
| 793 if (longjmp_b) |
| 794 { |
| 795 /* Link BPT into the chain of LONGJMP_B. */ |
| 796 bpt->related_breakpoint = longjmp_b; |
| 797 while (longjmp_b->related_breakpoint != bpt->related_breakpoint) |
| 798 longjmp_b = longjmp_b->related_breakpoint; |
| 799 longjmp_b->related_breakpoint = bpt; |
| 800 } |
787 } | 801 } |
788 | 802 |
789 /* Create a breakpoint in std::terminate. | 803 /* Create a breakpoint in std::terminate. |
790 If a C++ exception is raised in the dummy-frame, and the | 804 If a C++ exception is raised in the dummy-frame, and the |
791 exception handler is (normally, and expected to be) out-of-frame, | 805 exception handler is (normally, and expected to be) out-of-frame, |
792 the default C++ handler will (wrongly) be called in an inferior | 806 the default C++ handler will (wrongly) be called in an inferior |
793 function call. This is wrong, as an exception can be normally | 807 function call. This is wrong, as an exception can be normally |
794 and legally handled out-of-frame. The confines of the dummy frame | 808 and legally handled out-of-frame. The confines of the dummy frame |
795 prevent the unwinder from finding the correct handler (or any | 809 prevent the unwinder from finding the correct handler (or any |
796 handler, unless it is in-frame). The default handler calls | 810 handler, unless it is in-frame). The default handler calls |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 | 1043 |
1030 regcache_cpy_no_passthrough (retbuf, stop_registers); | 1044 regcache_cpy_no_passthrough (retbuf, stop_registers); |
1031 | 1045 |
1032 /* Inferior call is successful. Restore the inferior status. | 1046 /* Inferior call is successful. Restore the inferior status. |
1033 At this stage, leave the RETBUF alone. */ | 1047 At this stage, leave the RETBUF alone. */ |
1034 restore_infcall_control_state (inf_status); | 1048 restore_infcall_control_state (inf_status); |
1035 | 1049 |
1036 /* Figure out the value returned by the function. */ | 1050 /* Figure out the value returned by the function. */ |
1037 retval = allocate_value (values_type); | 1051 retval = allocate_value (values_type); |
1038 | 1052 |
1039 if (lang_struct_return) | 1053 if (hidden_first_param_p) |
1040 read_value_memory (retval, 0, 1, struct_addr, | 1054 read_value_memory (retval, 0, 1, struct_addr, |
1041 value_contents_raw (retval), | 1055 value_contents_raw (retval), |
1042 TYPE_LENGTH (values_type)); | 1056 TYPE_LENGTH (values_type)); |
1043 else if (TYPE_CODE (target_values_type) != TYPE_CODE_VOID) | 1057 else if (TYPE_CODE (target_values_type) != TYPE_CODE_VOID) |
1044 { | 1058 { |
1045 /* If the function returns void, don't bother fetching the | 1059 /* If the function returns void, don't bother fetching the |
1046 return value. */ | 1060 return value. */ |
1047 » switch (gdbarch_return_value (gdbarch, value_type (function), | 1061 » switch (gdbarch_return_value (gdbarch, function, target_values_type, |
1048 » » » » target_values_type, NULL, NULL, NULL)) | 1062 » » » » NULL, NULL, NULL)) |
1049 { | 1063 { |
1050 case RETURN_VALUE_REGISTER_CONVENTION: | 1064 case RETURN_VALUE_REGISTER_CONVENTION: |
1051 case RETURN_VALUE_ABI_RETURNS_ADDRESS: | 1065 case RETURN_VALUE_ABI_RETURNS_ADDRESS: |
1052 case RETURN_VALUE_ABI_PRESERVES_ADDRESS: | 1066 case RETURN_VALUE_ABI_PRESERVES_ADDRESS: |
1053 » gdbarch_return_value (gdbarch, value_type (function), values_type, | 1067 » gdbarch_return_value (gdbarch, function, values_type, |
1054 retbuf, value_contents_raw (retval), NULL); | 1068 retbuf, value_contents_raw (retval), NULL); |
1055 break; | 1069 break; |
1056 case RETURN_VALUE_STRUCT_CONVENTION: | 1070 case RETURN_VALUE_STRUCT_CONVENTION: |
1057 read_value_memory (retval, 0, 1, struct_addr, | 1071 read_value_memory (retval, 0, 1, struct_addr, |
1058 value_contents_raw (retval), | 1072 value_contents_raw (retval), |
1059 TYPE_LENGTH (values_type)); | 1073 TYPE_LENGTH (values_type)); |
1060 break; | 1074 break; |
1061 } | 1075 } |
1062 } | 1076 } |
1063 | 1077 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1112 what gdb should do if a std::terminate() call is made from the\n\ | 1126 what gdb should do if a std::terminate() call is made from the\n\ |
1113 default exception handler. If set, gdb unwinds the stack and restores\n\ | 1127 default exception handler. If set, gdb unwinds the stack and restores\n\ |
1114 the context to what it was before the call. If unset, gdb allows the\n\ | 1128 the context to what it was before the call. If unset, gdb allows the\n\ |
1115 std::terminate call to proceed.\n\ | 1129 std::terminate call to proceed.\n\ |
1116 The default is to unwind the frame."), | 1130 The default is to unwind the frame."), |
1117 NULL, | 1131 NULL, |
1118 show_unwind_on_terminating_exception_p, | 1132 show_unwind_on_terminating_exception_p, |
1119 &setlist, &showlist); | 1133 &setlist, &showlist); |
1120 | 1134 |
1121 } | 1135 } |
OLD | NEW |