[RFA 3/3] Use std::vector in gdb_bfd_data

Simon Marchi simon.marchi@polymtl.ca
Thu Oct 19 03:35:00 GMT 2017


On 2017-10-18 00:14, Tom Tromey wrote:
> This changes gdb_bfd_data to use std::vector rather than VEC.
> 
> ChangeLog
> 2017-10-17  Tom Tromey  <tom@tromey.com>
> 
> 	* gdb_bfd.c (~gdb_bfd_data): Use for_each.
> 	(struct gdb_bfd_data) <included_bfds>: Now a std::vector.
> 	(gdb_bfd_record_inclusion): Update.
> ---
>  gdb/ChangeLog |  6 ++++++
>  gdb/gdb_bfd.c | 18 +++++-------------
>  2 files changed, 11 insertions(+), 13 deletions(-)
> 
> diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
> index e943d9bb62..de7d6f2fb5 100644
> --- a/gdb/gdb_bfd.c
> +++ b/gdb/gdb_bfd.c
> @@ -33,9 +33,7 @@
>  #include "target.h"
>  #include "gdb/fileio.h"
>  #include "inferior.h"
> -
> -typedef bfd *bfdp;
> -DEF_VEC_P (bfdp);
> +#include <algorithm>
> 
>  /* An object of this type is stored in the section's user data when
>     mapping a section.  */
> @@ -87,14 +85,8 @@ struct gdb_bfd_data
> 
>    ~gdb_bfd_data ()
>    {
> -    int ix;
> -    bfd *included_bfd;
> -
> -    for (ix = 0;
> -	 VEC_iterate (bfdp, included_bfds, ix, included_bfd);
> -	 ++ix)
> -      gdb_bfd_unref (included_bfd);
> -    VEC_free (bfdp, included_bfds);
> +    std::for_each (included_bfds.begin (), included_bfds.end (),
> +		   gdb_bfd_unref);

It's a matter of taste, but I prefer the form

   for (bfd *b : included_bfs):
     gdb_bfd_unref (b);

But instead, can we make the vector a vector of gdb_bfd_ref_ptr, so that 
the default destructor would take care of everything?

Simon



More information about the Gdb-patches mailing list