public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <andrew.burgess@embecosm.com>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 6/6] Change target_section_table to std::vector alias
Date: Sun, 4 Oct 2020 09:46:04 +0100	[thread overview]
Message-ID: <20201004084604.GE605036@embecosm.com> (raw)
In-Reply-To: <20201003193735.2532-7-tom@tromey.com>

* Tom Tromey <tom@tromey.com> [2020-10-03 13:37:35 -0600]:

> Because target_section_table only holds a vector, and because it is
> used in an "open" way, this patch makes it just be an alias for the
> std::vector specialization.  This makes the code less wordy.  If we do
> ever want to add more specialized behavior to this type, it's simple
> enough to convert it back to a struct with the few needed methods
> implied by this change.

Sounds good.

Thanks,
Andrew

> 
> 2020-10-03  Tom Tromey  <tom@tromey.com>
> 
> 	* target.h (struct target_ops) <get_section_table>: Update.
> 	(target_get_section_table): Update.
> 	* target.c (target_get_section_table, target_section_by_addr)
> 	(memory_xfer_partial_1): Update.
> 	* target-section.h (target_section_table): Now an alias.
> 	* target-delegates.c: Rebuild.
> 	* target-debug.h (target_debug_print_target_section_table_p):
> 	Rename from target_debug_print_struct_target_section_table_p.
> 	* symfile.c (build_section_addr_info_from_section_table): Update.
> 	* solib.c (solib_map_sections, solib_contains_address_p): Update.
> 	* solib-svr4.c (scan_dyntag): Update.
> 	* solib-dsbt.c (scan_dyntag): Update.
> 	* remote.c (remote_target::remote_xfer_live_readonly_partial):
> 	Update.
> 	* record-full.c (record_full_core_target::xfer_partial): Update.
> 	* progspace.h (struct program_space) <target_sections>: Update.
> 	* exec.h (print_section_info): Update.
> 	* exec.c (exec_target::close, build_section_table)
> 	(add_target_sections, add_target_sections_of_objfile)
> 	(remove_target_sections, exec_on_vfork)
> 	(section_table_available_memory)
> 	(section_table_xfer_memory_partial)
> 	(exec_target::get_section_table, exec_target::xfer_partial)
> 	(print_section_info, set_section_command)
> 	(exec_set_section_address, exec_target::has_memory): Update.
> 	* corelow.c (core_target::build_file_mappings)
> 	(core_target::xfer_partial, core_target::info_proc_mappings)
> 	(core_target::info_proc_mappings): Update.
> 	* bfd-target.c (class target_bfd): Update
> ---
>  gdb/ChangeLog          | 32 +++++++++++++++++++++
>  gdb/bfd-target.c       |  2 +-
>  gdb/corelow.c          | 10 +++----
>  gdb/exec.c             | 63 +++++++++++++++++++-----------------------
>  gdb/exec.h             |  2 +-
>  gdb/progspace.h        |  2 +-
>  gdb/record-full.c      |  2 +-
>  gdb/remote.c           |  6 ++--
>  gdb/solib-dsbt.c       |  2 +-
>  gdb/solib-svr4.c       |  2 +-
>  gdb/solib.c            |  4 +--
>  gdb/symfile.c          |  4 +--
>  gdb/target-debug.h     |  2 +-
>  gdb/target-delegates.c | 14 +++++-----
>  gdb/target-section.h   |  5 +---
>  gdb/target.c           | 12 ++++----
>  gdb/target.h           |  5 ++--
>  17 files changed, 94 insertions(+), 75 deletions(-)
> 
> diff --git a/gdb/bfd-target.c b/gdb/bfd-target.c
> index d5defab9a80..bf4a98594bd 100644
> --- a/gdb/bfd-target.c
> +++ b/gdb/bfd-target.c
> @@ -59,7 +59,7 @@ class target_bfd : public target_ops
>    /* The section table build from the ALLOC sections in BFD.  Note
>       that we can't rely on extracting the BFD from a random section in
>       the table, since the table can be legitimately empty.  */
> -  struct target_section_table m_table;
> +  target_section_table m_table;
>  };
>  
>  target_xfer_status
> diff --git a/gdb/corelow.c b/gdb/corelow.c
> index 193dccbeeb5..d557475e06f 100644
> --- a/gdb/corelow.c
> +++ b/gdb/corelow.c
> @@ -266,8 +266,8 @@ core_target::build_file_mappings ()
>  	bfd_set_section_alignment (sec, 2);
>  
>  	/* Set target_section fields.  */
> -	m_core_file_mappings.sections.emplace_back ();
> -	target_section &ts = m_core_file_mappings.sections.back ();
> +	m_core_file_mappings.emplace_back ();
> +	target_section &ts = m_core_file_mappings.back ();
>  	ts.addr = start;
>  	ts.endaddr = end;
>  	ts.owner = nullptr;
> @@ -814,7 +814,7 @@ core_target::xfer_partial (enum target_object object, const char *annex,
>  	   or the like) as this should provide a more accurate
>  	   result.  If not, check the stratum beneath us, which should
>  	   be the file stratum.  */
> -	if (!m_core_file_mappings.sections.empty ())
> +	if (!m_core_file_mappings.empty ())
>  	  xfer_status = xfer_memory_via_mappings (readbuf, writebuf, offset,
>  						  len, xfered_len);
>  	else
> @@ -1098,7 +1098,7 @@ get_current_core_target ()
>  void
>  core_target::info_proc_mappings (struct gdbarch *gdbarch)
>  {
> -  if (!m_core_file_mappings.sections.empty ())
> +  if (!m_core_file_mappings.empty ())
>      {
>        printf_filtered (_("Mapped address spaces:\n\n"));
>        if (gdbarch_addr_bit (gdbarch) == 32)
> @@ -1117,7 +1117,7 @@ core_target::info_proc_mappings (struct gdbarch *gdbarch)
>  	}
>      }
>  
> -  for (const target_section &tsp : m_core_file_mappings.sections)
> +  for (const target_section &tsp : m_core_file_mappings)
>      {
>        ULONGEST start = tsp.addr;
>        ULONGEST end = tsp.endaddr;
> diff --git a/gdb/exec.c b/gdb/exec.c
> index ab47757c2b4..dd322129139 100644
> --- a/gdb/exec.c
> +++ b/gdb/exec.c
> @@ -75,7 +75,7 @@ struct exec_target final : public target_ops
>  					const gdb_byte *writebuf,
>  					ULONGEST offset, ULONGEST len,
>  					ULONGEST *xfered_len) override;
> -  struct target_section_table *get_section_table () override;
> +  target_section_table *get_section_table () override;
>    void files_info () override;
>  
>    bool has_memory () override;
> @@ -183,7 +183,7 @@ exec_target::close ()
>    for (struct program_space *ss : program_spaces)
>      {
>        set_current_program_space (ss);
> -      current_target_sections->sections.clear ();
> +      current_target_sections->clear ();
>        exec_close ();
>      }
>  }
> @@ -598,8 +598,8 @@ build_section_table (struct bfd *some_bfd)
>        if (!(aflag & SEC_ALLOC))
>  	continue;
>  
> -      table.sections.emplace_back ();
> -      target_section &sect = table.sections.back ();
> +      table.emplace_back ();
> +      target_section &sect = table.back ();
>        sect.owner = NULL;
>        sect.the_bfd_section = asect;
>        sect.addr = bfd_section_vma (asect);
> @@ -616,14 +616,14 @@ void
>  add_target_sections (void *owner,
>  		     const target_section_table &sections)
>  {
> -  struct target_section_table *table = current_target_sections;
> +  target_section_table *table = current_target_sections;
>  
> -  if (!sections.sections.empty ())
> +  if (!sections.empty ())
>      {
> -      for (const target_section &s : sections.sections)
> +      for (const target_section &s : sections)
>  	{
> -	  table->sections.push_back (s);
> -	  table->sections.back ().owner = owner;
> +	  table->push_back (s);
> +	  table->back ().owner = owner;
>  	}
>  
>        scoped_restore_current_pspace_and_thread restore_pspace_thread;
> @@ -651,7 +651,7 @@ add_target_sections (void *owner,
>  void
>  add_target_sections_of_objfile (struct objfile *objfile)
>  {
> -  struct target_section_table *table = current_target_sections;
> +  target_section_table *table = current_target_sections;
>    struct obj_section *osect;
>  
>    gdb_assert (objfile != nullptr);
> @@ -662,8 +662,8 @@ add_target_sections_of_objfile (struct objfile *objfile)
>        if (bfd_section_size (osect->the_bfd_section) == 0)
>  	continue;
>  
> -      table->sections.emplace_back ();
> -      target_section &ts = table->sections.back ();
> +      table->emplace_back ();
> +      target_section &ts = table->back ();
>        ts.addr = obj_section_addr (osect);
>        ts.endaddr = obj_section_endaddr (osect);
>        ts.the_bfd_section = osect->the_bfd_section;
> @@ -677,22 +677,22 @@ add_target_sections_of_objfile (struct objfile *objfile)
>  void
>  remove_target_sections (void *owner)
>  {
> -  struct target_section_table *table = current_target_sections;
> +  target_section_table *table = current_target_sections;
>  
>    gdb_assert (owner != NULL);
>  
> -  auto it = std::remove_if (table->sections.begin (),
> -			    table->sections.end (),
> +  auto it = std::remove_if (table->begin (),
> +			    table->end (),
>  			    [&] (target_section &sect)
>  			    {
>  			      return sect.owner == owner;
>  			    });
> -  table->sections.erase (it, table->sections.end ());
> +  table->erase (it, table->end ());
>  
>    /* If we don't have any more sections to read memory from,
>       remove the file_stratum target from the stack of each
>       inferior sharing the program space.  */
> -  if (table->sections.empty ())
> +  if (table->empty ())
>      {
>        scoped_restore_current_pspace_and_thread restore_pspace_thread;
>        program_space *curr_pspace = current_program_space;
> @@ -702,7 +702,7 @@ remove_target_sections (void *owner)
>  	  if (inf->pspace != curr_pspace)
>  	    continue;
>  
> -	  if (!inf->pspace->target_sections.sections.empty ())
> +	  if (!inf->pspace->target_sections.empty ())
>  	    continue;
>  
>  	  switch_to_inferior_no_thread (inf);
> @@ -716,7 +716,7 @@ remove_target_sections (void *owner)
>  void
>  exec_on_vfork ()
>  {
> -  if (!current_program_space->target_sections.sections.empty ())
> +  if (!current_program_space->target_sections.empty ())
>      push_target (&exec_ops);
>  }
>  
> @@ -779,7 +779,7 @@ section_table_available_memory (CORE_ADDR memaddr, ULONGEST len,
>  {
>    std::vector<mem_range> memory;
>  
> -  for (const target_section &p : sections.sections)
> +  for (const target_section &p : sections)
>      {
>        if ((bfd_section_flags (p.the_bfd_section) & SEC_READONLY) == 0)
>  	continue;
> @@ -858,7 +858,7 @@ section_table_xfer_memory_partial (gdb_byte *readbuf, const gdb_byte *writebuf,
>  
>    gdb_assert (len != 0);
>  
> -  for (const target_section &p : sections.sections)
> +  for (const target_section &p : sections)
>      {
>        struct bfd_section *asect = p.the_bfd_section;
>        bfd *abfd = asect->owner;
> @@ -918,7 +918,7 @@ section_table_xfer_memory_partial (gdb_byte *readbuf, const gdb_byte *writebuf,
>    return TARGET_XFER_EOF;		/* We can't help.  */
>  }
>  
> -struct target_section_table *
> +target_section_table *
>  exec_target::get_section_table ()
>  {
>    return current_target_sections;
> @@ -930,7 +930,7 @@ exec_target::xfer_partial (enum target_object object,
>  			   const gdb_byte *writebuf,
>  			   ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
>  {
> -  struct target_section_table *table = get_section_table ();
> +  target_section_table *table = get_section_table ();
>  
>    if (object == TARGET_OBJECT_MEMORY)
>      return section_table_xfer_memory_partial (readbuf, writebuf,
> @@ -942,7 +942,7 @@ exec_target::xfer_partial (enum target_object object,
>  \f
>  
>  void
> -print_section_info (struct target_section_table *t, bfd *abfd)
> +print_section_info (target_section_table *t, bfd *abfd)
>  {
>    struct gdbarch *gdbarch = gdbarch_from_bfd (abfd);
>    /* FIXME: 16 is not wide enough when gdbarch_addr_bit > 64.  */
> @@ -961,7 +961,7 @@ print_section_info (struct target_section_table *t, bfd *abfd)
>        bfd_vma entry_point;
>        bool found = false;
>  
> -      for (const target_section &p : t->sections)
> +      for (const target_section &p : *t)
>  	{
>  	  struct bfd_section *psect = p.the_bfd_section;
>  
> @@ -989,7 +989,7 @@ print_section_info (struct target_section_table *t, bfd *abfd)
>        printf_filtered (_("\tEntry point: %s\n"),
>  		       paddress (gdbarch, entry_point));
>      }
> -  for (const target_section &p : t->sections)
> +  for (const target_section &p : *t)
>      {
>        struct bfd_section *psect = p.the_bfd_section;
>        bfd *pbfd = psect->owner;
> @@ -1032,7 +1032,6 @@ set_section_command (const char *args, int from_tty)
>    unsigned long secaddr;
>    char secprint[100];
>    long offset;
> -  struct target_section_table *table;
>  
>    if (args == 0)
>      error (_("Must specify section name and its virtual address"));
> @@ -1044,8 +1043,7 @@ set_section_command (const char *args, int from_tty)
>    /* Parse out new virtual address.  */
>    secaddr = parse_and_eval_address (args);
>  
> -  table = current_target_sections;
> -  for (target_section &p : table->sections)
> +  for (target_section &p : *current_target_sections)
>      {
>        if (!strncmp (secname, bfd_section_name (p.the_bfd_section), seclen)
>  	  && bfd_section_name (p.the_bfd_section)[seclen] == '\0')
> @@ -1071,10 +1069,7 @@ set_section_command (const char *args, int from_tty)
>  void
>  exec_set_section_address (const char *filename, int index, CORE_ADDR address)
>  {
> -  struct target_section_table *table;
> -
> -  table = current_target_sections;
> -  for (target_section &p : table->sections)
> +  for (target_section &p : *current_target_sections)
>      {
>        if (filename_cmp (filename,
>  			bfd_get_filename (p.the_bfd_section->owner)) == 0
> @@ -1091,7 +1086,7 @@ exec_target::has_memory ()
>  {
>    /* We can provide memory if we have any file/target sections to read
>       from.  */
> -  return !current_target_sections->sections.empty ();
> +  return !current_target_sections->empty ();
>  }
>  
>  char *
> diff --git a/gdb/exec.h b/gdb/exec.h
> index f28a033428d..24489654ddc 100644
> --- a/gdb/exec.h
> +++ b/gdb/exec.h
> @@ -115,7 +115,7 @@ extern void add_target_sections_of_objfile (struct objfile *objfile);
>     special cased --- it's filename is omitted; if it is the executable
>     file, its entry point is printed.  */
>  
> -extern void print_section_info (struct target_section_table *table,
> +extern void print_section_info (target_section_table *table,
>  				bfd *abfd);
>  
>  extern void exec_close (void);
> diff --git a/gdb/progspace.h b/gdb/progspace.h
> index 099b4dc0b3a..6a0e9036399 100644
> --- a/gdb/progspace.h
> +++ b/gdb/progspace.h
> @@ -325,7 +325,7 @@ struct program_space
>  
>    /* The set of target sections matching the sections mapped into
>       this program space.  Managed by both exec_ops and solib.c.  */
> -  struct target_section_table target_sections {};
> +  target_section_table target_sections;
>  
>    /* List of shared objects mapped into this space.  Managed by
>       solib.c.  */
> diff --git a/gdb/record-full.c b/gdb/record-full.c
> index 40740f216ce..b5447e5a9a6 100644
> --- a/gdb/record-full.c
> +++ b/gdb/record-full.c
> @@ -2138,7 +2138,7 @@ record_full_core_target::xfer_partial (enum target_object object,
>      {
>        if (record_full_gdb_operation_disable || !writebuf)
>  	{
> -	  for (target_section &p : record_full_core_sections.sections)
> +	  for (target_section &p : record_full_core_sections)
>  	    {
>  	      if (offset >= p.addr)
>  		{
> diff --git a/gdb/remote.c b/gdb/remote.c
> index c9c5ed03ea2..29c7ee64614 100644
> --- a/gdb/remote.c
> +++ b/gdb/remote.c
> @@ -8889,7 +8889,6 @@ remote_target::remote_xfer_live_readonly_partial (gdb_byte *readbuf,
>  						  ULONGEST *xfered_len)
>  {
>    struct target_section *secp;
> -  struct target_section_table *table;
>  
>    secp = target_section_by_addr (this, memaddr);
>    if (secp != NULL
> @@ -8897,9 +8896,8 @@ remote_target::remote_xfer_live_readonly_partial (gdb_byte *readbuf,
>      {
>        ULONGEST memend = memaddr + len;
>  
> -      table = target_get_section_table (this);
> -
> -      for (target_section &p : table->sections)
> +      target_section_table *table = target_get_section_table (this);
> +      for (target_section &p : *table)
>  	{
>  	  if (memaddr >= p.addr)
>  	    {
> diff --git a/gdb/solib-dsbt.c b/gdb/solib-dsbt.c
> index 59089216314..57c7ab18430 100644
> --- a/gdb/solib-dsbt.c
> +++ b/gdb/solib-dsbt.c
> @@ -424,7 +424,7 @@ scan_dyntag (int dyntag, bfd *abfd, CORE_ADDR *ptr)
>      return 0;
>  
>    bool found = false;
> -  for (target_section &target_section : current_target_sections->sections)
> +  for (target_section &target_section : *current_target_sections)
>      if (sect == target_section.the_bfd_section)
>        {
>  	dyn_addr = target_section.addr;
> diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
> index 9bb728ae9b9..a780f8d3467 100644
> --- a/gdb/solib-svr4.c
> +++ b/gdb/solib-svr4.c
> @@ -608,7 +608,7 @@ scan_dyntag (const int desired_dyntag, bfd *abfd, CORE_ADDR *ptr,
>      return 0;
>  
>    bool found = false;
> -  for (target_section &target_section : current_target_sections->sections)
> +  for (target_section &target_section : *current_target_sections)
>      if (sect == target_section.the_bfd_section)
>        {
>  	dyn_addr = target_section.addr;
> diff --git a/gdb/solib.c b/gdb/solib.c
> index bd6a27d8983..b4864429e9a 100644
> --- a/gdb/solib.c
> +++ b/gdb/solib.c
> @@ -556,7 +556,7 @@ solib_map_sections (struct so_list *so)
>      so->sections = new target_section_table;
>    *so->sections = build_section_table (so->abfd);
>  
> -  for (target_section &p : so->sections->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
> @@ -1113,7 +1113,7 @@ bool
>  solib_contains_address_p (const struct so_list *const solib,
>  			  CORE_ADDR address)
>  {
> -  for (target_section &p : solib->sections->sections)
> +  for (target_section &p : *solib->sections)
>      if (p.addr <= address && address < p.endaddr)
>        return true;
>  
> diff --git a/gdb/symfile.c b/gdb/symfile.c
> index f4acec50cca..3332e7f69ff 100644
> --- a/gdb/symfile.c
> +++ b/gdb/symfile.c
> @@ -216,13 +216,13 @@ build_section_addr_info_from_section_table (const target_section_table &table)
>  {
>    section_addr_info sap;
>  
> -  for (const target_section &stp : table.sections)
> +  for (const target_section &stp : table)
>      {
>        struct bfd_section *asect = stp.the_bfd_section;
>        bfd *abfd = asect->owner;
>  
>        if (bfd_section_flags (asect) & (SEC_ALLOC | SEC_LOAD)
> -	  && sap.size () < table.sections.size ())
> +	  && sap.size () < table.size ())
>  	sap.emplace_back (stp.addr,
>  			  bfd_section_name (asect),
>  			  gdb_bfd_section_index (abfd, asect));
> diff --git a/gdb/target-debug.h b/gdb/target-debug.h
> index 1b2feb2c7fb..65a14c41787 100644
> --- a/gdb/target-debug.h
> +++ b/gdb/target-debug.h
> @@ -106,7 +106,7 @@
>    target_debug_do_print (host_address_to_string (X))
>  #define target_debug_print_struct_ui_file_p(X)	\
>    target_debug_do_print (host_address_to_string (X))
> -#define target_debug_print_struct_target_section_table_p(X)	\
> +#define target_debug_print_target_section_table_p(X)	\
>    target_debug_do_print (host_address_to_string (X))
>  #define target_debug_print_async_callback_ftype_p(X) \
>    target_debug_do_print (host_address_to_string (X))
> diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
> index c0968e2040e..e9c349fb7ba 100644
> --- a/gdb/target-delegates.c
> +++ b/gdb/target-delegates.c
> @@ -77,7 +77,7 @@ struct dummy_target : public target_ops
>    void rcmd (const char *arg0, struct ui_file *arg1) override;
>    char *pid_to_exec_file (int arg0) override;
>    void log_command (const char *arg0) override;
> -  struct target_section_table *get_section_table () override;
> +  target_section_table *get_section_table () override;
>    thread_control_capabilities get_thread_control_capabilities () override;
>    bool attach_no_wait () override;
>    bool can_async_p () override;
> @@ -248,7 +248,7 @@ struct debug_target : public target_ops
>    void rcmd (const char *arg0, struct ui_file *arg1) override;
>    char *pid_to_exec_file (int arg0) override;
>    void log_command (const char *arg0) override;
> -  struct target_section_table *get_section_table () override;
> +  target_section_table *get_section_table () override;
>    thread_control_capabilities get_thread_control_capabilities () override;
>    bool attach_no_wait () override;
>    bool can_async_p () override;
> @@ -2021,27 +2021,27 @@ debug_target::log_command (const char *arg0)
>    fputs_unfiltered (")\n", gdb_stdlog);
>  }
>  
> -struct target_section_table *
> +target_section_table *
>  target_ops::get_section_table ()
>  {
>    return this->beneath ()->get_section_table ();
>  }
>  
> -struct target_section_table *
> +target_section_table *
>  dummy_target::get_section_table ()
>  {
>    return NULL;
>  }
>  
> -struct target_section_table *
> +target_section_table *
>  debug_target::get_section_table ()
>  {
> -  struct target_section_table * result;
> +  target_section_table * result;
>    fprintf_unfiltered (gdb_stdlog, "-> %s->get_section_table (...)\n", this->beneath ()->shortname ());
>    result = this->beneath ()->get_section_table ();
>    fprintf_unfiltered (gdb_stdlog, "<- %s->get_section_table (", this->beneath ()->shortname ());
>    fputs_unfiltered (") = ", gdb_stdlog);
> -  target_debug_print_struct_target_section_table_p (result);
> +  target_debug_print_target_section_table_p (result);
>    fputs_unfiltered ("\n", gdb_stdlog);
>    return result;
>  }
> diff --git a/gdb/target-section.h b/gdb/target-section.h
> index 8c81f3d79ba..fc4c800158d 100644
> --- a/gdb/target-section.h
> +++ b/gdb/target-section.h
> @@ -41,9 +41,6 @@ struct target_section
>  
>  /* Holds an array of target sections.  */
>  
> -struct target_section_table
> -{
> -  std::vector<struct target_section> sections;
> -};
> +using target_section_table = std::vector<target_section>;
>  
>  #endif /* GDB_TARGET_SECTION_H */
> diff --git a/gdb/target.c b/gdb/target.c
> index f828d3d6cc3..e3b561649ed 100644
> --- a/gdb/target.c
> +++ b/gdb/target.c
> @@ -811,7 +811,7 @@ target_read_string (CORE_ADDR memaddr, int len, int *bytes_read)
>    return gdb::unique_xmalloc_ptr<char> ((char *) buffer.release ());
>  }
>  
> -struct target_section_table *
> +target_section_table *
>  target_get_section_table (struct target_ops *target)
>  {
>    return target->get_section_table ();
> @@ -822,12 +822,12 @@ target_get_section_table (struct target_ops *target)
>  struct target_section *
>  target_section_by_addr (struct target_ops *target, CORE_ADDR addr)
>  {
> -  struct target_section_table *table = target_get_section_table (target);
> +  target_section_table *table = target_get_section_table (target);
>  
>    if (table == NULL)
>      return NULL;
>  
> -  for (target_section &secp : table->sections)
> +  for (target_section &secp : *table)
>      {
>        if (addr >= secp.addr && addr < secp.endaddr)
>  	return &secp;
> @@ -964,8 +964,7 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
>  
>        if (pc_in_unmapped_range (memaddr, section))
>  	{
> -	  struct target_section_table *table
> -	    = target_get_section_table (ops);
> +	  target_section_table *table = target_get_section_table (ops);
>  	  const char *section_name = section->the_bfd_section->name;
>  
>  	  memaddr = overlay_mapped_address (memaddr, section);
> @@ -985,13 +984,12 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
>    if (readbuf != NULL && trust_readonly)
>      {
>        struct target_section *secp;
> -      struct target_section_table *table;
>  
>        secp = target_section_by_addr (ops, memaddr);
>        if (secp != NULL
>  	  && (bfd_section_flags (secp->the_bfd_section) & SEC_READONLY))
>  	{
> -	  table = target_get_section_table (ops);
> +	  target_section_table *table = target_get_section_table (ops);
>  	  return section_table_xfer_memory_partial (readbuf, writebuf,
>  						    memaddr, len, xfered_len,
>  						    *table);
> diff --git a/gdb/target.h b/gdb/target.h
> index 369394aa929..5eca0e27ef3 100644
> --- a/gdb/target.h
> +++ b/gdb/target.h
> @@ -29,7 +29,6 @@ struct target_ops;
>  struct bp_location;
>  struct bp_target_info;
>  struct regcache;
> -struct target_section_table;
>  struct trace_state_variable;
>  struct trace_status;
>  struct uploaded_tsv;
> @@ -681,7 +680,7 @@ struct target_ops
>        TARGET_DEFAULT_RETURN (NULL);
>      virtual void log_command (const char *)
>        TARGET_DEFAULT_IGNORE ();
> -    virtual struct target_section_table *get_section_table ()
> +    virtual target_section_table *get_section_table ()
>        TARGET_DEFAULT_RETURN (NULL);
>  
>      /* Provide default values for all "must have" methods.  */
> @@ -2421,7 +2420,7 @@ struct target_section *target_section_by_addr (struct target_ops *target,
>  /* Return the target section table this target (or the targets
>     beneath) currently manipulate.  */
>  
> -extern struct target_section_table *target_get_section_table
> +extern target_section_table *target_get_section_table
>    (struct target_ops *target);
>  
>  /* From mem-break.c */
> -- 
> 2.17.2
> 

  reply	other threads:[~2020-10-04  8:46 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-03 19:37 [PATCH 0/6] Change target section table management Tom Tromey
2020-10-03 19:37 ` [PATCH 1/6] Introduce target-section.h Tom Tromey
2020-10-04  8:29   ` Andrew Burgess
2020-10-09  1:17     ` Tom Tromey
2020-10-03 19:37 ` [PATCH 2/6] Use a std::vector in target_section_table Tom Tromey
2020-10-13 16:41   ` Luis Machado
2020-10-13 20:35     ` Tom Tromey
2020-10-13 22:48       ` Luis Machado
2020-10-14 12:58         ` Tom Tromey
2020-10-14 13:01           ` Luis Machado
2020-10-14 13:18             ` Tom Tromey
2020-10-14 13:23               ` Luis Machado
2020-10-14 14:06                 ` Simon Marchi
2020-10-14  9:09   ` Tom de Vries
2020-11-10 17:38   ` Simon Marchi
2020-10-03 19:37 ` [PATCH 3/6] build_section_table cannot fail Tom Tromey
2020-10-04  8:38   ` Andrew Burgess
2020-10-03 19:37 ` [PATCH 4/6] Simplify add_target_sections_of_objfile Tom Tromey
2020-10-04  8:40   ` Andrew Burgess
2020-10-03 19:37 ` [PATCH 5/6] Remove clear_section_table Tom Tromey
2020-10-04  8:44   ` Andrew Burgess
2020-10-03 19:37 ` [PATCH 6/6] Change target_section_table to std::vector alias Tom Tromey
2020-10-04  8:46   ` Andrew Burgess [this message]
2020-10-13  2:19 ` [PATCH 0/6] Change target section table management Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201004084604.GE605036@embecosm.com \
    --to=andrew.burgess@embecosm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).