From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22091 invoked by alias); 4 Dec 2013 08:40:49 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 22077 invoked by uid 89); 4 Dec 2013 08:40:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.1 required=5.0 tests=AWL,BAYES_50,RDNS_NONE autolearn=no version=3.3.2 X-HELO: smtp.eu.adacore.com Received: from Unknown (HELO smtp.eu.adacore.com) (194.98.77.210) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 04 Dec 2013 08:40:47 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id 4292826C036B for ; Wed, 4 Dec 2013 09:40:39 +0100 (CET) Received: from smtp.eu.adacore.com ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BDRFNj9DZCHT for ; Wed, 4 Dec 2013 09:40:39 +0100 (CET) Received: from ulanbator.act-europe.fr (ulanbator.act-europe.fr [10.10.1.67]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.eu.adacore.com (Postfix) with ESMTPSA id 2609A26C0324 for ; Wed, 4 Dec 2013 09:40:39 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.0 \(1822\)) Subject: Re: [RFA] Allow Windows UNWIND_INFO version 2. From: Tristan Gingold In-Reply-To: <20131203195833.GA31963@calimero.vinschen.de> Date: Wed, 04 Dec 2013 08:40:00 -0000 Content-Transfer-Encoding: quoted-printable Message-Id: <2FD191B1-A2C3-41ED-98B4-7D938BBE2AC8@adacore.com> References: <1386070345-8237-1-git-send-email-brobecker@adacore.com> <529E274D.607@redhat.com> <20131203195833.GA31963@calimero.vinschen.de> To: " ml" X-IsSubscribed: yes X-SW-Source: 2013-12/txt/msg00118.txt.bz2 On 03 Dec 2013, at 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_inf= o *this_frame, >>> return; >>>=20 >>> end_insns =3D &insns[codes_count * 2]; >>> - for (p =3D insns; p < end_insns; p +=3D 2) >>> + p =3D insns; >>> + >>> + /* Skip opcodes 6 of version 2. This opcode is not documented. = */ >>> + if (PEX64_UWI_VERSION (ex_ui.Version_Flags) =3D=3D 2) >>> + { >>> + for (; p < end_insns; p +=3D 2) >>> + if (PEX64_UNWCODE_CODE (p[1]) !=3D 6) >>> + break; >>> + } >>=20 >> I'd consider merging with the existing loop, so that >> we print the opcodes when frame debug is enabled. >>=20 >> But anyway, this looks fine to me. >>=20 >> I clicked on "Did you find this helpful? No" at: >>=20 >> http://msdn.microsoft.com/en-us/library/ck9asaa9.aspx >>=20 >> and asked for info about v2 and opcode 6. Not holding >> my breath though. >=20 > 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. >=20 > $ 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 R= SP %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 R= SP %I64X > AMD64_UWOP_PUSH_MACHFRAME Info %x RetAddr %I64X StkAddr %I64X RSP %I64X >=20 > So it looks like opcode 6 is AMD64_UWOP_EPILOG with a single 32 bit=20 > operation info. What 32 bit info would that be? >=20 >=20 > Corinna >=20 > --=20 > Corinna Vinschen > Cygwin Maintainer > Red Hat