This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] ppc-linux-nat.c AltiVec regs ptrace


On Wed, Feb 20, 2002 at 03:20:44PM -0500, Elena Zannoni wrote:
> This patch adds support for fetching and storing the AltiVec registers
> on PPC.  I previously submitted a different patch based on a different
> ptrace interface that was rejected by the ppc linux kernel maintainer.
> A new ptrace interface has since been added to the kernel:
> http://ppc.bkbits.net:8080/linuxppc_2_4/cset@1.543.1.14
> 
> This was the old patch, which is now obsolete:
> http://sources.redhat.com/ml/gdb-patches/2001-11/msg00548.html

Thanks for keeping at this after we made you run around in circles on
the ptrace interface.

> The Altivec registers are defined like this:
> #define ELF_NVRREG      33      /* includes vscr */
> /* Altivec registers */
> typedef __vector128 elf_vrreg_t;
> typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG];
> 
> There are 32 vector registers 16 bytes longs, plus a VSCR register
> which is only 4 bytes long, but is fetched as a 16 bytes quantity. Up
> to here we have the elf_vrregset_t structure.
> Appended to this there is space for the VRSAVE register: 4 bytes.
> Even though this vrsave register is not included in the regset
> typedef, it is handled by the ptrace requests.
> 
> The layout is like this:
> 
>  |.|.|.|.|.....|.|.|.|.||.|.|.|x||.|
>  <------->     <-------><-------><->
>    VR0           VR31     VSCR    VRSAVE
> (where x is the actual value of the vscr reg)
> 
> 
> I have added a typedef to the ppc-linux-nat.c file to deal with
> such a layout. I am not sure whether this is the best place to put
> that. Maybe in gregset.h?

Ew.  But I think it should remain local to ppc-linux-nat.c rather than
being visible anywhere outside the nat file.  Nothing else should need
to know.  Well, eventually the -tdep, since we will need this for
core files, but cross corefiles are not your problem at this point.

> Index: ppc-linux-nat.c
> ===================================================================
> RCS file: /cvs/uberbaum/gdb/ppc-linux-nat.c,v
> retrieving revision 1.15
> diff -u -p -r1.15 ppc-linux-nat.c
> --- ppc-linux-nat.c	2002/02/18 15:08:40	1.15
> +++ ppc-linux-nat.c	2002/02/20 19:27:29
> @@ -17,7 +17,7 @@
>     You should have received a copy of the GNU General Public License
>     along with this program; if not, write to the Free Software
>     Foundation, Inc., 59 Temple Place - Suite 330,
> -   Boston, MA 02111-1307, USA.  */
> +   Boston, MA 02111-1307, USA.*/

Nit.  Two spaces after periods.  You did this in a number of other
places throughout the patch, too.

> +int have_ptrace_getvrregs
> +#ifdef HAVE_PTRACE_GETFPXREGS
> +     = 1;
> +#else
> +     = 0;
> +#endif
> +

Huh?  You defined GETVRREGS unconditionally above.  GETFPXREGS has no
place in this file, does it?  Or do the headers define GETFPXREGS?
You also continue this confusion all the way down the patch.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]