This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA] Allow Windows UNWIND_INFO version 2.
- From: Tristan Gingold <gingold at adacore dot com>
- To: "<gdb-patches at sourceware dot org> ml" <gdb-patches at sourceware dot org>
- Date: Wed, 4 Dec 2013 09:40:39 +0100
- Subject: Re: [RFA] Allow Windows UNWIND_INFO version 2.
- Authentication-results: sourceware.org; auth=none
- References: <1386070345-8237-1-git-send-email-brobecker at adacore dot com> <529E274D dot 607 at redhat dot com> <20131203195833 dot GA31963 at calimero dot vinschen dot de>
On 03 Dec 2013, at 20:58, Corinna Vinschen <vinschen@redhat.com> wrote:
> On Dec 3 18:47, Pedro Alves wrote:
>> On 12/03/2013 11:32 AM, Joel Brobecker wrote:
>>> @@ -696,7 +697,17 @@ amd64_windows_frame_decode_insns (struct frame_info *this_frame,
>>> return;
>>>
>>> end_insns = &insns[codes_count * 2];
>>> - for (p = insns; p < end_insns; p += 2)
>>> + p = insns;
>>> +
>>> + /* Skip opcodes 6 of version 2. This opcode is not documented. */
>>> + if (PEX64_UWI_VERSION (ex_ui.Version_Flags) == 2)
>>> + {
>>> + for (; p < end_insns; p += 2)
>>> + if (PEX64_UNWCODE_CODE (p[1]) != 6)
>>> + break;
>>> + }
>>
>> I'd consider merging with the existing loop, so that
>> we print the opcodes when frame debug is enabled.
>>
>> But anyway, this looks fine to me.
>>
>> I clicked on "Did you find this helpful? No" at:
>>
>> http://msdn.microsoft.com/en-us/library/ck9asaa9.aspx
>>
>> and asked for info about v2 and opcode 6. Not holding
>> my breath though.
>
> Calling strings(1) on the DLLs in the Windows system32 dir on a Windows
> 8.1 system reveals the following curious info:
Clever !
It also shows AMD64_UWOP_SPARE.
Tristan.
>
> $ strings /cygdrive/c/Windows/System32/dbghelp.dll | grep UWOP
> AMD64_UWOP_PUSH_NONVOL Register %x RSP %I64X
> AMD64_UWOP_ALLOC_LARGE FrameOffs %x %x RSP %I64X + %x
> AMD64_UWOP_ALLOC_LARGE FrameOffs %x RSP %I64X + %x
> AMD64_UWOP_ALLOC_SMALL Info %x RSP %I64X
> AMD64_UWOP_SET_FPREG FrameReg %x FrameOffs %x RSP %I64X
> AMD64_UWOP_SAVE_NONVOL Register %x FrameBase %I64X FrameOffs %x RSP %I64X
> AMD64_UWOP_SAVE_NONVOL_FAR Register %x FrameBase %I64X FrameOffs %x %x RSP %I64X
> AMD64_UWOP_EPILOG OpInfo: %x
> AMD64_UWOP_SPARE OpInfo: %x FrameOffs %x
> AMD64_UWOP_SAVE_XMM128 Register %x FrameBase %I64X FrameOffs %x RSP %I64X
> AMD64_UWOP_SAVE_XMM128_FAR Register %x FrameBase %I64X FrameOffs %x %x RSP %I64X
> AMD64_UWOP_PUSH_MACHFRAME Info %x RetAddr %I64X StkAddr %I64X RSP %I64X
>
> So it looks like opcode 6 is AMD64_UWOP_EPILOG with a single 32 bit
> operation info. What 32 bit info would that be?
>
>
> Corinna
>
> --
> Corinna Vinschen
> Cygwin Maintainer
> Red Hat