]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/break-catch-throw.c
Explicit locations: use new location API
[thirdparty/binutils-gdb.git] / gdb / break-catch-throw.c
index 927176f9613944ffa8255bc66ead3adf386f06e3..9449aa5f38131e50b99f3586aee10317dd2174d6 100644 (file)
@@ -35,6 +35,7 @@
 #include "cp-abi.h"
 #include "gdb_regex.h"
 #include "cp-support.h"
+#include "location.h"
 
 /* Enums for exception-handling support.  */
 enum exception_event_kind
@@ -210,25 +211,31 @@ re_set_exception_catchpoint (struct breakpoint *self)
   struct symtabs_and_lines sals_end = {0};
   struct cleanup *cleanup;
   enum exception_event_kind kind = classify_exception_breakpoint (self);
+  struct event_location *location;
 
   /* We first try to use the probe interface.  */
   TRY
     {
       char *spec = ASTRDUP (exception_functions[kind].probe);
 
-      sals = parse_probes (&spec, NULL);
+      location = new_linespec_location (&spec);
+      cleanup = make_cleanup_delete_event_location (location);
+      sals = parse_probes (location, NULL);
+      do_cleanups (cleanup);
     }
 
   CATCH (e, RETURN_MASK_ERROR)
     {
-
       /* Using the probe interface failed.  Let's fallback to the normal
         catchpoint mode.  */
       TRY
        {
          char *spec = ASTRDUP (exception_functions[kind].function);
 
-         self->ops->decode_location (self, &spec, &sals);
+         location = new_linespec_location (&spec);
+         cleanup = make_cleanup_delete_event_location (location);
+         self->ops->decode_location (self, location, &sals);
+         do_cleanups (cleanup);
        }
       CATCH (ex, RETURN_MASK_ERROR)
        {