GNU Binutils with patches for OS216
修订版 | d9afb4f6871ad1a1a6a3ba98f883525adcc98be1 (tree) |
---|---|
时间 | 2006-09-16 07:52:06 |
作者 | Nick Roberts <nickrob@snap...> |
Commiter | Nick Roberts |
(call_function_by_hand): Destroy signal thread while
synchronous and then recreate.
@@ -36,6 +36,8 @@ | ||
36 | 36 | #include "gdb_string.h" |
37 | 37 | #include "infcall.h" |
38 | 38 | #include "dummy-frame.h" |
39 | +#include "async-nat-inferior.h" | |
40 | +#include "async-nat-sigthread.h" | |
39 | 41 | |
40 | 42 | /* NOTE: cagney/2003-04-16: What's the future of this code? |
41 | 43 |
@@ -714,7 +716,7 @@ You must use a pointer to function type variable. Command ignored."), arg_name); | ||
714 | 716 | |
715 | 717 | Otherwise, set RC to a non-zero value. If the called function |
716 | 718 | receives a random signal, we do not allow the user to continue |
717 | - executing it as this may not work. The dummy frame is poped and | |
719 | + executing it as this may not work. The dummy frame is popped and | |
718 | 720 | we return 1. If we hit a breakpoint, we leave the frame in place |
719 | 721 | and return 2 (the frame will eventually be popped when we do hit |
720 | 722 | the dummy end breakpoint). */ |
@@ -732,15 +734,22 @@ You must use a pointer to function type variable. Command ignored."), arg_name); | ||
732 | 734 | proceed_to_finish = 1; /* We want stop_registers, please... */ |
733 | 735 | |
734 | 736 | if (target_can_async_p ()) |
735 | - saved_async = target_async_mask (0); | |
736 | - | |
737 | + { | |
738 | + gdb_signal_thread_destroy (&gdb_status->signal_status); | |
739 | + saved_async = target_async_mask (0); | |
740 | + } | |
741 | + | |
737 | 742 | proceed (real_pc, TARGET_SIGNAL_0, 0); |
738 | - | |
743 | + | |
739 | 744 | if (saved_async) |
740 | - target_async_mask (saved_async); | |
741 | - | |
745 | + { | |
746 | + target_async_mask (saved_async); | |
747 | + gdb_signal_thread_create (&gdb_status->signal_status, | |
748 | + ptid_get_pid (inferior_ptid)); | |
749 | + } | |
750 | + | |
742 | 751 | enable_watchpoints_after_interactive_call_stop (); |
743 | - | |
752 | + | |
744 | 753 | discard_cleanups (old_cleanups); |
745 | 754 | } |
746 | 755 |