Remove some now-dead exception code
authorTom Tromey <tom@tromey.com>
Mon, 28 Jan 2019 17:29:42 +0000 (10:29 -0700)
committerTom Tromey <tom@tromey.com>
Mon, 8 Apr 2019 15:05:40 +0000 (09:05 -0600)
After the rewriting to use try/catch, some of the exception code is
now unused.  This patch removes that code.

gdb/ChangeLog
2019-04-08  Tom Tromey  <tom@tromey.com>

* common/common-exceptions.h (exception_rethrow): Don't declare.
(TRY_SJLJ): Update comment.
(TRY, CATCH, END_CATCH): Remove.
* common/common-exceptions.c (exception_rethrow): Remove.

gdb/ChangeLog
gdb/common/common-exceptions.c
gdb/common/common-exceptions.h

index c8e3912451c91dfbc7751c5a9c12d25e55cb0c4e..36b6b619fe7f9a30a8c3d53162e2680e35b8095c 100644 (file)
@@ -1,3 +1,10 @@
+2019-04-08  Tom Tromey  <tom@tromey.com>
+
+       * common/common-exceptions.h (exception_rethrow): Don't declare.
+       (TRY_SJLJ): Update comment.
+       (TRY, CATCH, END_CATCH): Remove.
+       * common/common-exceptions.c (exception_rethrow): Remove.
+
 2019-04-08  Tom Tromey  <tom@tromey.com>
 
        * common/common-exceptions.h (gdb_exception_RETURN_MASK_ALL):
index d00a805dd1f30b439ac3b5e1e9c8f0375986b975..d3c01e53387fb21284608a141cd33261339f7316 100644 (file)
@@ -165,16 +165,6 @@ exceptions_state_mc_action_iter_1 (void)
   return exceptions_state_mc (CATCH_ITER_1);
 }
 
-/* Called by the default catch block.  IOW, we'll get here before
-   jumping out to the next outermost scope an exception if a GDB
-   exception is not caught.  */
-
-void
-exception_rethrow (void)
-{
-  throw;
-}
-
 /* Return EXCEPTION to the nearest containing CATCH_SJLJ block.  */
 
 void
index 55ce02dd61bc6c0a2f3e607e1bc5b7daedb60b48..b09a34b0a3517ab4ccaf22fa101b2bba3c7f41a1 100644 (file)
@@ -164,10 +164,6 @@ extern int exceptions_state_mc_action_iter (void);
 extern int exceptions_state_mc_action_iter_1 (void);
 extern int exceptions_state_mc_catch (struct gdb_exception *, int);
 
-/* For the C++ try/catch-based TRY/CATCH mechanism.  */
-
-extern void exception_rethrow (void) ATTRIBUTE_NORETURN;
-
 /* Macro to wrap up standard try/catch behavior.
 
    The double loop lets us correctly handle code "break"ing out of the
@@ -179,24 +175,21 @@ extern void exception_rethrow (void) ATTRIBUTE_NORETURN;
 
    *INDENT-OFF*
 
-   TRY
+   TRY_SJLJ
      {
      }
-   CATCH (e, RETURN_MASK_ERROR)
+   CATCH_SJLJ (e, RETURN_MASK_ERROR)
      {
        switch (e.reason)
          {
            case RETURN_ERROR: ...
          }
      }
-   END_CATCH
+   END_CATCH_SJLJ
 
-  Note that the SJLJ version of the macros are actually named
-  TRY_SJLJ/CATCH_SJLJ in order to make it possible to call them even
-  when TRY/CATCH are mapped to C++ try/catch.  The SJLJ variants are
-  needed in some cases where gdb exceptions need to cross third-party
-  library code compiled without exceptions support (e.g.,
-  readline).  */
+   The SJLJ variants are needed in some cases where gdb exceptions
+   need to cross third-party library code compiled without exceptions
+   support (e.g., readline).  */
 
 #define TRY_SJLJ \
      { \
@@ -215,40 +208,6 @@ extern void exception_rethrow (void) ATTRIBUTE_NORETURN;
 #define END_CATCH_SJLJ                         \
   }
 
-/* We still need to wrap TRY/CATCH in C++ so that cleanups and C++
-   exceptions can coexist.
-
-   The TRY blocked is wrapped in a do/while(0) so that break/continue
-   within the block works the same as in C.
-
-   END_CATCH makes sure that even if the CATCH block doesn't want to
-   catch the exception, we stop at every frame in the unwind chain to
-   run its cleanups, which may e.g., have pointers to stack variables
-   that are going to be destroyed.
-
-   There's an outer scope around the whole TRY/END_CATCH in order to
-   cause a compilation error if you forget to add the END_CATCH at the
-   end a TRY/CATCH construct.  */
-
-#define TRY                                                            \
-  {                                                                    \
-    try                                                                        \
-      {                                                                        \
-       do                                                              \
-         {
-
-#define CATCH(EXCEPTION, MASK)                                         \
-         } while (0);                                                  \
-       }                                                               \
-    catch (struct gdb_exception ## _ ## MASK &EXCEPTION)
-
-#define END_CATCH                              \
-    catch (...)                                        \
-      {                                                \
-       exception_rethrow ();                   \
-      }                                                \
-  }
-
 /* The exception types client code may catch.  They're just shims
    around gdb_exception that add nothing but type info.  Which is used
    is selected depending on the MASK argument passed to CATCH.  */