Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] Add support for dwarf2 vectors
@ 2002-04-24 18:56 Elena Zannoni
  2002-04-25 17:44 ` Daniel Berlin
  2002-04-26 13:08 ` Elena Zannoni
  0 siblings, 2 replies; 4+ messages in thread
From: Elena Zannoni @ 2002-04-24 18:56 UTC (permalink / raw)
  To: gdb-patches


This is anohter bit of the support for AltiVec on PowerPC.

This introduces support for the new gcc debug info introduced by Jason Merrill:
http://gcc.gnu.org/ml/gcc-patches/2002-04/msg01428.html

It is a bit hard to test, not having the corresponding simulator
changes in the tree yet. It can be done on native G4 machines, though.

I'll follow up with powerpc ABI updates that actually use this stuff.

Elena

Note: this is dependent on a patch for /include/elf/dwarf2.h that I
just posted to the binutils list, otherwise gdb won't build.

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).


Index: dwarf2read.c
===================================================================
RCS file: /cvs/uberbaum/gdb/dwarf2read.c,v
retrieving revision 1.52
diff -u -p -r1.52 dwarf2read.c
--- dwarf2read.c	4 Apr 2002 22:26:43 -0000	1.52
+++ dwarf2read.c	24 Apr 2002 21:40:25 -0000
@@ -2662,6 +2662,16 @@ read_array_type (struct die_info *die, s
   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>";
     }

Index: gdbtypes.h
===================================================================
RCS file: /cvs/uberbaum/gdb/gdbtypes.h,v
retrieving revision 1.27
diff -u -p -r1.27 gdbtypes.h
--- gdbtypes.h	23 Mar 2002 01:24:54 -0000	1.27
+++ gdbtypes.h	24 Apr 2002 21:42:08 -0000
@@ -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
   {
 
Index: gdbtypes.c
===================================================================
RCS file: /cvs/uberbaum/gdb/gdbtypes.c,v
retrieving revision 1.43
diff -u -p -r1.43 gdbtypes.c
--- gdbtypes.c	20 Apr 2002 01:09:28 -0000	1.43
+++ gdbtypes.c	24 Apr 2002 21:42:31 -0000
@@ -3031,6 +3031,13 @@ recursive_dump_type (struct type *type, 
     {
       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);


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2002-04-26 20:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-24 18:56 [PATCH] Add support for dwarf2 vectors Elena Zannoni
2002-04-25 17:44 ` Daniel Berlin
2002-04-25 20:32   ` Elena Zannoni
2002-04-26 13:08 ` Elena Zannoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox