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/probe.c | |
parent | 331f81b22cb6b2a8dec2acc0a728c4159c1c7b5e (diff) | |
download | fsf-binutils-gdb-aaa63a31909946c4f68da64a93662147d67630bd.zip fsf-binutils-gdb-aaa63a31909946c4f68da64a93662147d67630bd.tar.gz fsf-binutils-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/probe.c')
-rw-r--r-- | gdb/probe.c | 38 |
1 files changed, 14 insertions, 24 deletions
diff --git a/gdb/probe.c b/gdb/probe.c index 970d5bd..f09d5a4 100644 --- a/gdb/probe.c +++ b/gdb/probe.c @@ -58,10 +58,6 @@ parse_probes_in_pspace (const struct probe_ops *probe_ops, ALL_PSPACE_OBJFILES (search_pspace, objfile) { - VEC (probe_p) *probes; - struct probe *probe; - int ix; - if (!objfile->sf || !objfile->sf->sym_probe_fns) continue; @@ -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) { - VEC (probe_p) *probes, *result = NULL; - int ix; - struct probe *probe; + VEC (probe_p) *result = NULL; if (!objfile->sf || !objfile->sf->sym_probe_fns) return NULL; - probes = objfile->sf->sym_probe_fns->sym_get_probes (objfile); - for (ix = 0; VEC_iterate (probe_p, probes, ix, probe); ix++) + const std::vector<probe *> &probes + = objfile->sf->sym_probe_fns->sym_get_probes (objfile); + for (struct probe *probe : probes) { if (strcmp (probe->provider, provider) != 0) continue; @@ -246,17 +242,14 @@ find_probe_by_pc (CORE_ADDR pc) ALL_OBJFILES (objfile) { - VEC (probe_p) *probes; - int ix; - struct probe *probe; - if (!objfile->sf || !objfile->sf->sym_probe_fns || objfile->sect_index_text == -1) continue; /* If this proves too inefficient, we can replace with a hash. */ - probes = objfile->sf->sym_probe_fns->sym_get_probes (objfile); - for (ix = 0; VEC_iterate (probe_p, probes, ix, probe); ix++) + const std::vector<probe *> &probes + = objfile->sf->sym_probe_fns->sym_get_probes (objfile); + for (struct probe *probe : probes) if (get_probe_address (probe, objfile) == pc) { result.objfile = objfile; @@ -297,10 +290,6 @@ collect_probes (const std::string &objname, const std::string &provider, ALL_OBJFILES (objfile) { - VEC (probe_p) *probes; - struct probe *probe; - int ix; - if (! objfile->sf || ! objfile->sf->sym_probe_fns) continue; @@ -310,9 +299,10 @@ collect_probes (const std::string &objname, const std::string &provider, 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) { struct bound_probe bound; @@ -901,7 +891,7 @@ probe_any_is_linespec (const char **linespecp) /* Dummy method used for `probe_ops_any'. */ static void -probe_any_get_probes (VEC (probe_p) **probesp, struct objfile *objfile) +probe_any_get_probes (std::vector<probe *> *probesp, struct objfile *objfile) { /* No probes can be provided by this dummy backend. */ } |