/* Generic static probe support for GDB.
- Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ Copyright (C) 2012-2019 Free Software Foundation, Inc.
This file is part of GDB.
/* Static operations associated with a generic probe. */
-const any_static_probe_ops any_static_probe_ops;
+const any_static_probe_ops any_static_probe_ops {};
/* A helper for parse_probes that decodes a probe specification in
SEARCH_PSPACE. It appends matching SALs to RESULT. */
const char *name,
std::vector<symtab_and_line> *result)
{
- struct objfile *objfile;
-
- ALL_PSPACE_OBJFILES (search_pspace, objfile)
+ for (objfile *objfile : all_objfiles (search_pspace))
{
if (!objfile->sf || !objfile->sf->sym_probe_fns)
continue;
struct bound_probe
find_probe_by_pc (CORE_ADDR pc)
{
- struct objfile *objfile;
struct bound_probe result;
result.objfile = NULL;
result.prob = NULL;
- ALL_OBJFILES (objfile)
- {
- 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. */
- const std::vector<probe *> &probes
- = objfile->sf->sym_probe_fns->sym_get_probes (objfile);
- for (probe *p : probes)
- if (p->get_relocated_address (objfile) == pc)
- {
- result.objfile = objfile;
- result.prob = p;
- return result;
- }
- }
+ for (objfile *objfile : all_objfiles (current_program_space))
+ {
+ 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. */
+ const std::vector<probe *> &probes
+ = objfile->sf->sym_probe_fns->sym_get_probes (objfile);
+ for (probe *p : probes)
+ if (p->get_relocated_address (objfile) == pc)
+ {
+ result.objfile = objfile;
+ result.prob = p;
+ return result;
+ }
+ }
return result;
}
collect_probes (const std::string &objname, const std::string &provider,
const std::string &probe_name, const static_probe_ops *spops)
{
- struct objfile *objfile;
std::vector<bound_probe> result;
gdb::optional<compiled_regex> obj_pat, prov_pat, probe_pat;
obj_pat.emplace (objname.c_str (), REG_NOSUB,
_("Invalid object file regexp"));
- ALL_OBJFILES (objfile)
+ for (objfile *objfile : all_objfiles (current_program_space))
{
if (! objfile->sf || ! objfile->sf->sym_probe_fns)
continue;
std::vector<struct info_probe_column> headings
= spops->gen_info_probes_table_header ();
- for (const struct info_probe_column &column : headings)
+ for (const info_probe_column &column : headings)
{
size_t size_max = strlen (column.print_name);
std::vector<struct info_probe_column> headings
= spops->gen_info_probes_table_header ();
- for (const struct info_probe_column &column : headings)
+ for (const info_probe_column &column : headings)
current_uiout->field_string (column.field_name, _("n/a"));
}