[18/24] gdb: make so_list::sections not a pointer

Message ID 20231010204213.111285-19-simon.marchi@efficios.com
State New
Headers
Series C++ification of struct so_list |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Testing passed

Commit Message

Simon Marchi Oct. 10, 2023, 8:40 p.m. UTC
  Make the field a vector directly, instead of a pointer to a vector.
This was needed when so_list had to be a trivial type, which is not the
case anymore.

Change-Id: I79a8378ce0d0d1e2206ca08a273ebf332cb3ba14
---
 gdb/solib.c  | 18 ++++++------------
 gdb/solist.h |  2 +-
 2 files changed, 7 insertions(+), 13 deletions(-)
  

Patch

diff --git a/gdb/solib.c b/gdb/solib.c
index 3d6dfdc4e3c3..fabb6e1d938b 100644
--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -592,11 +592,9 @@  solib_map_sections (so_list &so)
     error (_("Shared library file name is too long."));
   strcpy (so.so_name, bfd_get_filename (so.abfd));
 
-  if (so.sections == nullptr)
-    so.sections = new std::vector<target_section>;
-  *so.sections = build_section_table (so.abfd);
+  so.sections = build_section_table (so.abfd);
 
-  for (target_section &p : *so.sections)
+  for (target_section &p : so.sections)
     {
       /* Relocate the section binding addresses as recorded in the shared
 	 object's file by the base address to which the object was actually
@@ -618,7 +616,7 @@  solib_map_sections (so_list &so)
      section tables.  Do this immediately after mapping the object so
      that later nodes in the list can query this object, as is needed
      in solib-osf.c.  */
-  current_program_space->add_target_sections (&so, *so.sections);
+  current_program_space->add_target_sections (&so, so.sections);
 
   return 1;
 }
@@ -630,8 +628,7 @@  so_list::clear ()
 {
   const target_so_ops *ops = gdbarch_so_ops (current_inferior ()->arch ());
 
-  delete this->sections;
-  this->sections = NULL;
+  this->sections.clear ();
 
   gdb_bfd_unref (this->abfd);
   this->abfd = NULL;
@@ -708,7 +705,7 @@  solib_read_symbols (so_list &so, symfile_add_flags flags)
 	  if (so.objfile == NULL)
 	    {
 	      section_addr_info sap
-		= build_section_addr_info_from_section_table (*so.sections);
+		= build_section_addr_info_from_section_table (so.sections);
 	      gdb_bfd_ref_ptr tmp_bfd
 		(gdb_bfd_ref_ptr::new_reference (so.abfd));
 	      so.objfile = symbol_file_add_from_bfd (tmp_bfd, so.so_name,
@@ -1168,10 +1165,7 @@  bool
 solib_contains_address_p (const so_list &solib,
 			  CORE_ADDR address)
 {
-  if (solib.sections == nullptr)
-    return false;
-
-  for (target_section &p : *solib.sections)
+  for (const target_section &p : solib.sections)
     if (p.addr <= address && address < p.endaddr)
       return true;
 
diff --git a/gdb/solist.h b/gdb/solist.h
index ca12fd55ba0f..51b985d53247 100644
--- a/gdb/solist.h
+++ b/gdb/solist.h
@@ -84,7 +84,7 @@  struct so_list
      the file cannot be found or after the command "nosharedlibrary".  */
   struct objfile *objfile = nullptr;
 
-  std::vector<target_section> *sections = nullptr;
+  std::vector<target_section> sections;
 
   /* Record the range of addresses belonging to this shared library.
      There may not be just one (e.g. if two segments are relocated