This is the mail archive of the gdb-patches@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]

Re: [RFA] Allow Windows UNWIND_INFO version 2.


On Dec  3 20:58, Corinna Vinschen 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:
> 
> $ 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?

Sorry about that.  the operation info is 4 bits, of course, I got
carried away by giving the size of a %x parameter too much meaning.


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

Attachment: pgp9DmCwPMdZI.pgp
Description: PGP signature


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