On Thu, Mar 24, 2011 at 2:57 PM, Ulrich Weigand <ulrich.weig...@de.ibm.com> wrote: > Dave Martin <dave.mar...@linaro.org> wrote: > >> c) Create a new note type specially for this, and dump the >> VFP/NEON regs in there. This is closest to the model followed >> by ptrace, where PTRACE_GETREGS, PTRACE_GETFPREGS and >> PTRAGE_GETVFPREGS are all distinct. > > From a GDB perspective, I'd consider this the preferred solution; > there are precedents for this on other platforms (e.g. PowerPC), > and there is existing GDB/BFD infrastructure to check for presence/ > absence of such notes. > > However, we also need to be able to distinguish the various cases: > VFPv2 vs. VFPv3-D16 vs. VFPv3-D32 vs. VFPv32-D32+NEON > These cause GDB to display/interact with the register set in > different ways ... > > To distinguish 16 vs. 32 registers, we can of course simply look > at the size of the note. But how to detect support for NEON as > opposed to plain VFPv32-D32? I could think of two ways: > > 1) Have *two* new note types, one for VFP, and one for NEON
That may not make sense, since really it's a single register file shared by VFP and NEON. With NEON, you always have 32 x 64-bit regs, but it's possible (although rare) to have this many regs on ARMv7 even if NEON is absent. > 2) Have GDB look into the AT_HWCAP setting in the NT_AUXV note > > Option 2) seems preferable to me, since NT_AUXV is already there, > and it can also be used to detect the integer-only NEON case. We could also dump the relevant hardware capability registers, which can be more informative, though I'm in two minds about whether this is appropriate / beneficial. A layout something like this might work: NT_VFPREGSET* unsigned long flags; unsigned long feature_registers[3]; unsigned long fpscr; unsigned long long regs[16 or 32]; There are currently 3 relevant feature registers, the main floating-point ID register FPSID, and the floating-point / SIMD feature registers MVFR0, MVFR1. In either case, we define the contents of the flags field in such a way as to allow gdb to understand the format, and to allow for future expansion if this is ever needed. (*The note types seem to use different names in linux/elf.h compared with /usr/include/elf.h and GDB. I've followed the outside world's convention here.) Does this look workable? ---Dave > > Thoughts? > > > Mit freundlichen Gruessen / Best Regards > > Ulrich Weigand > > -- > Dr. Ulrich Weigand | Phone: +49-7031/16-3727 > STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E. > IBM Deutschland Research & Development GmbH > Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk > Wittkopp > Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht > Stuttgart, HRB 243294 > > _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev