aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2023-08-28 12:40:35 -0600
committerTom Tromey <tromey@adacore.com>2023-08-29 13:36:55 -0600
commitc73556cb0e6da3c2a4484975ee51e052a9be8b36 (patch)
tree2f0a60170f6424004e4ff441c7c0b798fb0a0a68 /gdb
parent4fd1ba162ed6f197169d2af29f4230d7a89e2636 (diff)
downloadgdb-c73556cb0e6da3c2a4484975ee51e052a9be8b36.zip
gdb-c73556cb0e6da3c2a4484975ee51e052a9be8b36.tar.gz
gdb-c73556cb0e6da3c2a4484975ee51e052a9be8b36.tar.bz2
Use gdb::array_view for value_array
This changes value_array to accept an array view. I also replaced an alloca with a std::vector in array_operation::evaluate. This function can work on any size of array, so it seems bad to use alloca. Reviewed-by: John Baldwin <jhb@FreeBSD.org> Approved-By: Simon Marchi <simon.marchi@efficios.com>
Diffstat (limited to 'gdb')
-rw-r--r--gdb/eval.c2
-rw-r--r--gdb/rust-lang.c2
-rw-r--r--gdb/valops.c3
-rw-r--r--gdb/value.h2
4 files changed, 5 insertions, 4 deletions
diff --git a/gdb/eval.c b/gdb/eval.c
index 457a669..00b9231 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -2515,7 +2515,7 @@ array_operation::evaluate (struct type *expect_type,
return set;
}
- value **argvec = XALLOCAVEC (struct value *, nargs);
+ std::vector<value *> argvec (nargs);
for (tem = 0; tem < nargs; tem++)
{
/* Ensure that array expressions are coerced into pointer
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
index 5eb33d0..f6e7d25 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
@@ -1344,7 +1344,7 @@ eval_op_rust_array (struct type *expect_type, struct expression *exp,
for (i = 0; i < copies; ++i)
eltvec[i] = elt;
- return value_array (0, copies - 1, eltvec.data ());
+ return value_array (0, copies - 1, eltvec);
}
else
{
diff --git a/gdb/valops.c b/gdb/valops.c
index ea9d9b3..1133049 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -1692,7 +1692,8 @@ value_ind (struct value *arg1)
don't currently enforce any restriction on their types). */
struct value *
-value_array (int lowbound, int highbound, struct value **elemvec)
+value_array (int lowbound, int highbound,
+ gdb::array_view<struct value *> elemvec)
{
int nelem;
int idx;
diff --git a/gdb/value.h b/gdb/value.h
index e5c63dc..ccf5219 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -1226,7 +1226,7 @@ inline struct value *value_string (const char *ptr, ssize_t count,
}
extern struct value *value_array (int lowbound, int highbound,
- struct value **elemvec);
+ gdb::array_view<struct value *> elemvec);
extern struct value *value_concat (struct value *arg1, struct value *arg2);