diff options
author | Tom Tromey <tromey@adacore.com> | 2020-05-11 14:57:49 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2020-05-11 14:57:49 -0600 |
commit | 5eb68a39a2c2908fc01f03e79daed72ba85dc14c (patch) | |
tree | cc5b9cd67270ab9bf1e49373fecd518ee2adbdd0 /gdb/ada-lang.c | |
parent | e000211765b57e0a1835f2ecea250dd51878fa5f (diff) | |
download | binutils-5eb68a39a2c2908fc01f03e79daed72ba85dc14c.zip binutils-5eb68a39a2c2908fc01f03e79daed72ba85dc14c.tar.gz binutils-5eb68a39a2c2908fc01f03e79daed72ba85dc14c.tar.bz2 |
Fix Ada value printing on PPC64
The val_print removal patches introduced an Ada regression on PPC64
(probably any big-endian system).
The issue comes because value_field does not understand that Ada
wrapper fields can be bitfields that wrap a non-scalar type. In this
case the value is already left-justified, so the justification done
there does the wrong thing.
Perhaps it would be good, eventually, to change value_field to
understand this case. In the meantime this implements an Ada-specific
solution.
gdb/ChangeLog
2020-05-11 Tom Tromey <tromey@adacore.com>
* ada-lang.c (ada_value_primitive_field): Now public.
* ada-lang.h (ada_value_primitive_field): Declare.
* ada-valprint.c (print_field_values): Use
ada_value_primitive_field for wrapper fields.
Diffstat (limited to 'gdb/ada-lang.c')
-rw-r--r-- | gdb/ada-lang.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index be26231..db6f606 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -204,9 +204,6 @@ static struct symbol *standard_lookup (const char *, const struct block *, static struct value *ada_search_struct_field (const char *, struct value *, int, struct type *); -static struct value *ada_value_primitive_field (struct value *, int, int, - struct type *); - static int find_struct_field (const char *, struct type *, int, struct type **, int *, int *, int *, int *); @@ -7125,7 +7122,7 @@ ada_in_variant (LONGEST val, struct type *type, int field_num) fields. FIELDNO says which field. Differs from value_primitive_field only in that it can handle packed values of arbitrary type. */ -static struct value * +struct value * ada_value_primitive_field (struct value *arg1, int offset, int fieldno, struct type *arg_type) { |