From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4160 invoked by alias); 30 Jun 2011 20:47:48 -0000 Received: (qmail 4151 invoked by uid 22791); 30 Jun 2011 20:47:46 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_GM,TW_PM X-Spam-Check-By: sourceware.org Received: from mail-qy0-f182.google.com (HELO mail-qy0-f182.google.com) (209.85.216.182) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 30 Jun 2011 20:47:31 +0000 Received: by qyk38 with SMTP id 38so1596641qyk.20 for ; Thu, 30 Jun 2011 13:47:30 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.63.69 with SMTP id a5mr1977476qci.94.1309466850466; Thu, 30 Jun 2011 13:47:30 -0700 (PDT) Received: by 10.229.214.83 with HTTP; Thu, 30 Jun 2011 13:47:30 -0700 (PDT) In-Reply-To: <4E0CC85E.3090401@redhat.com> References: <20110625161357.GA5401@intel.com> <4E078E58.20903@redhat.com> <4E07A879.70509@redhat.com> <4E089A88.60401@redhat.com> <4E0C8361.5050403@redhat.com> <4E0C904E.8090504@redhat.com> <4E0CC85E.3090401@redhat.com> Date: Thu, 30 Jun 2011 21:51:00 -0000 Message-ID: Subject: Re: PATCH [8/n]: Prepare x32: PR other/48007: Unwind library doesn't work with UNITS_PER_WORD > sizeof (void *) From: "H.J. Lu" To: Richard Henderson Cc: Rainer Orth , Jason Merrill , gcc-patches@gcc.gnu.org, Jakub Jelinek Content-Type: multipart/mixed; boundary=0016e6509fa2779c9104a6f402fc X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-06/txt/msg02405.txt.bz2 --0016e6509fa2779c9104a6f402fc Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2937 On Thu, Jun 30, 2011 at 12:02 PM, Richard Henderson wrote: > On 06/30/2011 11:23 AM, H.J. Lu wrote: >> +#ifdef REG_VALUE_IN_UNWIND_CONTEXT >> +typedef _Unwind_Word _Unwind_Context_Reg_Val; >> +/* Signal frame context. =A0*/ >> +#define SIGNAL_FRAME_BIT ((_Unwind_Word) 1 >> 0) > > There's absolutely no reason to re-define this. > So what if the value is most-significant-bit set? > > Nor do I see any reason not to continue setting E_C_B. Done. >> +#define _Unwind_IsExtendedContext(c) 1 > > Why is this not still an inline function? It is defined before _Unwind_Context is declared. I used macros so that there can be one less "#ifdef". >> + >> +static inline _Unwind_Word >> +_Unwind_Get_Unwind_Word (_Unwind_Context_Reg_Val val) >> +{ >> + =A0return val; >> +} >> + >> +static inline _Unwind_Context_Reg_Val >> +_Unwind_Get_Unwind_Context_Reg_Val (_Unwind_Word val) >> +{ >> + =A0return val; >> +} > > I cannot believe this actually works. =A0I see nowhere that > you copy the by-address slot out of the stack frame and > place it into the by-value slot in the unwind context. I changed the implantation based on the feedback from Jason. Now I use the same reg field for both value and address. >> =A0 =A0/* This will segfault if the register hasn't been saved. =A0*/ >> =A0 =A0if (size =3D=3D sizeof(_Unwind_Ptr)) >> - =A0 =A0return * (_Unwind_Ptr *) ptr; >> + =A0 =A0return * (_Unwind_Ptr *) (_Unwind_Internal_Ptr) val; >> =A0 =A0else >> =A0 =A0 =A0{ >> =A0 =A0 =A0 =A0gcc_assert (size =3D=3D sizeof(_Unwind_Word)); >> - =A0 =A0 =A0return * (_Unwind_Word *) ptr; >> + =A0 =A0 =A0return * (_Unwind_Word *) (_Unwind_Internal_Ptr) val; >> =A0 =A0 =A0} > > Indeed, this section is both wrong and belies the change > you purport to make. > > You didn't even test this, did you? > Here is the updated patch. It works on simple tests. I am running full tests. I kept config/i386/value-unwind.h since libgcc/md-unwind-support.h is included too late in unwind-dw2.c and I don't want to move it to be on the safe side. OK for trunk? Thanks. --=20 H.J. --- gcc/ 2011-06-30 H.J. Lu * config.gcc (libgcc_tm_file): Add i386/value-unwind.h for Linux/x86. * system.h (REG_VALUE_IN_UNWIND_CONTEXT): Poisoned. * unwind-dw2.c (_Unwind_Context_Reg_Val): New. (_Unwind_Get_Unwind_Word): Likewise. (_Unwind_Get_Unwind_Context_Reg_Val): Likewise. (_Unwind_Context): Use _Unwind_Context_Reg_Val on the reg field. (_Unwind_IsExtendedContext): Defined as macro. (_Unwind_GetGR): Updated. (_Unwind_SetGR): Likewise. (_Unwind_GetGRPtr): Likewise. (_Unwind_SetGRPtr): Likewise. (_Unwind_SetGRValue): Likewise. (_Unwind_GRByValue): Likewise. (__frame_state_for): Likewise. (uw_install_context_1): Likewise. * doc/tm.texi.in: Document REG_VALUE_IN_UNWIND_CONTEXT. * doc/tm.texi: Regenerated. libgcc/ 2011-06-30 H.J. Lu * config/i386/value-unwind.h: New. --0016e6509fa2779c9104a6f402fc Content-Type: text/plain; charset=US-ASCII; name="gcc-x32-pr48007-6.patch" Content-Disposition: attachment; filename="gcc-x32-pr48007-6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gpk6kch60 Content-length: 13494 Z2NjLwoKMjAxMS0wNi0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgoKCSogY29uZmlnLmdjYyAobGliZ2NjX3RtX2ZpbGUpOiBBZGQgaTM4 Ni92YWx1ZS11bndpbmQuaCBmb3IKCUxpbnV4L3g4Ni4KCgkqIHN5c3RlbS5o IChSRUdfVkFMVUVfSU5fVU5XSU5EX0NPTlRFWFQpOiBQb2lzb25lZC4KCgkq IHVud2luZC1kdzIuYyAoX1Vud2luZF9Db250ZXh0X1JlZ19WYWwpOiBOZXcu CgkoX1Vud2luZF9HZXRfVW53aW5kX1dvcmQpOiBMaWtld2lzZS4KCShfVW53 aW5kX0dldF9VbndpbmRfQ29udGV4dF9SZWdfVmFsKTogTGlrZXdpc2UuCgko X1Vud2luZF9Db250ZXh0KTogVXNlIF9VbndpbmRfQ29udGV4dF9SZWdfVmFs IG9uIHRoZSByZWcgZmllbGQuCgkoX1Vud2luZF9Jc0V4dGVuZGVkQ29udGV4 dCk6IERlZmluZWQgYXMgbWFjcm8uCgkoX1Vud2luZF9HZXRHUik6IFVwZGF0 ZWQuCgkoX1Vud2luZF9TZXRHUik6IExpa2V3aXNlLgoJKF9VbndpbmRfR2V0 R1JQdHIpOiBMaWtld2lzZS4KCShfVW53aW5kX1NldEdSUHRyKTogTGlrZXdp c2UuCgkoX1Vud2luZF9TZXRHUlZhbHVlKTogTGlrZXdpc2UuCgkoX1Vud2lu ZF9HUkJ5VmFsdWUpOiBMaWtld2lzZS4KCShfX2ZyYW1lX3N0YXRlX2Zvcik6 IExpa2V3aXNlLgoJKHV3X2luc3RhbGxfY29udGV4dF8xKTogTGlrZXdpc2Uu CgoJKiBkb2MvdG0udGV4aS5pbjogRG9jdW1lbnQgUkVHX1ZBTFVFX0lOX1VO V0lORF9DT05URVhULgoJKiBkb2MvdG0udGV4aTogUmVnZW5lcmF0ZWQuCgps aWJnY2MvCgoyMDExLTA2LTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+CgoJKiBjb25maWcvaTM4Ni92YWx1ZS11bndpbmQuaDogTmV3LgoK ZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MK aW5kZXggNzNjNDdkNy4uMjcwMmRmMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy5nY2MKKysrIGIvZ2NjL2NvbmZpZy5nY2MKQEAgLTI2MzAsNiArMjY1MSw3 IEBAIGVzYWMKIGNhc2UgJHt0YXJnZXR9IGluCiBpWzM0NTY3XTg2LSotbGlu dXgqIHwgeDg2XzY0LSotbGludXgqKQogCXRtYWtlX2ZpbGU9IiR7dG1ha2Vf ZmlsZX0gaTM4Ni90LXBtbV9tYWxsb2MgaTM4Ni90LWkzODYiCisJbGliZ2Nj X3RtX2ZpbGU9IiR7bGliZ2NjX3RtX2ZpbGV9IGkzODYvdmFsdWUtdW53aW5k LmgiCiAJOzsKIGlbMzQ1NjddODYtKi0qIHwgeDg2XzY0LSotKikKIAl0bWFr ZV9maWxlPSIke3RtYWtlX2ZpbGV9IGkzODYvdC1nbW1fbWFsbG9jIGkzODYv dC1pMzg2IgpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy90bS50ZXhpIGIvZ2NjL2Rv Yy90bS50ZXhpCmluZGV4IDM0MTYyOGIuLjI2NjY3MTYgMTAwNjQ0Ci0tLSBh L2djYy9kb2MvdG0udGV4aQorKysgYi9nY2MvZG9jL3RtLnRleGkKQEAgLTM3 MDEsNiArMzcwMSwxNCBAQCByZXR1cm4gQGNvZGV7QHZhcntyZWdub319Lgog CiBAZW5kIGRlZm1hYwogCitAZGVmbWFjIFJFR19WQUxVRV9JTl9VTldJTkRf Q09OVEVYVAorCitEZWZpbmUgdGhpcyBtYWNybyBpZiB0aGUgdGFyZ2V0IHN0 b3JlcyByZWdpc3RlciB2YWx1ZXMgYXMKK0Bjb2Rle19VbndpbmRfV29yZH0g dHlwZSBpbiB1bndpbmQgY29udGV4dC4gIFRoZSBkZWZhdWx0IGlzIHRvCitz dG9yZSByZWdpc3RlciB2YWx1ZXMgYXMgQGNvZGV7dm9pZCAqfSB0eXBlLgor CitAZW5kIGRlZm1hYworCiBAbm9kZSBFbGltaW5hdGlvbgogQHN1YnNlY3Rp b24gRWxpbWluYXRpbmcgRnJhbWUgUG9pbnRlciBhbmQgQXJnIFBvaW50ZXIK IApkaWZmIC0tZ2l0IGEvZ2NjL2RvYy90bS50ZXhpLmluIGIvZ2NjL2RvYy90 bS50ZXhpLmluCmluZGV4IGY3YzE2ZTkuLjY5MGZhNTIgMTAwNjQ0Ci0tLSBh L2djYy9kb2MvdG0udGV4aS5pbgorKysgYi9nY2MvZG9jL3RtLnRleGkuaW4K QEAgLTM2ODcsNiArMzY4NywxNCBAQCByZXR1cm4gQGNvZGV7QHZhcntyZWdu b319LgogCiBAZW5kIGRlZm1hYwogCitAZGVmbWFjIFJFR19WQUxVRV9JTl9V TldJTkRfQ09OVEVYVAorCitEZWZpbmUgdGhpcyBtYWNybyBpZiB0aGUgdGFy Z2V0IHN0b3JlcyByZWdpc3RlciB2YWx1ZXMgYXMKK0Bjb2Rle19VbndpbmRf V29yZH0gdHlwZSBpbiB1bndpbmQgY29udGV4dC4gIFRoZSBkZWZhdWx0IGlz IHRvCitzdG9yZSByZWdpc3RlciB2YWx1ZXMgYXMgQGNvZGV7dm9pZCAqfSB0 eXBlLgorCitAZW5kIGRlZm1hYworCiBAbm9kZSBFbGltaW5hdGlvbgogQHN1 YnNlY3Rpb24gRWxpbWluYXRpbmcgRnJhbWUgUG9pbnRlciBhbmQgQXJnIFBv aW50ZXIKIApkaWZmIC0tZ2l0IGEvZ2NjL3N5c3RlbS5oIGIvZ2NjL3N5c3Rl bS5oCmluZGV4IGUwMmNiY2QuLmVkMzlkOTMgMTAwNjQ0Ci0tLSBhL2djYy9z eXN0ZW0uaAorKysgYi9nY2Mvc3lzdGVtLmgKQEAgLTc2NCw3ICs3NjQsNyBA QCBleHRlcm4gdm9pZCBmYW5jeV9hYm9ydCAoY29uc3QgY2hhciAqLCBpbnQs IGNvbnN0IGNoYXIgKikgQVRUUklCVVRFX05PUkVUVVJOOwogLyogVGFyZ2V0 IG1hY3JvcyBvbmx5IHVzZWQgZm9yIGNvZGUgYnVpbHQgZm9yIHRoZSB0YXJn ZXQsIHRoYXQgaGF2ZQogICAgbW92ZWQgdG8gbGliZ2NjLXRtLmggb3IgaGF2 ZSBuZXZlciBiZWVuIHByZXNlbnQgZWxzZXdoZXJlLiAgKi8KICAjcHJhZ21h IEdDQyBwb2lzb24gREVDTEFSRV9MSUJSQVJZX1JFTkFNRVMgTElCR0NDMl9H TlVfUFJFRklYCQlcCi0JTURfVU5XSU5EX1NVUFBPUlQgRU5BQkxFX0VYRUNV VEVfU1RBQ0sKKwlNRF9VTldJTkRfU1VQUE9SVCBFTkFCTEVfRVhFQ1VURV9T VEFDSyBSRUdfVkFMVUVfSU5fVU5XSU5EX0NPTlRFWFQKIAogLyogT3RoZXIg b2Jzb2xldGUgdGFyZ2V0IG1hY3Jvcywgb3IgbWFjcm9zIHRoYXQgdXNlZCB0 byBiZSBpbiB0YXJnZXQKICAgIGhlYWRlcnMgYW5kIHdlcmUgbm90IHVzZWQs IGFuZCBtYXkgYmUgb2Jzb2xldGUgb3IgbWF5IG5ldmVyIGhhdmUKZGlmZiAt LWdpdCBhL2djYy91bndpbmQtZHcyLmMgYi9nY2MvdW53aW5kLWR3Mi5jCmlu ZGV4IDE5ZGEyOTkuLjIxMTRiOGIgMTAwNjQ0Ci0tLSBhL2djYy91bndpbmQt ZHcyLmMKKysrIGIvZ2NjL3Vud2luZC1kdzIuYwpAQCAtNTksMTIgKzU5LDQ2 IEBACiAjZGVmaW5lIERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OKFJFR05P KSAoUkVHTk8pCiAjZW5kaWYKIAorI2lmZGVmIFJFR19WQUxVRV9JTl9VTldJ TkRfQ09OVEVYVAordHlwZWRlZiBfVW53aW5kX1dvcmQgX1Vud2luZF9Db250 ZXh0X1JlZ19WYWw7CisKKyNkZWZpbmUgX1Vud2luZF9Jc0V4dGVuZGVkQ29u dGV4dChjKSAxCisKK3N0YXRpYyBpbmxpbmUgX1Vud2luZF9Xb3JkCitfVW53 aW5kX0dldF9VbndpbmRfV29yZCAoX1Vud2luZF9Db250ZXh0X1JlZ19WYWwg dmFsKQoreworICByZXR1cm4gdmFsOworfQorCitzdGF0aWMgaW5saW5lIF9V bndpbmRfQ29udGV4dF9SZWdfVmFsCitfVW53aW5kX0dldF9VbndpbmRfQ29u dGV4dF9SZWdfVmFsIChfVW53aW5kX1dvcmQgdmFsKQoreworICByZXR1cm4g dmFsOworfQorI2Vsc2UKK3R5cGVkZWYgdm9pZCAqX1Vud2luZF9Db250ZXh0 X1JlZ19WYWw7CisKKyNkZWZpbmUgX1Vud2luZF9Jc0V4dGVuZGVkQ29udGV4 dChjKSAoKGMpLT5mbGFncyAmIEVYVEVOREVEX0NPTlRFWFRfQklUKQorCitz dGF0aWMgaW5saW5lIF9VbndpbmRfV29yZAorX1Vud2luZF9HZXRfVW53aW5k X1dvcmQgKF9VbndpbmRfQ29udGV4dF9SZWdfVmFsIHZhbCkKK3sKKyAgcmV0 dXJuIChfVW53aW5kX1dvcmQpIChfVW53aW5kX0ludGVybmFsX1B0cikgdmFs OworfQorCitzdGF0aWMgaW5saW5lIF9VbndpbmRfQ29udGV4dF9SZWdfVmFs CitfVW53aW5kX0dldF9VbndpbmRfQ29udGV4dF9SZWdfVmFsIChfVW53aW5k X1dvcmQgdmFsKQoreworICByZXR1cm4gKF9VbndpbmRfQ29udGV4dF9SZWdf VmFsKSAoX1Vud2luZF9JbnRlcm5hbF9QdHIpIHZhbDsKK30KKyNlbmRpZgor CiAvKiBUaGlzIGlzIHRoZSByZWdpc3RlciBhbmQgdW53aW5kIHN0YXRlIGZv ciBhIHBhcnRpY3VsYXIgZnJhbWUuICBUaGlzCiAgICBwcm92aWRlcyB0aGUg aW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIHVud2luZCB1cCBwYXN0IGEgZnJh bWUgYW5kIHJldHVybgogICAgdG8gaXRzIGNhbGxlci4gICovCiBzdHJ1Y3Qg X1Vud2luZF9Db250ZXh0CiB7Ci0gIHZvaWQgKnJlZ1tEV0FSRl9GUkFNRV9S RUdJU1RFUlMrMV07CisgIF9VbndpbmRfQ29udGV4dF9SZWdfVmFsIHJlZ1tE V0FSRl9GUkFNRV9SRUdJU1RFUlMrMV07CiAgIHZvaWQgKmNmYTsKICAgdm9p ZCAqcmE7CiAgIHZvaWQgKmxzZGE7CkBAIC0xNDMsMTIgKzE3Nyw2IEBAIF9V bndpbmRfU2V0U2lnbmFsRnJhbWUgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQg KmNvbnRleHQsIGludCB2YWwpCiAgIGVsc2UKICAgICBjb250ZXh0LT5mbGFn cyAmPSB+U0lHTkFMX0ZSQU1FX0JJVDsKIH0KLQotc3RhdGljIGlubGluZSBf VW53aW5kX1dvcmQKLV9VbndpbmRfSXNFeHRlbmRlZENvbnRleHQgKHN0cnVj dCBfVW53aW5kX0NvbnRleHQgKmNvbnRleHQpCi17Ci0gIHJldHVybiBjb250 ZXh0LT5mbGFncyAmIEVYVEVOREVEX0NPTlRFWFRfQklUOwotfQogDAogLyog R2V0IHRoZSB2YWx1ZSBvZiByZWdpc3RlciBJTkRFWCBhcyBzYXZlZCBpbiBD T05URVhULiAgKi8KIApAQCAtMTU2LDcgKzE4NCw3IEBAIGlubGluZSBfVW53 aW5kX1dvcmQKIF9VbndpbmRfR2V0R1IgKHN0cnVjdCBfVW53aW5kX0NvbnRl eHQgKmNvbnRleHQsIGludCBpbmRleCkKIHsKICAgaW50IHNpemU7Ci0gIHZv aWQgKnB0cjsKKyAgX1Vud2luZF9Db250ZXh0X1JlZ19WYWwgdmFsOwogCiAj aWZkZWYgRFdBUkZfWkVST19SRUcKICAgaWYgKGluZGV4ID09IERXQVJGX1pF Uk9fUkVHKQpAQCAtMTY2LDE4ICsxOTQsMTggQEAgX1Vud2luZF9HZXRHUiAo c3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgaW50IGluZGV4KQog ICBpbmRleCA9IERXQVJGX1JFR19UT19VTldJTkRfQ09MVU1OIChpbmRleCk7 CiAgIGdjY19hc3NlcnQgKGluZGV4IDwgKGludCkgc2l6ZW9mKGR3YXJmX3Jl Z19zaXplX3RhYmxlKSk7CiAgIHNpemUgPSBkd2FyZl9yZWdfc2l6ZV90YWJs ZVtpbmRleF07Ci0gIHB0ciA9IGNvbnRleHQtPnJlZ1tpbmRleF07CisgIHZh bCA9IGNvbnRleHQtPnJlZ1tpbmRleF07CiAKICAgaWYgKF9VbndpbmRfSXNF eHRlbmRlZENvbnRleHQgKGNvbnRleHQpICYmIGNvbnRleHQtPmJ5X3ZhbHVl W2luZGV4XSkKLSAgICByZXR1cm4gKF9VbndpbmRfV29yZCkgKF9VbndpbmRf SW50ZXJuYWxfUHRyKSBwdHI7CisgICAgcmV0dXJuIF9VbndpbmRfR2V0X1Vu d2luZF9Xb3JkICh2YWwpOwogCiAgIC8qIFRoaXMgd2lsbCBzZWdmYXVsdCBp ZiB0aGUgcmVnaXN0ZXIgaGFzbid0IGJlZW4gc2F2ZWQuICAqLwogICBpZiAo c2l6ZSA9PSBzaXplb2YoX1Vud2luZF9QdHIpKQotICAgIHJldHVybiAqIChf VW53aW5kX1B0ciAqKSBwdHI7CisgICAgcmV0dXJuICogKF9VbndpbmRfUHRy ICopIChfVW53aW5kX0ludGVybmFsX1B0cikgdmFsOwogICBlbHNlCiAgICAg ewogICAgICAgZ2NjX2Fzc2VydCAoc2l6ZSA9PSBzaXplb2YoX1Vud2luZF9X b3JkKSk7Ci0gICAgICByZXR1cm4gKiAoX1Vud2luZF9Xb3JkICopIHB0cjsK KyAgICAgIHJldHVybiAqIChfVW53aW5kX1dvcmQgKikgKF9VbndpbmRfSW50 ZXJuYWxfUHRyKSB2YWw7CiAgICAgfQogfQogCkBAIC0yMDksMTEgKzIzNywx MSBAQCBfVW53aW5kX1NldEdSIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpj b250ZXh0LCBpbnQgaW5kZXgsIF9VbndpbmRfV29yZCB2YWwpCiAKICAgaWYg KF9VbndpbmRfSXNFeHRlbmRlZENvbnRleHQgKGNvbnRleHQpICYmIGNvbnRl eHQtPmJ5X3ZhbHVlW2luZGV4XSkKICAgICB7Ci0gICAgICBjb250ZXh0LT5y ZWdbaW5kZXhdID0gKHZvaWQgKikgKF9VbndpbmRfSW50ZXJuYWxfUHRyKSB2 YWw7CisgICAgICBjb250ZXh0LT5yZWdbaW5kZXhdID0gX1Vud2luZF9HZXRf VW53aW5kX0NvbnRleHRfUmVnX1ZhbCAodmFsKTsKICAgICAgIHJldHVybjsK ICAgICB9CiAKLSAgcHRyID0gY29udGV4dC0+cmVnW2luZGV4XTsKKyAgcHRy ID0gKHZvaWQgKikgKF9VbndpbmRfSW50ZXJuYWxfUHRyKSBjb250ZXh0LT5y ZWdbaW5kZXhdOwogCiAgIGlmIChzaXplID09IHNpemVvZihfVW53aW5kX1B0 cikpCiAgICAgKiAoX1Vud2luZF9QdHIgKikgcHRyID0gdmFsOwpAQCAtMjMy LDcgKzI2MCw3IEBAIF9VbndpbmRfR2V0R1JQdHIgKHN0cnVjdCBfVW53aW5k X0NvbnRleHQgKmNvbnRleHQsIGludCBpbmRleCkKICAgaW5kZXggPSBEV0FS Rl9SRUdfVE9fVU5XSU5EX0NPTFVNTiAoaW5kZXgpOwogICBpZiAoX1Vud2lu ZF9Jc0V4dGVuZGVkQ29udGV4dCAoY29udGV4dCkgJiYgY29udGV4dC0+Ynlf dmFsdWVbaW5kZXhdKQogICAgIHJldHVybiAmY29udGV4dC0+cmVnW2luZGV4 XTsKLSAgcmV0dXJuIGNvbnRleHQtPnJlZ1tpbmRleF07CisgIHJldHVybiAo dm9pZCAqKSAoX1Vud2luZF9JbnRlcm5hbF9QdHIpIGNvbnRleHQtPnJlZ1tp bmRleF07CiB9CiAKIC8qIFNldCB0aGUgcG9pbnRlciB0byBhIHJlZ2lzdGVy IElOREVYIGFzIHNhdmVkIGluIENPTlRFWFQuICAqLwpAQCAtMjQzLDcgKzI3 MSw3IEBAIF9VbndpbmRfU2V0R1JQdHIgKHN0cnVjdCBfVW53aW5kX0NvbnRl eHQgKmNvbnRleHQsIGludCBpbmRleCwgdm9pZCAqcCkKICAgaW5kZXggPSBE V0FSRl9SRUdfVE9fVU5XSU5EX0NPTFVNTiAoaW5kZXgpOwogICBpZiAoX1Vu d2luZF9Jc0V4dGVuZGVkQ29udGV4dCAoY29udGV4dCkpCiAgICAgY29udGV4 dC0+YnlfdmFsdWVbaW5kZXhdID0gMDsKLSAgY29udGV4dC0+cmVnW2luZGV4 XSA9IHA7CisgIGNvbnRleHQtPnJlZ1tpbmRleF0gPSAoX1Vud2luZF9Db250 ZXh0X1JlZ19WYWwpIChfVW53aW5kX0ludGVybmFsX1B0cikgcDsKIH0KIAog LyogT3ZlcndyaXRlIHRoZSBzYXZlZCB2YWx1ZSBmb3IgcmVnaXN0ZXIgSU5E RVggaW4gQ09OVEVYVCB3aXRoIFZBTC4gICovCkBAIC0yNTQsMTAgKzI4Miwx MCBAQCBfVW53aW5kX1NldEdSVmFsdWUgKHN0cnVjdCBfVW53aW5kX0NvbnRl eHQgKmNvbnRleHQsIGludCBpbmRleCwKIHsKICAgaW5kZXggPSBEV0FSRl9S RUdfVE9fVU5XSU5EX0NPTFVNTiAoaW5kZXgpOwogICBnY2NfYXNzZXJ0IChp bmRleCA8IChpbnQpIHNpemVvZihkd2FyZl9yZWdfc2l6ZV90YWJsZSkpOwot ICBnY2NfYXNzZXJ0IChkd2FyZl9yZWdfc2l6ZV90YWJsZVtpbmRleF0gPT0g c2l6ZW9mIChfVW53aW5kX1B0cikpOworICBnY2NfYXNzZXJ0IChkd2FyZl9y ZWdfc2l6ZV90YWJsZVtpbmRleF0gPT0gc2l6ZW9mIChfVW53aW5kX0NvbnRl eHRfUmVnX1ZhbCkpOwogCiAgIGNvbnRleHQtPmJ5X3ZhbHVlW2luZGV4XSA9 IDE7Ci0gIGNvbnRleHQtPnJlZ1tpbmRleF0gPSAodm9pZCAqKSAoX1Vud2lu ZF9JbnRlcm5hbF9QdHIpIHZhbDsKKyAgY29udGV4dC0+cmVnW2luZGV4XSA9 IF9VbndpbmRfR2V0X1Vud2luZF9Db250ZXh0X1JlZ19WYWwgKHZhbCk7CiB9 CiAKIC8qIFJldHVybiBub256ZXJvIGlmIHJlZ2lzdGVyIElOREVYIGlzIHN0 b3JlZCBieSB2YWx1ZSByYXRoZXIgdGhhbgpAQCAtMTIxNSw3ICsxMjQzLDkg QEAgX19mcmFtZV9zdGF0ZV9mb3IgKHZvaWQgKnBjX3RhcmdldCwgc3RydWN0 IGZyYW1lX3N0YXRlICpzdGF0ZV9pbikKICAgaW50IHJlZzsKIAogICBtZW1z ZXQgKCZjb250ZXh0LCAwLCBzaXplb2YgKHN0cnVjdCBfVW53aW5kX0NvbnRl eHQpKTsKKyNpZm5kZWYgUkVHX1ZBTFVFX0lOX1VOV0lORF9DT05URVhUCiAg IGNvbnRleHQuZmxhZ3MgPSBFWFRFTkRFRF9DT05URVhUX0JJVDsKKyNlbmRp ZgogICBjb250ZXh0LnJhID0gcGNfdGFyZ2V0ICsgMTsKIAogICBpZiAodXdf ZnJhbWVfc3RhdGVfZm9yICgmY29udGV4dCwgJmZzKSAhPSBfVVJDX05PX1JF QVNPTikKQEAgLTE0NTMsNyArMTQ4Myw5IEBAIHV3X2luaXRfY29udGV4dF8x IChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0LAogCiAgIG1lbXNl dCAoY29udGV4dCwgMCwgc2l6ZW9mIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0 KSk7CiAgIGNvbnRleHQtPnJhID0gcmE7CisjaWZuZGVmIFJFR19WQUxVRV9J Tl9VTldJTkRfQ09OVEVYVAogICBjb250ZXh0LT5mbGFncyA9IEVYVEVOREVE X0NPTlRFWFRfQklUOworI2VuZGlmCiAKICAgY29kZSA9IHV3X2ZyYW1lX3N0 YXRlX2ZvciAoY29udGV4dCwgJmZzKTsKICAgZ2NjX2Fzc2VydCAoY29kZSA9 PSBfVVJDX05PX1JFQVNPTik7CkBAIC0xNTMyLDggKzE1NjQsOCBAQCB1d19p bnN0YWxsX2NvbnRleHRfMSAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY3Vy cmVudCwKIAogICBmb3IgKGkgPSAwOyBpIDwgRFdBUkZfRlJBTUVfUkVHSVNU RVJTOyArK2kpCiAgICAgewotICAgICAgdm9pZCAqYyA9IGN1cnJlbnQtPnJl Z1tpXTsKLSAgICAgIHZvaWQgKnQgPSB0YXJnZXQtPnJlZ1tpXTsKKyAgICAg IHZvaWQgKmMgPSAodm9pZCAqKSAoX1Vud2luZF9JbnRlcm5hbF9QdHIpIGN1 cnJlbnQtPnJlZ1tpXTsKKyAgICAgIHZvaWQgKnQgPSAodm9pZCAqKSAoX1Vu d2luZF9JbnRlcm5hbF9QdHIpdGFyZ2V0LT5yZWdbaV07CiAKICAgICAgIGdj Y19hc3NlcnQgKGN1cnJlbnQtPmJ5X3ZhbHVlW2ldID09IDApOwogICAgICAg aWYgKHRhcmdldC0+YnlfdmFsdWVbaV0gJiYgYykKZGlmZiAtLWdpdCBhL2xp YmdjYy9jb25maWcvaTM4Ni92YWx1ZS11bndpbmQuaCBiL2xpYmdjYy9jb25m aWcvaTM4Ni92YWx1ZS11bndpbmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4wZGNlYjVjCi0tLSAvZGV2L251bGwKKysrIGIvbGli Z2NjL2NvbmZpZy9pMzg2L3ZhbHVlLXVud2luZC5oCkBAIC0wLDAgKzEsMjYg QEAKKy8qIFN0b3JlIHJlZ2lzdGVyIHZhbHVlcyBhcyBfVW53aW5kX1dvcmQg dHlwZSBpbiBEV0FSRjIgRUggdW53aW5kIGNvbnRleHQuCisgICBDb3B5cmln aHQgKEMpIDIwMTEKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKKyAgIEdDQyBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywg b3IgKGF0IHlvdXIKKyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK KyAgIEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICAgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZCisgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFu ZAorICAgYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2Vw dGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmls ZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHku ICBJZiBub3QsIHNlZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKworLyogRGVmaW5lIHRoaXMgbWFjcm8gaWYgdGhlIHRhcmdl dCBzdG9yZXMgcmVnaXN0ZXIgdmFsdWVzIGFzIF9VbndpbmRfV29yZAorICAg dHlwZSBpbiB1bndpbmQgY29udGV4dC4gIE9ubHkgZW5hYmxlIGl0IGZvciB4 MzIuICAqLworI2lmIGRlZmluZWQgX194ODZfNjQgJiYgIWRlZmluZWQgX19M UDY0X18KKyMgZGVmaW5lIFJFR19WQUxVRV9JTl9VTldJTkRfQ09OVEVYVAor I2VuZGlmCg== --0016e6509fa2779c9104a6f402fc--