mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-17 12:53:17 +08:00
gdb:
* valops.c (value_one): Use get_array_bounds to compute the number of array elements instead of dividing the length of the array by the length of the element types. * valarith.c (value_complement, value_neg): Likewise.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2010-12-14 Ken Werner <ken.werner@de.ibm.com>
|
||||||
|
|
||||||
|
* valops.c (value_one): Use get_array_bounds to compute the number
|
||||||
|
of array elements instead of dividing the length of the array by the
|
||||||
|
length of the element types.
|
||||||
|
* valarith.c (value_complement, value_neg): Likewise.
|
||||||
|
|
||||||
2010-12-10 Ian Lance Taylor <iant@google.com>
|
2010-12-10 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
PR bootstrap/46819
|
PR bootstrap/46819
|
||||||
|
@ -1766,9 +1766,13 @@ value_neg (struct value *arg1)
|
|||||||
{
|
{
|
||||||
struct value *tmp, *val = allocate_value (type);
|
struct value *tmp, *val = allocate_value (type);
|
||||||
struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
|
struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
|
||||||
int i, n = TYPE_LENGTH (type) / TYPE_LENGTH (eltype);
|
int i;
|
||||||
|
LONGEST low_bound, high_bound;
|
||||||
|
|
||||||
for (i = 0; i < n; i++)
|
if (!get_array_bounds (type, &low_bound, &high_bound))
|
||||||
|
error (_("Could not determine the vector bounds"));
|
||||||
|
|
||||||
|
for (i = 0; i < high_bound - low_bound + 1; i++)
|
||||||
{
|
{
|
||||||
tmp = value_neg (value_subscript (arg1, i));
|
tmp = value_neg (value_subscript (arg1, i));
|
||||||
memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
|
memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
|
||||||
@ -1798,10 +1802,14 @@ value_complement (struct value *arg1)
|
|||||||
{
|
{
|
||||||
struct value *tmp;
|
struct value *tmp;
|
||||||
struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
|
struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type));
|
||||||
int i, n = TYPE_LENGTH (type) / TYPE_LENGTH (eltype);
|
int i;
|
||||||
|
LONGEST low_bound, high_bound;
|
||||||
|
|
||||||
|
if (!get_array_bounds (type, &low_bound, &high_bound))
|
||||||
|
error (_("Could not determine the vector bounds"));
|
||||||
|
|
||||||
val = allocate_value (type);
|
val = allocate_value (type);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < high_bound - low_bound + 1; i++)
|
||||||
{
|
{
|
||||||
tmp = value_complement (value_subscript (arg1, i));
|
tmp = value_complement (value_subscript (arg1, i));
|
||||||
memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
|
memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
|
||||||
|
@ -877,11 +877,15 @@ value_one (struct type *type, enum lval_type lv)
|
|||||||
else if (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
|
else if (TYPE_CODE (type1) == TYPE_CODE_ARRAY && TYPE_VECTOR (type1))
|
||||||
{
|
{
|
||||||
struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type1));
|
struct type *eltype = check_typedef (TYPE_TARGET_TYPE (type1));
|
||||||
int i, n = TYPE_LENGTH (type1) / TYPE_LENGTH (eltype);
|
int i;
|
||||||
|
LONGEST low_bound, high_bound;
|
||||||
struct value *tmp;
|
struct value *tmp;
|
||||||
|
|
||||||
|
if (!get_array_bounds (type1, &low_bound, &high_bound))
|
||||||
|
error (_("Could not determine the vector bounds"));
|
||||||
|
|
||||||
val = allocate_value (type);
|
val = allocate_value (type);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < high_bound - low_bound + 1; i++)
|
||||||
{
|
{
|
||||||
tmp = value_one (eltype, lv);
|
tmp = value_one (eltype, lv);
|
||||||
memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
|
memcpy (value_contents_writeable (val) + i * TYPE_LENGTH (eltype),
|
||||||
|
Reference in New Issue
Block a user