aboutsummaryrefslogtreecommitdiff
path: root/gdb/break-catch-syscall.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-07-18 18:23:32 -0600
committerTom Tromey <tom@tromey.com>2017-07-22 16:10:42 -0600
commitb6f48cb022118f838357c07d32d122e9434c0209 (patch)
treedd6f0e588fe605f486653a708ff63442f4183c85 /gdb/break-catch-syscall.c
parente12c9b7a0cda47a87b8203ee9906fd12f68e3666 (diff)
downloadgdb-b6f48cb022118f838357c07d32d122e9434c0209.zip
gdb-b6f48cb022118f838357c07d32d122e9434c0209.tar.gz
gdb-b6f48cb022118f838357c07d32d122e9434c0209.tar.bz2
Use std::vector in struct catch_syscall_inferior_data
This changes struct catch_syscall_inferior_data to use a std::vector rather than a VEC. It also changes it to be allocated with new and destroyed with delete. ChangeLog 2017-07-22 Tom Tromey <tom@tromey.com> * break-catch-syscall.c (struct catch_syscall_inferior_data) <syscalls_counts>: Now a std::vector. (get_catch_syscall_inferior_data): Use "new". (catch_syscall_inferior_data_cleanup): Use "delete". (insert_catch_syscall, remove_catch_syscall) (clear_syscall_counts): Update.
Diffstat (limited to 'gdb/break-catch-syscall.c')
-rw-r--r--gdb/break-catch-syscall.c47
1 files changed, 16 insertions, 31 deletions
diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c
index 0d29c4c..58fc279 100644
--- a/gdb/break-catch-syscall.c
+++ b/gdb/break-catch-syscall.c
@@ -54,14 +54,14 @@ struct catch_syscall_inferior_data
int any_syscall_count;
/* Count of each system call. */
- VEC(int) *syscalls_counts;
+ std::vector<int> syscalls_counts;
/* This counts all syscall catch requests, so we can readily determine
if any catching is necessary. */
int total_syscalls_count;
};
-static struct catch_syscall_inferior_data*
+static struct catch_syscall_inferior_data *
get_catch_syscall_inferior_data (struct inferior *inf)
{
struct catch_syscall_inferior_data *inf_data;
@@ -70,7 +70,7 @@ get_catch_syscall_inferior_data (struct inferior *inf)
inferior_data (inf, catch_syscall_inferior_data));
if (inf_data == NULL)
{
- inf_data = XCNEW (struct catch_syscall_inferior_data);
+ inf_data = new struct catch_syscall_inferior_data ();
set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
}
@@ -80,7 +80,9 @@ get_catch_syscall_inferior_data (struct inferior *inf)
static void
catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
{
- xfree (arg);
+ struct catch_syscall_inferior_data *inf_data
+ = (struct catch_syscall_inferior_data *) arg;
+ delete inf_data;
}
@@ -104,31 +106,17 @@ insert_catch_syscall (struct bp_location *bl)
{
int elem;
- if (iter >= VEC_length (int, inf_data->syscalls_counts))
- {
- int old_size = VEC_length (int, inf_data->syscalls_counts);
- uintptr_t vec_addr_offset
- = old_size * ((uintptr_t) sizeof (int));
- uintptr_t vec_addr;
- VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
- vec_addr = ((uintptr_t) VEC_address (int,
- inf_data->syscalls_counts)
- + vec_addr_offset);
- memset ((void *) vec_addr, 0,
- (iter + 1 - old_size) * sizeof (int));
- }
- elem = VEC_index (int, inf_data->syscalls_counts, iter);
- VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
+ if (iter >= inf_data->syscalls_counts.size ())
+ inf_data->syscalls_counts.resize (iter + 1);
+ ++inf_data->syscalls_counts[iter];
}
}
return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
inf_data->total_syscalls_count != 0,
inf_data->any_syscall_count,
- VEC_length (int,
- inf_data->syscalls_counts),
- VEC_address (int,
- inf_data->syscalls_counts));
+ inf_data->syscalls_counts.size (),
+ inf_data->syscalls_counts.data ());
}
/* Implement the "remove" breakpoint_ops method for syscall
@@ -150,21 +138,18 @@ remove_catch_syscall (struct bp_location *bl, enum remove_bp_reason reason)
for (int iter : c->syscalls_to_be_caught)
{
int elem;
- if (iter >= VEC_length (int, inf_data->syscalls_counts))
+ if (iter >= inf_data->syscalls_counts.size ())
/* Shouldn't happen. */
continue;
- elem = VEC_index (int, inf_data->syscalls_counts, iter);
- VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
+ --inf_data->syscalls_counts[iter];
}
}
return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
inf_data->total_syscalls_count != 0,
inf_data->any_syscall_count,
- VEC_length (int,
- inf_data->syscalls_counts),
- VEC_address (int,
- inf_data->syscalls_counts));
+ inf_data->syscalls_counts.size (),
+ inf_data->syscalls_counts.data ());
}
/* Implement the "breakpoint_hit" breakpoint_ops method for syscall
@@ -629,7 +614,7 @@ clear_syscall_counts (struct inferior *inf)
inf_data->total_syscalls_count = 0;
inf_data->any_syscall_count = 0;
- VEC_free (int, inf_data->syscalls_counts);
+ inf_data->syscalls_counts.clear ();
}
static void