diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2017-10-27 22:05:42 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2017-10-27 22:12:01 -0400 |
commit | 45461e0dcaf4193b5b4478031f515ffb7911ad85 (patch) | |
tree | 204c89fd51a7bf85e51010fabbe9ea9ff92d4dc3 /gdb/breakpoint.c | |
parent | 43dce4394513d15ba8122c3bf442ec1028d93feb (diff) | |
download | binutils-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.c | 64 |
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"); |