On Sunday, September 10 2017, Simon Marchi wrote:
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.
Thanks for the patch, Simon. A few comments below.
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.
---
gdb/dtrace-probe.c | 9 +++++----
gdb/elfread.c | 27 ++++++++++-----------------
gdb/probe.c | 38 ++++++++++++++------------------------
gdb/probe.h | 2 +-
gdb/stap-probe.c | 10 +++++-----
gdb/symfile-debug.c | 8 ++++----
gdb/symfile.h | 7 ++-----
7 files changed, 41 insertions(+), 60 deletions(-)
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
index c1a8cb0..f9209ec 100644
--- a/gdb/dtrace-probe.c
+++ b/gdb/dtrace-probe.c
@@ -313,7 +313,8 @@ struct dtrace_dof_probe
static void
dtrace_process_dof_probe (struct objfile *objfile,
- struct gdbarch *gdbarch, VEC (probe_p) **probesp,
+ struct gdbarch *gdbarch,
+ std::vector<probe *> *probesp,
Since you're doing this, what do you think about const-fying these
occurrences of "std::vector<probe *>"?
@@ -71,9 +67,10 @@ parse_probes_in_pspace (const struct probe_ops
*probe_ops,
objfile_namestr) != 0)
continue;
- probes = objfile->sf->sym_probe_fns->sym_get_probes (objfile);
+ const std::vector<probe *> &probes
+ = objfile->sf->sym_probe_fns->sym_get_probes (objfile);
- for (ix = 0; VEC_iterate (probe_p, probes, ix, probe); ix++)
+ for (struct probe *probe : probes)
{
if (probe_ops != &probe_ops_any && probe->pops != probe_ops)
continue;
@@ -211,15 +208,14 @@ VEC (probe_p) *
find_probes_in_objfile (struct objfile *objfile, const char
*provider,
const char *name)
Any reason for not converting this function's return as well?