This is the mail archive of the gdb-cvs@sourceware.org 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]

gdb and binutils branch gdb-7.8-branch updated. gdb-7.8-release-80-g63fcc8b


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".

The branch, gdb-7.8-branch has been updated
       via  63fcc8bcd98a8cd9672dd8672f663662f8caa811 (commit)
      from  e8820d83db286ef5445b21ab95537fbe1cf5b6ba (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=63fcc8bcd98a8cd9672dd8672f663662f8caa811

commit 63fcc8bcd98a8cd9672dd8672f663662f8caa811
Author: Pedro Alves <palves@redhat.com>
Date:   Wed Oct 1 10:44:08 2014 +0100

    Aarch64: Make CPSR a 32-bit register again in the target description
    
    This reverts commit a4d9ba85 - 'AARCH64: Change cpsr type to be
    64bit.'.
    
    Even though Linux's ptrace exposes CPSR as 64-bit, CPSR is really
    32-bit, and basing GDB's fundamentals on a particular OS's ptrace(2)
    implementation is a bad idea.
    
    In addition, while that commit intended to fix big endian Aarch64, it
    ended up breaking floating point debugging against GDBserver, for both
    big and little endian, because it changed the CPSR to be 64-bit in the
    features/aarch64-core.xml file, but missed regenerating the
    regformats/aarch64.dat file.  If we generate it now, we see this:
    
      diff --git c/gdb/regformats/aarch64.dat w/gdb/regformats/aarch64.dat
      index afe1028..0d32183 100644
      --- c/gdb/regformats/aarch64.dat
      +++ w/gdb/regformats/aarch64.dat
      @@ -35,7 +35,7 @@ expedite:x29,sp,pc
       64:x30
       64:sp
       64:pc
      -32:cpsr
      +64:cpsr
       128:v0
       128:v1
       128:v2
    
    IOW, that commit left regformats/aarch64.dat still considering CPSR as
    32-bits.  regformats/aarch64.dat is used by GDBserver for its internal
    regcache layout, and for the g/G packet register block.  See the
    generated aarch64.c file in GDBserver's build dir.
    
    So the target description xml file that GDBserver reports to GDB is
    now claiming that CPSR is 64-bit, but what GDBserver actually puts in
    the g/G register packets is 32-bits.  Because GDB thinks CPSR is
    64-bit (because that's what the XML description says), GDB will be
    reading the remaining 32-bit bits of CPSR out of v0 (the register
    immediately afterwards), and then all the registers that follow CPSR
    in the register packet end up wrong in GDB, because they're being read
    from the wrong offsets...
    
    gdb/
    2014-10-01  Pedro Alves  <palves@redhat.com>
    
    	* features/aarch64-core.xml (cpsr): Change back to 32-bit.
    	* features/aarch64.c: Regenerate.

-----------------------------------------------------------------------

Summary of changes:
 gdb/ChangeLog                 |    5 +++++
 gdb/features/aarch64-core.xml |    2 +-
 gdb/features/aarch64.c        |    2 +-
 3 files changed, 7 insertions(+), 2 deletions(-)


hooks/post-receive
-- 
gdb and binutils


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