addr = bp_objfile_data->overlay_msym.value_address ();
       b = create_internal_breakpoint (objfile->arch (), addr,
                                      bp_overlay_event,
-                                     &vtable_breakpoint_ops);
+                                     &base_breakpoint_ops);
       initialize_explicit_location (&explicit_loc);
       explicit_loc.function_name = ASTRDUP (func_name);
       b->location = new_explicit_location (&explicit_loc);
       b = create_internal_breakpoint (gdbarch,
                                      p->get_relocated_address (objfile),
                                      bp_longjmp_master,
-                                     &vtable_breakpoint_ops);
+                                     &base_breakpoint_ops);
       b->location = new_probe_location ("-probe-stap libc:longjmp");
       b->enable_state = bp_disabled;
     }
 
       addr = bp_objfile_data->longjmp_msym[i].value_address ();
       b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
-                                     &vtable_breakpoint_ops);
+                                     &base_breakpoint_ops);
       initialize_explicit_location (&explicit_loc);
       explicit_loc.function_name = ASTRDUP (func_name);
       b->location = new_explicit_location (&explicit_loc);
          addr = bp_objfile_data->terminate_msym.value_address ();
          b = create_internal_breakpoint (objfile->arch (), addr,
                                          bp_std_terminate_master,
-                                         &vtable_breakpoint_ops);
+                                         &base_breakpoint_ops);
          initialize_explicit_location (&explicit_loc);
          explicit_loc.function_name = ASTRDUP (func_name);
          b->location = new_explicit_location (&explicit_loc);
       b = create_internal_breakpoint (gdbarch,
                                      p->get_relocated_address (objfile),
                                      bp_exception_master,
-                                     &vtable_breakpoint_ops);
+                                     &base_breakpoint_ops);
       b->location = new_probe_location ("-probe-stap libgcc:unwind");
       b->enable_state = bp_disabled;
     }
   addr = gdbarch_convert_from_func_ptr_addr
     (gdbarch, addr, current_inferior ()->top_target ());
   b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
-                                 &vtable_breakpoint_ops);
+                                 &base_breakpoint_ops);
   initialize_explicit_location (&explicit_loc);
   explicit_loc.function_name = ASTRDUP (func_name);
   b->location = new_explicit_location (&explicit_loc);
        /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
           after their removal.  */
        clone = momentary_breakpoint_from_master (b, type,
-                                                 &vtable_breakpoint_ops, 1);
+                                                 &base_breakpoint_ops, 1);
        clone->thread = thread;
       }
 
        struct breakpoint *new_b;
 
        new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
-                                                 &vtable_breakpoint_ops,
+                                                 &base_breakpoint_ops,
                                                  1);
        new_b->thread = inferior_thread ()->global_num;
 
        && b->type == bp_std_terminate_master)
       {
        momentary_breakpoint_from_master (b, bp_std_terminate,
-                                         &vtable_breakpoint_ops, 1);
+                                         &base_breakpoint_ops, 1);
       }
 }
 
   struct breakpoint *b;
 
   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
-                                 &vtable_breakpoint_ops);
+                                 &base_breakpoint_ops);
 
   b->enable_state = bp_enabled;
   /* location has to be used or breakpoint_re_set will delete me.  */
 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
 {
   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
-                                    &vtable_breakpoint_ops);
+                                    &base_breakpoint_ops);
 }
 
 /* Remove JIT code registration and unregistration breakpoint(s).  */
   struct breakpoint *b;
 
   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
-                                 &vtable_breakpoint_ops);
+                                 &base_breakpoint_ops);
   update_global_location_list_nothrow (insert_mode);
   return b;
 }
   sal.pspace = current_program_space;
 
   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint,
-                      &vtable_breakpoint_ops);
+                      &base_breakpoint_ops);
 
   if (cond_string == nullptr)
     b->cond_string.reset ();
   std::unique_ptr<breakpoint> b (new momentary_breakpoint ());
 
   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
-                                       &vtable_breakpoint_ops);
+                                       &base_breakpoint_ops);
 
   b->disposition = disp_donttouch;
   b->frame_id = null_frame_id;
      tail-called one.  */
   gdb_assert (!frame_id_artificial_p (frame_id));
 
-  b = set_raw_breakpoint (gdbarch, sal, type, &vtable_breakpoint_ops);
+  b = set_raw_breakpoint (gdbarch, sal, type, &base_breakpoint_ops);
   b->enable_state = bp_enabled;
   b->disposition = disp_donttouch;
   b->frame_id = frame_id;
   if (orig == NULL)
     return NULL;
 
-  gdb_assert (orig->ops == &vtable_breakpoint_ops);
+  gdb_assert (orig->ops == &base_breakpoint_ops);
   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
 }
 
       if (location_type == PROBE_LOCATION)
        return &tracepoint_probe_breakpoint_ops;
       else
