- char *spec;
-
- if (pass == 0)
- {
- spec = ASTRDUP (exception_functions[kind].probe);
- sals = parse_probes (&spec, NULL);
- }
- else
- {
- spec = ASTRDUP (exception_functions[kind].function);
- self->ops->decode_linespec (self, &spec, &sals);
- }
+ struct explicit_location explicit_loc;
+
+ initialize_explicit_location (&explicit_loc);
+ explicit_loc.function_name
+ = ASTRDUP (exception_functions[kind].function);
+ event_location_up location = new_explicit_location (&explicit_loc);
+ sals = self->ops->decode_location (self, location.get (),
+ filter_pspace);
+ }
+ catch (const gdb_exception_error &ex)
+ {
+ /* NOT_FOUND_ERROR just means the breakpoint will be
+ pending, so let it through. */
+ if (ex.error != NOT_FOUND_ERROR)
+ throw;