]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Don't use virtual destructor in addrmap
authorTom Tromey <tromey@adacore.com>
Mon, 26 Feb 2024 18:39:49 +0000 (11:39 -0700)
committerTom Tromey <tromey@adacore.com>
Thu, 21 Mar 2024 18:21:23 +0000 (12:21 -0600)
The addrmap polymorphism is sort of "phony" in that there isn't really
code in the tree that can be presented with either type.  I haven't
tried to fix this (though perhaps I may); but meanwhile it's handy for
the next patch if addrmap_fixed has a trivial destructor.  This patch
achieves this by making the addrmap destructor non-virtual, and also
making it protected so that objects of any of these types cannot be
destroyed when only the base class is known.

gdb/addrmap.h

index ba83607ad8cf724558c101c1a86b360933aaec54..0d61046cebdd2eed0b2aa9739c791dfc5c88e053 100644 (file)
@@ -44,8 +44,6 @@ using addrmap_foreach_const_fn
 /* The base class for addrmaps.  */
 struct addrmap
 {
-  virtual ~addrmap () = default;
-
   /* Return the object associated with ADDR in MAP.  */
   const void *find (CORE_ADDR addr) const
   { return this->do_find (addr); }
@@ -68,6 +66,9 @@ struct addrmap
   { return this->do_foreach (fn); }
 
 
+protected:
+  ~addrmap () = default;
+
 private:
   /* Worker for find, implemented by sub-classes.  */
   virtual void *do_find (CORE_ADDR addr) const = 0;