diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2017-09-12 13:37:00 +0200 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2017-09-12 13:37:00 +0200 |
commit | aaa63a31909946c4f68da64a93662147d67630bd (patch) | |
tree | 288ebfd638092d65bb229651eb7904e09f2859c3 /gdb/elfread.c | |
parent | 331f81b22cb6b2a8dec2acc0a728c4159c1c7b5e (diff) | |
download | gdb-aaa63a31909946c4f68da64a93662147d67630bd.zip gdb-aaa63a31909946c4f68da64a93662147d67630bd.tar.gz gdb-aaa63a31909946c4f68da64a93662147d67630bd.tar.bz2 |
Make probe_ops::get_probes fill an std::vector
This patch changes one usage of VEC to std::vector. It is a relatively
straightforward 1:1 change. The implementations of
sym_probe_fns::sym_get_probes return a borrowed reference to their probe
vectors, meaning that the caller should not free it. In the new code, I
made them return a const reference to the vector.
This patch and the following one were tested by the buildbot. I didn't
see any failures that looked related to this one.
gdb/ChangeLog:
* probe.h (struct probe_ops) <get_probes>: Change parameter from
vec to std::vector.
* probe.c (parse_probes_in_pspace): Update.
(find_probes_in_objfile): Update.
(find_probe_by_pc): Update.
(collect_probes): Update.
(probe_any_get_probes): Update.
* symfile.h (struct sym_probe_fns) <sym_get_probes> Change
return type to reference to std::vector.
* dtrace-probe.c (dtrace_process_dof_probe): Change parameter to
std::vector and update.
(dtrace_process_dof): Likewise.
(dtrace_get_probes): Likewise.
* elfread.c (elf_get_probes): Change return type to std::vector,
store an std::vector in bfd_data.
(probe_key_free): Update to std::vector.
* stap-probe.c (handle_stap_probe): Change parameter to
std::vector and update.
(stap_get_probes): Likewise.
* symfile-debug.c (debug_sym_get_probes): Change return type to
std::vector and update.
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r-- | gdb/elfread.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c index f3d4641..8a64865 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -1309,35 +1309,30 @@ elf_symfile_init (struct objfile *objfile) /* Implementation of `sym_get_probes', as documented in symfile.h. */ -static VEC (probe_p) * +static const std::vector<probe *> & elf_get_probes (struct objfile *objfile) { - VEC (probe_p) *probes_per_bfd; + std::vector<probe *> *probes_per_bfd; /* Have we parsed this objfile's probes already? */ - probes_per_bfd = (VEC (probe_p) *) bfd_data (objfile->obfd, probe_key); + probes_per_bfd = (std::vector<probe *> *) bfd_data (objfile->obfd, probe_key); - if (!probes_per_bfd) + if (probes_per_bfd == NULL) { int ix; const struct probe_ops *probe_ops; + probes_per_bfd = new std::vector<probe *>; /* Here we try to gather information about all types of probes from the objfile. */ for (ix = 0; VEC_iterate (probe_ops_cp, all_probe_ops, ix, probe_ops); ix++) - probe_ops->get_probes (&probes_per_bfd, objfile); - - if (probes_per_bfd == NULL) - { - VEC_reserve (probe_p, probes_per_bfd, 1); - gdb_assert (probes_per_bfd != NULL); - } + probe_ops->get_probes (probes_per_bfd, objfile); set_bfd_data (objfile->obfd, probe_key, probes_per_bfd); } - return probes_per_bfd; + return *probes_per_bfd; } /* Helper function used to free the space allocated for storing SystemTap @@ -1346,14 +1341,12 @@ elf_get_probes (struct objfile *objfile) static void probe_key_free (bfd *abfd, void *d) { - int ix; - VEC (probe_p) *probes = (VEC (probe_p) *) d; - struct probe *probe; + std::vector<probe *> *probes = (std::vector<probe *> *) d; - for (ix = 0; VEC_iterate (probe_p, probes, ix, probe); ix++) + for (struct probe *probe : *probes) probe->pops->destroy (probe); - VEC_free (probe_p, probes); + delete probes; } |