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 master updated. 53e8f97d571973c3bfb04ef3d9a358ea4a0e8e62


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, master has been updated
       via  53e8f97d571973c3bfb04ef3d9a358ea4a0e8e62 (commit)
       via  e068c55d5e2f73e85d0d51a39d2a8921ce262d55 (commit)
      from  8c7840168031ab93432214580bf14ce63d638d22 (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=53e8f97d571973c3bfb04ef3d9a358ea4a0e8e62

commit 53e8f97d571973c3bfb04ef3d9a358ea4a0e8e62
Author: Joel Brobecker <brobecker@adacore.com>
Date:   Wed Jun 11 14:31:20 2014 +0200

    Add debug trace in amd64-windows-tdep.c::amd64_windows_frame_decode_insns
    
    This is a trace which would have been useful when trying to understand
    why the debugger was not decoding the stream of unwind codes I was
    expecting.  This patch adds a trace first informing us that we are
    following the unwind info to the next unwind record in that chain.
    
    gdb/ChangeLog:
    
            * amd64-windows-tdep.c (amd64_windows_frame_decode_insns):
            Add debug trace.

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

commit e068c55d5e2f73e85d0d51a39d2a8921ce262d55
Author: Joel Brobecker <brobecker@adacore.com>
Date:   Wed Jun 11 14:07:27 2014 +0200

    x64-windows: Fix extraction of chained UNWIND_INFO
    
    On x86_64-windows, GDB is unable to unwind past some code in
    mswsock.dll. For instance:
    
        (gdb) bt
        #0  0x00000000778712fa in ntdll!ZwWaitForSingleObject ()
           from C:\Windows\SYSTEM32\ntdll.dll
        #1  0x000007fefcfb0f75 in WSPStartup ()
           from C:\Windows\system32\mswsock.dll
        Backtrace stopped: previous frame inner to this frame (corrupt stack?)
    
    The UNWIND_INFO record for frame #1's PC has a UNW_FLAG_CHAININFO
    flag, and so after having decoded this unwind record, GDB's decoder
    next tries to locate the next unwind record on the chain. Unfortunately,
    the location of that unwind info appears to be miscomputed. This is
    the expression used:
    
             chain_vma = cache->image_base + unwind_info
               + sizeof (ex_ui) + ((codes_count + 1) & ~1) * 2 + 8;
    
    The chain-info is expected to be right after the "Unwind codes
    array" which is itself after all the fields of ex_ui's struct.
    So the "+ 8" offset at the end should not be there.
    
    Because of that extra offset, we were reading no longer processing
    correct unwind info, leading the unwinder computing the wrong frame
    size, computing the wrong return address, etc.
    
    gdb/ChangeLog:
    
            * amd64-windows-tdep.c (amd64_windows_frame_decode_insns):
            Remove "+ 8" offset in computation of CHAIN_VMA.

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

Summary of changes:
 gdb/ChangeLog            |   10 ++++++++++
 gdb/amd64-windows-tdep.c |   11 ++++++++++-
 2 files changed, 20 insertions(+), 1 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]