aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@ericsson.com>2017-10-27 22:05:42 -0400
committerSimon Marchi <simon.marchi@ericsson.com>2017-10-27 22:12:01 -0400
commit45461e0dcaf4193b5b4478031f515ffb7911ad85 (patch)
tree204c89fd51a7bf85e51010fabbe9ea9ff92d4dc3 /gdb/breakpoint.c
parent43dce4394513d15ba8122c3bf442ec1028d93feb (diff)
downloadbinutils-45461e0dcaf4193b5b4478031f515ffb7911ad85.zip
binutils-45461e0dcaf4193b5b4478031f515ffb7911ad85.tar.gz
binutils-45461e0dcaf4193b5b4478031f515ffb7911ad85.tar.bz2
Get rid of VEC(probe_p)
Replace the remaining usages of VEC(probe_p) with std::vector. Regtested on the buildbot. gdb/ChangeLog: * probe.h: Don't include gdb_vecs.h. (DEF_VEC_P (probe_p)): Remove. (find_probes_in_objfile): Return an std::vector. * probe.c (find_probes_in_objfile): Likewise. * breakpoint.c (breakpoint_objfile_data) <longjmp_probes>: Change type to std::vector. <exception_probes>: Likewise. (free_breakpoint_probes): Don't manually free vectors. (create_longjmp_master_breakpoint): Adjust. (create_exception_master_breakpoint): Adjust. * solib-svr4.c (svr4_create_probe_breakpoints): Change parameter type, adjust. (svr4_create_solib_event_breakpoints): Adjust.
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r--gdb/breakpoint.c64
1 files changed, 23 insertions, 41 deletions
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 3601e7d..aadd6ca 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -3191,8 +3191,9 @@ struct breakpoint_objfile_data
/* True if we have looked for longjmp probes. */
int longjmp_searched = 0;
- /* SystemTap probe points for longjmp (if any). */
- VEC (probe_p) *longjmp_probes = NULL;
+ /* SystemTap probe points for longjmp (if any). These are non-owning
+ references. */
+ std::vector<probe *> longjmp_probes;
/* Minimal symbol for "std::terminate()" (if any). */
struct bound_minimal_symbol terminate_msym {};
@@ -3203,8 +3204,9 @@ struct breakpoint_objfile_data
/* True if we have looked for exception probes. */
int exception_searched = 0;
- /* SystemTap probe points for unwinding (if any). */
- VEC (probe_p) *exception_probes = NULL;
+ /* SystemTap probe points for unwinding (if any). These are non-owning
+ references. */
+ std::vector<probe *> exception_probes;
};
static const struct objfile_data *breakpoint_objfile_key;
@@ -3244,9 +3246,6 @@ free_breakpoint_objfile_data (struct objfile *obj, void *data)
struct breakpoint_objfile_data *bp_objfile_data
= (struct breakpoint_objfile_data *) data;
- VEC_free (probe_p, bp_objfile_data->longjmp_probes);
- VEC_free (probe_p, bp_objfile_data->exception_probes);
-
delete bp_objfile_data;
}
@@ -3328,43 +3327,35 @@ create_longjmp_master_breakpoint (void)
if (!bp_objfile_data->longjmp_searched)
{
- VEC (probe_p) *ret;
+ std::vector<probe *> ret
+ = find_probes_in_objfile (objfile, "libc", "longjmp");
- ret = find_probes_in_objfile (objfile, "libc", "longjmp");
- if (ret != NULL)
+ if (!ret.empty ())
{
/* We are only interested in checking one element. */
- struct probe *p = VEC_index (probe_p, ret, 0);
+ probe *p = ret[0];
if (!can_evaluate_probe_arguments (p))
{
/* We cannot use the probe interface here, because it does
not know how to evaluate arguments. */
- VEC_free (probe_p, ret);
- ret = NULL;
+ ret.clear ();
}
}
bp_objfile_data->longjmp_probes = ret;
bp_objfile_data->longjmp_searched = 1;
}
- if (bp_objfile_data->longjmp_probes != NULL)
+ if (!bp_objfile_data->longjmp_probes.empty ())
{
- int i;
- struct probe *probe;
struct gdbarch *gdbarch = get_objfile_arch (objfile);
- for (i = 0;
- VEC_iterate (probe_p,
- bp_objfile_data->longjmp_probes,
- i, probe);
- ++i)
+ for (probe *p : bp_objfile_data->longjmp_probes)
{
struct breakpoint *b;
b = create_internal_breakpoint (gdbarch,
- get_probe_address (probe,
- objfile),
+ get_probe_address (p, objfile),
bp_longjmp_master,
&internal_breakpoint_ops);
b->location = new_probe_location ("-probe-stap libc:longjmp");
@@ -3489,44 +3480,35 @@ create_exception_master_breakpoint (void)
/* We prefer the SystemTap probe point if it exists. */
if (!bp_objfile_data->exception_searched)
{
- VEC (probe_p) *ret;
-
- ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
+ std::vector<probe *> ret
+ = find_probes_in_objfile (objfile, "libgcc", "unwind");
- if (ret != NULL)
+ if (!ret.empty ())
{
/* We are only interested in checking one element. */
- struct probe *p = VEC_index (probe_p, ret, 0);
+ probe *p = ret[0];
if (!can_evaluate_probe_arguments (p))
{
/* We cannot use the probe interface here, because it does
not know how to evaluate arguments. */
- VEC_free (probe_p, ret);
- ret = NULL;
+ ret.clear ();
}
}
bp_objfile_data->exception_probes = ret;
bp_objfile_data->exception_searched = 1;
}
- if (bp_objfile_data->exception_probes != NULL)
+ if (!bp_objfile_data->exception_probes.empty ())
{
struct gdbarch *gdbarch = get_objfile_arch (objfile);
- int i;
- struct probe *probe;
-
- for (i = 0;
- VEC_iterate (probe_p,
- bp_objfile_data->exception_probes,
- i, probe);
- ++i)
+
+ for (probe *p : bp_objfile_data->exception_probes)
{
struct breakpoint *b;
b = create_internal_breakpoint (gdbarch,
- get_probe_address (probe,
- objfile),
+ get_probe_address (p, objfile),
bp_exception_master,
&internal_breakpoint_ops);
b->location = new_probe_location ("-probe-stap libgcc:unwind");