mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
2002-04-24 Elena Zannoni <ezannoni@redhat.com>
* gdbtypes.h (TYPE_FLAG_VECTOR, TYPE_VECTOR): Define.
* gdbtypes.c (recursive_dump_type): Output the vector flag.
* dwarf2read.c (dwarf_attr_name): Handle new attribute for
vectors.
(read_array_type): Record the fact that this array type is really a
vector (i.e. are passed in by value).
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
2002-04-26 Elena Zannoni <ezannoni@redhat.com>
|
||||
|
||||
* gdbtypes.h (TYPE_FLAG_VECTOR, TYPE_VECTOR): Define.
|
||||
* gdbtypes.c (recursive_dump_type): Output the vector flag.
|
||||
* dwarf2read.c (dwarf_attr_name): Handle new attribute for
|
||||
vectors.
|
||||
(read_array_type): Record the fact that this array type is really a
|
||||
vector (i.e. are passed in by value).
|
||||
|
||||
2002-04-26 Jason Thorpe <thorpej@wasabisystems.com>
|
||||
|
||||
* alpha-tdep.h (gdbarch_tdep): Add sigcontext_addr member.
|
||||
|
||||
@@ -2662,6 +2662,16 @@ read_array_type (struct die_info *die, struct objfile *objfile,
|
||||
while (ndim-- > 0)
|
||||
type = create_array_type (NULL, type, range_types[ndim]);
|
||||
|
||||
/* Understand Dwarf2 support for vector types (like they occur on
|
||||
the PowerPC w/ AltiVec). Gcc just adds another attribute to the
|
||||
array type. This is not part of the Dwarf2/3 standard yet, but a
|
||||
custom vendor extension. The main difference between a regular
|
||||
array and the vector variant is that vectors are passed by value
|
||||
to functions. */
|
||||
attr = dwarf_attr (die, DW_AT_GNU_vector);
|
||||
if (attr)
|
||||
TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
|
||||
|
||||
do_cleanups (back_to);
|
||||
|
||||
/* Install the type in the die. */
|
||||
@@ -5267,6 +5277,8 @@ dwarf_attr_name (register unsigned attr)
|
||||
return "DW_AT_body_begin";
|
||||
case DW_AT_body_end:
|
||||
return "DW_AT_body_end";
|
||||
case DW_AT_GNU_vector:
|
||||
return "DW_AT_GNU_vector";
|
||||
default:
|
||||
return "DW_AT_<unknown>";
|
||||
}
|
||||
|
||||
@@ -3031,6 +3031,13 @@ recursive_dump_type (struct type *type, int spaces)
|
||||
{
|
||||
puts_filtered (" TYPE_FLAG_VARARGS");
|
||||
}
|
||||
/* This is used for things like AltiVec registers on ppc. Gcc emits
|
||||
an attribute for the array type, which tells whether or not we
|
||||
have a vector, instead of a regular array. */
|
||||
if (TYPE_VECTOR (type))
|
||||
{
|
||||
puts_filtered (" TYPE_FLAG_VECTOR");
|
||||
}
|
||||
puts_filtered ("\n");
|
||||
printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
|
||||
gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
|
||||
|
||||
@@ -248,6 +248,13 @@ enum type_code
|
||||
#define TYPE_FLAG_VARARGS (1 << 11)
|
||||
#define TYPE_VARARGS(t) ((t)->flags & TYPE_FLAG_VARARGS)
|
||||
|
||||
/* Identify a vector type. Gcc is handling this by adding an extra
|
||||
attribute to the array type. We slurp that in as a new flag of a
|
||||
type. This is used only in dwarf2read.c. */
|
||||
#define TYPE_FLAG_VECTOR (1 << 12)
|
||||
#define TYPE_VECTOR(t) ((t)->flags & TYPE_FLAG_VECTOR)
|
||||
|
||||
|
||||
struct type
|
||||
{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user