Merge probe and ordinary tracepoints
authorTom Tromey <tom@tromey.com>
Mon, 17 Jan 2022 00:27:00 +0000 (17:27 -0700)
committerTom Tromey <tom@tromey.com>
Fri, 29 Apr 2022 22:14:32 +0000 (16:14 -0600)
Right now, probe tracepoints are handled by a separate ops object.
However, they differ only in a small way from ordinary tracepoints,
and furthermore can be distinguished by their event location.

This patch merges the two cases, just as was done for breakpoints.

gdb/breakpoint.c

index c7fa53c53e2de2c2abd3c842564706f5d7c07e67..ecea702462452df0f1eb19ca0e6c96758a93f36e 100644 (file)
@@ -12273,6 +12273,9 @@ std::vector<symtab_and_line>
 tracepoint::decode_location (struct event_location *location,
                             struct program_space *search_pspace)
 {
+  if (event_location_type (location) == PROBE_LOCATION)
+    return bkpt_probe_decode_location (this, location, search_pspace);
+
   return decode_location_default (this, location, search_pspace);
 }
 
@@ -12288,15 +12291,6 @@ tracepoint_probe_create_sals_from_location
   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
 }
 
-static std::vector<symtab_and_line>
-tracepoint_probe_decode_location (struct breakpoint *b,
-                                 struct event_location *location,
-                                 struct program_space *search_pspace)
-{
-  /* We use the same method for breakpoint on probes.  */
-  return bkpt_probe_decode_location (b, location, search_pspace);
-}
-
 void
 dprintf_breakpoint::re_set ()
 {
@@ -14582,7 +14576,6 @@ initialize_breakpoint_ops (void)
   ops = &tracepoint_probe_breakpoint_ops;
   *ops = vtable_breakpoint_ops;
   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
-  ops->decode_location = tracepoint_probe_decode_location;
 
   /* Static tracepoints with marker (`-m').  */
   ops = &strace_marker_breakpoint_ops;