Fix dwarf2loc.h::dwarf2_evaluate_property function description.
[deliverable/binutils-gdb.git] / gdb / inf-loop.c
index 8d23dc72a4a18859887d3abaffb7e7f6d28b3bc8..d4f9a356f19f5faf5d31803e14aca3f239780c19 100644 (file)
@@ -18,7 +18,8 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#include "inferior.h"          /* For fetch_inferior_event.  */
+#include "inferior.h"
+#include "infrun.h"
 #include "target.h"             /* For enum inferior_event_type.  */
 #include "event-loop.h"
 #include "event-top.h"
@@ -30,8 +31,7 @@
 #include "continuations.h"
 #include "interps.h"
 #include "top.h"
-
-static int fetch_inferior_event_wrapper (gdb_client_data client_data);
+#include "observer.h"
 
 /* General function to handle events in the inferior.  So far it just
    takes care of detecting errors reported by select() or poll(),
@@ -46,19 +46,26 @@ inferior_event_handler (enum inferior_event_type event_type,
   switch (event_type)
     {
     case INF_REG_EVENT:
-      /* Use catch errors for now, until the inner layers of
+      /* Catch errors for now, until the inner layers of
         fetch_inferior_event (i.e. readchar) can return meaningful
         error status.  If an error occurs while getting an event from
         the target, just cancel the current command.  */
-      if (!catch_errors (fetch_inferior_event_wrapper, 
-                        client_data, "", RETURN_MASK_ALL))
-       {
-         bpstat_clear_actions ();
-         do_all_intermediate_continuations (1);
-         do_all_continuations (1);
-         async_enable_stdin ();
-         display_gdb_prompt (0);
-       }
+      {
+       volatile struct gdb_exception ex;
+
+       TRY_CATCH (ex, RETURN_MASK_ALL)
+         {
+           fetch_inferior_event (client_data);
+         }
+       if (ex.reason < 0)
+         {
+           bpstat_clear_actions ();
+           do_all_intermediate_continuations (1);
+           do_all_continuations (1);
+
+           throw_exception (ex);
+         }
+      }
       break;
 
     case INF_EXEC_COMPLETE:
@@ -138,10 +145,3 @@ inferior_event_handler (enum inferior_event_type event_type,
 
   discard_cleanups (cleanup_if_error);
 }
-
-static int 
-fetch_inferior_event_wrapper (gdb_client_data client_data)
-{
-  fetch_inferior_event (client_data);
-  return 1;
-}
This page took 0.025832 seconds and 4 git commands to generate.