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

* Re: [PATCH] Add support for dwarf2 vectors
  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
  1 sibling, 1 reply; 4+ messages in thread
From: Daniel Berlin @ 2002-04-25 17:44 UTC (permalink / raw)
  To: Elena Zannoni; +Cc: gdb-patches

On Wed, 24 Apr 2002, Elena Zannoni wrote:

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

I haven't seen the patch yet, but did you add support to readelf as well?


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

* Re: [PATCH] Add support for dwarf2 vectors
  2002-04-25 17:44 ` Daniel Berlin
@ 2002-04-25 20:32   ` Elena Zannoni
  0 siblings, 0 replies; 4+ messages in thread
From: Elena Zannoni @ 2002-04-25 20:32 UTC (permalink / raw)
  To: Daniel Berlin; +Cc: Elena Zannoni, gdb-patches

Daniel Berlin writes:
 > On Wed, 24 Apr 2002, Elena Zannoni wrote:
 > 
 > > 
 > > 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.
 > 
 > I haven't seen the patch yet, but did you add support to readelf as well?

yes.

Elena


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

* Re: [PATCH] Add support for dwarf2 vectors
  2002-04-24 18:56 [PATCH] Add support for dwarf2 vectors Elena Zannoni
  2002-04-25 17:44 ` Daniel Berlin
@ 2002-04-26 13:08 ` Elena Zannoni
  1 sibling, 0 replies; 4+ messages in thread
From: Elena Zannoni @ 2002-04-26 13:08 UTC (permalink / raw)
  To: gdb-patches




Committed.

Elena

Elena Zannoni writes:

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