-       return &vtable_breakpoint_ops;
+       return &base_breakpoint_ops;
     }
   else
     {
       if (location_type == PROBE_LOCATION)
        return &bkpt_probe_breakpoint_ops;
       else
-       return &vtable_breakpoint_ops;
+       return &base_breakpoint_ops;
     }
 }
 
   if (location != nullptr)
     return breakpoint_ops_for_event_location_type
       (event_location_type (location), is_tracepoint);
-  return &vtable_breakpoint_ops;
+  return &base_breakpoint_ops;
 }
 
 /* See breakpoint.h.  */
                     0, bp_dprintf,
                     0 /* Ignore count */,
                     pending_break_support,
-                    &vtable_breakpoint_ops,
+                    &base_breakpoint_ops,
                     from_tty,
                     1 /* enabled */,
                     0 /* internal */,
   std::unique_ptr<breakpoint> br (new ranged_breakpoint ());
   init_raw_breakpoint (br.get (), get_current_arch (),
                       sal_start, bp_hardware_breakpoint,
-                      &vtable_breakpoint_ops);
+                      &base_breakpoint_ops);
   b = add_to_breakpoint_chain (std::move (br));
 
   set_breakpoint_count (breakpoint_count + 1);
          scope_breakpoint
            = create_internal_breakpoint (caller_arch, caller_pc,
                                          bp_watchpoint_scope,
-                                         &vtable_breakpoint_ops);
+                                         &base_breakpoint_ops);
 
          /* create_internal_breakpoint could invalidate WP_FRAME.  */
          wp_frame = NULL;
   else
     w.reset (new watchpoint ());
   init_raw_breakpoint_without_location (w.get (), nullptr, bp_type,
-                                       &vtable_breakpoint_ops);
+                                       &base_breakpoint_ops);
 
   w->thread = thread;
   w->task = task;
     }
 
   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint,
-                      &vtable_breakpoint_ops);
+                      &base_breakpoint_ops);
 
   b->enable_state = enabled ? bp_enabled : bp_disabled;
   b->disposition = tempflag ? disp_del : disp_donttouch;
   internal_error_pure_virtual_called ();
 }
 
-static void
-base_breakpoint_create_sals_from_location
-  (struct event_location *location,
-   struct linespec_result *canonical,
-   enum bptype type_wanted)
-{
-  internal_error_pure_virtual_called ();
-}
-
-static void
-base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
-                                       struct linespec_result *c,
-                                       gdb::unique_xmalloc_ptr<char> cond_string,
-                                       gdb::unique_xmalloc_ptr<char> extra_string,
-                                       enum bptype type_wanted,
-                                       enum bpdisp disposition,
-                                       int thread,
-                                       int task, int ignore_count,
-                                       const struct breakpoint_ops *o,
-                                       int from_tty, int enabled,
-                                       int internal, unsigned flags)
-{
-  internal_error_pure_virtual_called ();
-}
-
 std::vector<symtab_and_line>
 breakpoint::decode_location (struct event_location *location,
                             struct program_space *search_pspace)
 }
 
 struct breakpoint_ops base_breakpoint_ops =
-{
-  base_breakpoint_create_sals_from_location,
-  base_breakpoint_create_breakpoints_sal,
-};
-
-struct breakpoint_ops vtable_breakpoint_ops =
 {
   create_sals_from_location_default,
   create_breakpoints_sal_default,
                     bp_fast_tracepoint /* type_wanted */,
                     0 /* Ignore count */,
                     pending_break_support,
-                    &vtable_breakpoint_ops,
+                    &base_breakpoint_ops,
                     from_tty,
                     1 /* enabled */,
                     0 /* internal */, 0);
     }
   else
     {
-      ops = &vtable_breakpoint_ops;
+      ops = &base_breakpoint_ops;
       location = string_to_event_location (&arg, current_language);
       type = bp_static_tracepoint;
     }
                          utp->type /* type_wanted */,
                          0 /* Ignore count */,
                          pending_break_support,
-                         &vtable_breakpoint_ops,
+                         &base_breakpoint_ops,
                          0 /* from_tty */,
                          utp->enabled /* enabled */,
                          0 /* internal */,
 
   /* Probe breakpoints.  */
   ops = &bkpt_probe_breakpoint_ops;
-  *ops = vtable_breakpoint_ops;
+  *ops = base_breakpoint_ops;
   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
 
   /* Probe tracepoints.  */
   ops = &tracepoint_probe_breakpoint_ops;
-  *ops = vtable_breakpoint_ops;
+  *ops = base_breakpoint_ops;
   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
 
   /* Static tracepoints with marker (`-m').  */
   ops = &strace_marker_breakpoint_ops;
-  *ops = vtable_breakpoint_ops;
+  *ops = base_breakpoint_ops;
   ops->create_sals_from_location = strace_marker_create_sals_from_location;
   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
 }