From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14602 invoked by alias); 18 Feb 2008 17:07:09 -0000 Received: (qmail 13198 invoked by uid 22791); 18 Feb 2008 17:07:07 -0000 X-Spam-Check-By: sourceware.org Received: from wr-out-0506.google.com (HELO wr-out-0506.google.com) (64.233.184.228) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 18 Feb 2008 17:06:50 +0000 Received: by wr-out-0506.google.com with SMTP id c47so1679428wra.20 for ; Mon, 18 Feb 2008 09:06:47 -0800 (PST) Received: by 10.142.203.13 with SMTP id a13mr1581487wfg.186.1203354406630; Mon, 18 Feb 2008 09:06:46 -0800 (PST) Received: by 10.143.171.4 with HTTP; Mon, 18 Feb 2008 09:06:46 -0800 (PST) Message-ID: <6c33472e0802180906o5519ac8as35d08ef76ae5acbe@mail.gmail.com> Date: Mon, 18 Feb 2008 17:10:00 -0000 From: "=?ISO-8859-1?Q?Manuel_L=F3pez-Ib=E1=F1ez?=" To: "Joseph S. Myers" Subject: Re: [RFC] PR34389 -Wconversion produces wrong warning Cc: "GCC Patches" In-Reply-To: <6c33472e0802180719q6d2f78bbp91e887d243d8ebba@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_9751_21989349.1203354406586" References: <6c33472e0802160852x17360ea9sb8c0945b6039f872@mail.gmail.com> <84fc9c000802160900h5660abd5n205da0e65ec3a50b@mail.gmail.com> <6c33472e0802180719q6d2f78bbp91e887d243d8ebba@mail.gmail.com> 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: 2008-02/txt/msg00703.txt.bz2 ------=_Part_9751_21989349.1203354406586 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-length: 1737 On 18/02/2008, Manuel L=F3pez-Ib=E1=F1ez wrote: > On 18/02/2008, Joseph S. Myers wrote: > > > > I agree with that in principle - but I also think it's useful to avoid > > warning for such cases as short =3D (int & 0x7fff) when written directl= y by > > the user (with any non-negative constant in the range of short there). = I > > suppose there are other cases where it may be less likely that the user > > will write the code created by the compiler, but anything affecting > > expressions directly written by the user would still be of some use aft= er > > the front end no longer does the present folding. (This means there > > should be testcases where the problem expressions are written directly = by > > the user, not just the tests where they are compiler-generated.) The following patch is a bit cleaner than the previous proposal.It also handles a lot more of cases. In particular, it handles short =3D (int & 0x7fff). There is an XFAIL because common_types does completely different things in C and C++. I think that is a latent bug exposed by my patch. Let me know your opinions and suggestions. Bootstrapped and regression tested in x86_64-unknown-linux-gnu. Cheers, Manuel. 2008-02-18 Manuel Lopez-Ibanez PR 34389 * c-typeck.c (build_binary_op): Encapsulate code into... * c-common.c (shorten_binary_op): ...this new function. (conversion_warning): Use the new function. Handle non-negative constant in bitwise-and. * c-common.h (shorten_binary_op): Declare. cp/ * typeck.c (build_binary_op): Encapsulate code into the new function. testsuite/ * gcc.dg/Wconversion-pr34389.c: New. * g++.dg/warn/Wconversion-pr34389.C: New. ------=_Part_9751_21989349.1203354406586 Content-Type: text/plain; name=fix-pr34389.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fcta38nn Content-Disposition: attachment; filename=fix-pr34389.diff Content-length: 25364 SW5kZXg6IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL1djb252ZXJzaW9uLXByMzQz ODkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvdGVzdHN1aXRl L2djYy5kZy9XY29udmVyc2lvbi1wcjM0Mzg5LmMJKHJldmlzaW9uIDApCisr KyBnY2MvdGVzdHN1aXRlL2djYy5kZy9XY29udmVyc2lvbi1wcjM0Mzg5LmMJ KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qIFBSIDM0Mzg5ICov CisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt V2NvbnZlcnNpb24gLVdzaWduLWNvbnZlcnNpb24iIH0gKi8KKworc2hvcnQg IG1hc2sxKHNob3J0IHgpCit7CisgIHNob3J0IHkgPSAweDdmZmY7CisgIHJl dHVybiB4ICYgeTsKK30KKworc2hvcnQgIG1hc2syKHNob3J0IHNzeCkKK3sK KyAgc2hvcnQgc3N5OworICBzaG9ydCBzc3o7CisKKyAgc3N6ID0gKChpbnQp c3N4KSAmIDB4N2ZmZjsKKyAgc3N5ID0gKChpbnQpc3N4KSB8IDB4N2ZmZjsK KyAgc3N6ID0gKChpbnQpc3N4KSBeIDB4N2ZmZjsKKyAgcmV0dXJuIHNzeCAm IDB4N2ZmZjsKK30KKworc2hvcnQgIG1hc2szKGludCBzaSwgdW5zaWduZWQg aW50IHVpKQoreworICBzaG9ydCBzczsKKyAgdW5zaWduZWQgc2hvcnQgdXM7 CisKKyAgc3MgPSBzaSAmIDB4N2ZmZjsKKyAgc3MgPSBzaSAmIDB4QUFBQTsg LyogeyBkZy13YXJuaW5nICJjb252ZXJzaW9uIiB9ICovCisgIHNzID0gdWkg JiAweDdmZmY7CisgIHNzID0gdWkgJiAweEFBQUE7IC8qIHsgZGctd2Fybmlu ZyAiY29udmVyc2lvbiIgfSAqLworCisgIHVzID0gc2kgJiAweDdmZmY7Cisg IHVzID0gc2kgJiAweEFBQUE7IC8qIHsgZGctd2FybmluZyAiY29udmVyc2lv biIgfSAqLworICB1cyA9IHVpICYgMHg3ZmZmOworICB1cyA9IHVpICYgMHhB QUFBOyAvKiB7IGRnLXdhcm5pbmcgImNvbnZlcnNpb24iIH0gKi8KKworICBy ZXR1cm4gc3M7Cit9CisKK3Nob3J0ICBtYXNrNChpbnQgeCwgaW50IHkpCit7 CisgIHJldHVybiB4ICYgeTsgLyogeyBkZy13YXJuaW5nICJjb252ZXJzaW9u IiB9ICovCit9CisKK3Nob3J0ICBtYXNrNShpbnQgeCkKK3sKKyAgcmV0dXJu IHggJiAtMTsgLyogeyBkZy13YXJuaW5nICJjb252ZXJzaW9uIiB9ICovCit9 CisKK3Nob3J0ICBtYXNrNihzaG9ydCB4KQoreworICByZXR1cm4geCAmIC0x OworfQpJbmRleDogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9XY29udmVy c2lvbi1wcjM0Mzg5LkMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvd2Fybi9XY29udmVyc2lvbi1wcjM0Mzg5LkMJ KHJldmlzaW9uIDApCisrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL1dj b252ZXJzaW9uLXByMzQzODkuQwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1 MyBAQAorLyogUFIgMzQzODkgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1XY29udmVyc2lvbiAtV3NpZ24tY29udmVy c2lvbiIgfSAqLworCitzaG9ydCAgbWFzazEoc2hvcnQgeCkKK3sKKyAgc2hv cnQgeSA9IDB4N2ZmZjsKKyAgcmV0dXJuIHggJiB5OyAvKiB7IGRnLWJvZ3Vz ICJjb252ZXJzaW9uIiAiY29udmVyc2lvbiIgeyB4ZmFpbCAqLSotKiB9IDgg fSAqLworfQorCitzaG9ydCAgbWFzazIoc2hvcnQgc3N4KQoreworICBzaG9y dCBzc3k7CisgIHNob3J0IHNzejsKKworICBzc3ogPSAoKGludClzc3gpICYg MHg3ZmZmOworICBzc3kgPSAoKGludClzc3gpIHwgMHg3ZmZmOworICBzc3og PSAoKGludClzc3gpIF4gMHg3ZmZmOworICByZXR1cm4gc3N4ICYgMHg3ZmZm OworfQorCitzaG9ydCAgbWFzazMoaW50IHNpLCB1bnNpZ25lZCBpbnQgdWkp Cit7CisgIHNob3J0IHNzOworICB1bnNpZ25lZCBzaG9ydCB1czsKKworICBz cyA9IHNpICYgMHg3ZmZmOworICBzcyA9IHNpICYgMHhBQUFBOyAvKiB7IGRn LXdhcm5pbmcgImNvbnZlcnNpb24iIH0gKi8KKyAgc3MgPSB1aSAmIDB4N2Zm ZjsKKyAgc3MgPSB1aSAmIDB4QUFBQTsgLyogeyBkZy13YXJuaW5nICJjb252 ZXJzaW9uIiB9ICovCisKKyAgdXMgPSBzaSAmIDB4N2ZmZjsKKyAgdXMgPSBz aSAmIDB4QUFBQTsgLyogeyBkZy13YXJuaW5nICJjb252ZXJzaW9uIiB9ICov CisgIHVzID0gdWkgJiAweDdmZmY7CisgIHVzID0gdWkgJiAweEFBQUE7IC8q IHsgZGctd2FybmluZyAiY29udmVyc2lvbiIgfSAqLworCisgIHJldHVybiBz czsKK30KKworc2hvcnQgIG1hc2s0KGludCB4LCBpbnQgeSkKK3sKKyAgcmV0 dXJuIHggJiB5OyAvKiB7IGRnLXdhcm5pbmcgImNvbnZlcnNpb24iIH0gKi8K K30KKworc2hvcnQgIG1hc2s1KGludCB4KQoreworICByZXR1cm4geCAmIC0x OyAvKiB7IGRnLXdhcm5pbmcgImNvbnZlcnNpb24iIH0gKi8KK30KKworc2hv cnQgIG1hc2s2KHNob3J0IHgpCit7CisgIHJldHVybiB4ICYgLTE7Cit9Cklu ZGV4OiBnY2MvY3AvdHlwZWNrLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZ2NjL2NwL3R5cGVjay5jCShyZXZpc2lvbiAxMzIzMTApCisrKyBnY2Mv Y3AvdHlwZWNrLmMJKHdvcmtpbmcgY29weSkKQEAgLTM2NTYsNjUgKzM2NTYs MTMgQEAgYnVpbGRfYmluYXJ5X29wIChlbnVtIHRyZWVfY29kZSBjb2RlLCB0 cgogCSBFZywgKHNob3J0KS0xIHwgKHVuc2lnbmVkIHNob3J0KS0xIGlzIChp bnQpLTEKIAkgYnV0IGNhbGN1bGF0ZWQgaW4gKHVuc2lnbmVkIHNob3J0KSBp dCB3b3VsZCBiZSAodW5zaWduZWQgc2hvcnQpLTEuICAqLwogCiAgICAgICBp ZiAoc2hvcnRlbiAmJiBub25lX2NvbXBsZXgpCiAJewotCSAgaW50IHVuc2ln bmVkMCwgdW5zaWduZWQxOwotCSAgdHJlZSBhcmcwID0gZ2V0X25hcnJvd2Vy IChvcDAsICZ1bnNpZ25lZDApOwotCSAgdHJlZSBhcmcxID0gZ2V0X25hcnJv d2VyIChvcDEsICZ1bnNpZ25lZDEpOwotCSAgLyogVU5TIGlzIDEgaWYgdGhl IG9wZXJhdGlvbiB0byBiZSBkb25lIGlzIGFuIHVuc2lnbmVkIG9uZS4gICov Ci0JICBpbnQgdW5zID0gVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpOwot CSAgdHJlZSB0eXBlOwotCiAJICBmaW5hbF90eXBlID0gcmVzdWx0X3R5cGU7 Ci0KLQkgIC8qIEhhbmRsZSB0aGUgY2FzZSB0aGF0IE9QMCBkb2VzIG5vdCAq Y29udGFpbiogYSBjb252ZXJzaW9uCi0JICAgICBidXQgaXQgKnJlcXVpcmVz KiBjb252ZXJzaW9uIHRvIEZJTkFMX1RZUEUuICAqLwotCi0JICBpZiAob3Aw ID09IGFyZzAgJiYgVFJFRV9UWVBFIChvcDApICE9IGZpbmFsX3R5cGUpCi0J ICAgIHVuc2lnbmVkMCA9IFRZUEVfVU5TSUdORUQgKFRSRUVfVFlQRSAob3Aw KSk7Ci0JICBpZiAob3AxID09IGFyZzEgJiYgVFJFRV9UWVBFIChvcDEpICE9 IGZpbmFsX3R5cGUpCi0JICAgIHVuc2lnbmVkMSA9IFRZUEVfVU5TSUdORUQg KFRSRUVfVFlQRSAob3AxKSk7Ci0KLQkgIC8qIE5vdyBVTlNJR05FRDAgaXMg MSBpZiBBUkcwIHplcm8tZXh0ZW5kcyB0byBGSU5BTF9UWVBFLiAgKi8KLQot CSAgLyogRm9yIGJpdHdpc2Ugb3BlcmF0aW9ucywgc2lnbmVkbmVzcyBvZiBu b21pbmFsIHR5cGUKLQkgICAgIGRvZXMgbm90IG1hdHRlci4gIENvbnNpZGVy IG9ubHkgaG93IG9wZXJhbmRzIHdlcmUgZXh0ZW5kZWQuICAqLwotCSAgaWYg KHNob3J0ZW4gPT0gLTEpCi0JICAgIHVucyA9IHVuc2lnbmVkMDsKLQotCSAg LyogTm90ZSB0aGF0IGluIGFsbCB0aHJlZSBjYXNlcyBiZWxvdyB3ZSByZWZy YWluIGZyb20gb3B0aW1pemluZwotCSAgICAgYW4gdW5zaWduZWQgb3BlcmF0 aW9uIG9uIHNpZ24tZXh0ZW5kZWQgYXJncy4KLQkgICAgIFRoYXQgd291bGQg bm90IGJlIHZhbGlkLiAgKi8KLQotCSAgLyogQm90aCBhcmdzIHZhcmlhYmxl OiBpZiBib3RoIGV4dGVuZGVkIGluIHNhbWUgd2F5Ci0JICAgICBmcm9tIHNh bWUgd2lkdGgsIGRvIGl0IGluIHRoYXQgd2lkdGguCi0JICAgICBEbyBpdCB1 bnNpZ25lZCBpZiBhcmdzIHdlcmUgemVyby1leHRlbmRlZC4gICovCi0JICBp ZiAoKFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGFyZzApKQotCSAgICAg ICA8IFRZUEVfUFJFQ0lTSU9OIChyZXN1bHRfdHlwZSkpCi0JICAgICAgJiYg KFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGFyZzEpKQotCQkgID09IFRZ UEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGFyZzApKSkKLQkgICAgICAmJiB1 bnNpZ25lZDAgPT0gdW5zaWduZWQxCi0JICAgICAgJiYgKHVuc2lnbmVkMCB8 fCAhdW5zKSkKLQkgICAgcmVzdWx0X3R5cGUgPSBjX2NvbW1vbl9zaWduZWRf b3JfdW5zaWduZWRfdHlwZQotCSAgICAgICh1bnNpZ25lZDAsIGNvbW1vbl90 eXBlIChUUkVFX1RZUEUgKGFyZzApLCBUUkVFX1RZUEUgKGFyZzEpKSk7Ci0J ICBlbHNlIGlmIChUUkVFX0NPREUgKGFyZzApID09IElOVEVHRVJfQ1NUCi0J CSAgICYmICh1bnNpZ25lZDEgfHwgIXVucykKLQkJICAgJiYgKFRZUEVfUFJF Q0lTSU9OIChUUkVFX1RZUEUgKGFyZzEpKQotCQkgICAgICAgPCBUWVBFX1BS RUNJU0lPTiAocmVzdWx0X3R5cGUpKQotCQkgICAmJiAodHlwZSA9IGNfY29t bW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlCi0JCSAgICAgICAodW5zaWdu ZWQxLCBUUkVFX1RZUEUgKGFyZzEpKSwKLQkJICAgICAgIGludF9maXRzX3R5 cGVfcCAoYXJnMCwgdHlwZSkpKQotCSAgICByZXN1bHRfdHlwZSA9IHR5cGU7 Ci0JICBlbHNlIGlmIChUUkVFX0NPREUgKGFyZzEpID09IElOVEVHRVJfQ1NU Ci0JCSAgICYmICh1bnNpZ25lZDAgfHwgIXVucykKLQkJICAgJiYgKFRZUEVf UFJFQ0lTSU9OIChUUkVFX1RZUEUgKGFyZzApKQotCQkgICAgICAgPCBUWVBF X1BSRUNJU0lPTiAocmVzdWx0X3R5cGUpKQotCQkgICAmJiAodHlwZSA9IGNf Y29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlCi0JCSAgICAgICAodW5z aWduZWQwLCBUUkVFX1RZUEUgKGFyZzApKSwKLQkJICAgICAgIGludF9maXRz X3R5cGVfcCAoYXJnMSwgdHlwZSkpKQotCSAgICByZXN1bHRfdHlwZSA9IHR5 cGU7CisJICByZXN1bHRfdHlwZSA9IHNob3J0ZW5fYmluYXJ5X29wIChyZXN1 bHRfdHlwZSwgb3AwLCBvcDEsIAorCQkJCQkgICBzaG9ydGVuID09IC0xKTsK IAl9CiAKICAgICAgIC8qIENvbXBhcmlzb24gb3BlcmF0aW9ucyBhcmUgc2hv cnRlbmVkIHRvbyBidXQgZGlmZmVyZW50bHkuCiAJIFRoZXkgaWRlbnRpZnkg dGhlbXNlbHZlcyBieSBzZXR0aW5nIHNob3J0X2NvbXBhcmUgPSAxLiAgKi8K IApJbmRleDogZ2NjL2MtdHlwZWNrLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZ2NjL2MtdHlwZWNrLmMJKHJldmlzaW9uIDEzMjMxMCkKKysrIGdj Yy9jLXR5cGVjay5jCSh3b3JraW5nIGNvcHkpCkBAIC04MzA0LDk3ICs4MzA0 LDEzIEBAIGJ1aWxkX2JpbmFyeV9vcCAoZW51bSB0cmVlX2NvZGUgY29kZSwg dHIKIAkgRWcsIChzaG9ydCktMSB8ICh1bnNpZ25lZCBzaG9ydCktMSBpcyAo aW50KS0xCiAJIGJ1dCBjYWxjdWxhdGVkIGluICh1bnNpZ25lZCBzaG9ydCkg aXQgd291bGQgYmUgKHVuc2lnbmVkIHNob3J0KS0xLiAgKi8KIAogICAgICAg aWYgKHNob3J0ZW4gJiYgbm9uZV9jb21wbGV4KQogCXsKLQkgIGludCB1bnNp Z25lZDAsIHVuc2lnbmVkMTsKLQkgIHRyZWUgYXJnMCwgYXJnMTsKLQkgIGlu dCB1bnM7Ci0JICB0cmVlIHR5cGU7Ci0KLQkgIC8qIENhc3QgT1AwIGFuZCBP UDEgdG8gUkVTVUxUX1RZUEUuICBEb2luZyBzbyBwcmV2ZW50cwotCSAgICAg ZXhjZXNzaXZlIG5hcnJvd2luZyB3aGVuIHdlIGNhbGwgZ2V0X25hcnJvd2Vy IGJlbG93LiAgRm9yCi0JICAgICBleGFtcGxlLCBzdXBwb3NlIHRoYXQgT1Aw IGlzIG9mIHVuc2lnbmVkIGludCBleHRlbmRlZAotCSAgICAgZnJvbSBzaWdu ZWQgY2hhciBhbmQgdGhhdCBSRVNVTFRfVFlQRSBpcyBsb25nIGxvbmcgaW50 LgotCSAgICAgSWYgd2UgZXhwbGljaXRseSBjYXN0IE9QMCB0byBSRVNVTFRf VFlQRSwgT1AwIHdvdWxkIGxvb2sKLQkgICAgIGxpa2UKLQotCSAgICAgICAo bG9uZyBsb25nIGludCkgKHVuc2lnbmVkIGludCkgc2lnbmVkX2NoYXIKLQot CSAgICAgd2hpY2ggZ2V0X25hcnJvd2VyIHdvdWxkIG5hcnJvdyBkb3duIHRv Ci0KLQkgICAgICAgKHVuc2lnbmVkIGludCkgc2lnbmVkIGNoYXIKLQotCSAg ICAgSWYgd2UgZG8gbm90IGNhc3QgT1AwIGZpcnN0LCBnZXRfbmFycm93ZXIg d291bGQgcmV0dXJuCi0JICAgICBzaWduZWRfY2hhciwgd2hpY2ggaXMgaW5j b25zaXN0ZW50IHdpdGggdGhlIGNhc2Ugb2YgdGhlCi0JICAgICBleHBsaWNp dCBjYXN0LiAgKi8KLQkgIG9wMCA9IGNvbnZlcnQgKHJlc3VsdF90eXBlLCBv cDApOwotCSAgb3AxID0gY29udmVydCAocmVzdWx0X3R5cGUsIG9wMSk7Ci0K LQkgIGFyZzAgPSBnZXRfbmFycm93ZXIgKG9wMCwgJnVuc2lnbmVkMCk7Ci0J ICBhcmcxID0gZ2V0X25hcnJvd2VyIChvcDEsICZ1bnNpZ25lZDEpOwotCi0J ICAvKiBVTlMgaXMgMSBpZiB0aGUgb3BlcmF0aW9uIHRvIGJlIGRvbmUgaXMg YW4gdW5zaWduZWQgb25lLiAgKi8KLQkgIHVucyA9IFRZUEVfVU5TSUdORUQg KHJlc3VsdF90eXBlKTsKLQogCSAgZmluYWxfdHlwZSA9IHJlc3VsdF90eXBl OwotCi0JICAvKiBIYW5kbGUgdGhlIGNhc2UgdGhhdCBPUDAgKG9yIE9QMSkg ZG9lcyBub3QgKmNvbnRhaW4qIGEgY29udmVyc2lvbgotCSAgICAgYnV0IGl0 ICpyZXF1aXJlcyogY29udmVyc2lvbiB0byBGSU5BTF9UWVBFLiAgKi8KLQot CSAgaWYgKChUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBFIChvcDApKQotCSAg ICAgICA9PSBUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBFIChhcmcwKSkpCi0J ICAgICAgJiYgVFJFRV9UWVBFIChvcDApICE9IGZpbmFsX3R5cGUpCi0JICAg IHVuc2lnbmVkMCA9IFRZUEVfVU5TSUdORUQgKFRSRUVfVFlQRSAob3AwKSk7 Ci0JICBpZiAoKFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKG9wMSkpCi0J ICAgICAgID09IFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGFyZzEpKSkK LQkgICAgICAmJiBUUkVFX1RZUEUgKG9wMSkgIT0gZmluYWxfdHlwZSkKLQkg ICAgdW5zaWduZWQxID0gVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChvcDEp KTsKLQotCSAgLyogTm93IFVOU0lHTkVEMCBpcyAxIGlmIEFSRzAgemVyby1l eHRlbmRzIHRvIEZJTkFMX1RZUEUuICAqLwotCi0JICAvKiBGb3IgYml0d2lz ZSBvcGVyYXRpb25zLCBzaWduZWRuZXNzIG9mIG5vbWluYWwgdHlwZQotCSAg ICAgZG9lcyBub3QgbWF0dGVyLiAgQ29uc2lkZXIgb25seSBob3cgb3BlcmFu ZHMgd2VyZSBleHRlbmRlZC4gICovCi0JICBpZiAoc2hvcnRlbiA9PSAtMSkK LQkgICAgdW5zID0gdW5zaWduZWQwOwotCi0JICAvKiBOb3RlIHRoYXQgaW4g YWxsIHRocmVlIGNhc2VzIGJlbG93IHdlIHJlZnJhaW4gZnJvbSBvcHRpbWl6 aW5nCi0JICAgICBhbiB1bnNpZ25lZCBvcGVyYXRpb24gb24gc2lnbi1leHRl bmRlZCBhcmdzLgotCSAgICAgVGhhdCB3b3VsZCBub3QgYmUgdmFsaWQuICAq LwotCi0JICAvKiBCb3RoIGFyZ3MgdmFyaWFibGU6IGlmIGJvdGggZXh0ZW5k ZWQgaW4gc2FtZSB3YXkKLQkgICAgIGZyb20gc2FtZSB3aWR0aCwgZG8gaXQg aW4gdGhhdCB3aWR0aC4KLQkgICAgIERvIGl0IHVuc2lnbmVkIGlmIGFyZ3Mg d2VyZSB6ZXJvLWV4dGVuZGVkLiAgKi8KLQkgIGlmICgoVFlQRV9QUkVDSVNJ T04gKFRSRUVfVFlQRSAoYXJnMCkpCi0JICAgICAgIDwgVFlQRV9QUkVDSVNJ T04gKHJlc3VsdF90eXBlKSkKLQkgICAgICAmJiAoVFlQRV9QUkVDSVNJT04g KFRSRUVfVFlQRSAoYXJnMSkpCi0JCSAgPT0gVFlQRV9QUkVDSVNJT04gKFRS RUVfVFlQRSAoYXJnMCkpKQotCSAgICAgICYmIHVuc2lnbmVkMCA9PSB1bnNp Z25lZDEKLQkgICAgICAmJiAodW5zaWduZWQwIHx8ICF1bnMpKQotCSAgICBy ZXN1bHRfdHlwZQotCSAgICAgID0gY19jb21tb25fc2lnbmVkX29yX3Vuc2ln bmVkX3R5cGUKLQkgICAgICAodW5zaWduZWQwLCBjb21tb25fdHlwZSAoVFJF RV9UWVBFIChhcmcwKSwgVFJFRV9UWVBFIChhcmcxKSkpOwotCSAgZWxzZSBp ZiAoVFJFRV9DT0RFIChhcmcwKSA9PSBJTlRFR0VSX0NTVAotCQkgICAmJiAo dW5zaWduZWQxIHx8ICF1bnMpCi0JCSAgICYmIChUWVBFX1BSRUNJU0lPTiAo VFJFRV9UWVBFIChhcmcxKSkKLQkJICAgICAgIDwgVFlQRV9QUkVDSVNJT04g KHJlc3VsdF90eXBlKSkKLQkJICAgJiYgKHR5cGUKLQkJICAgICAgID0gY19j b21tb25fc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUgKHVuc2lnbmVkMSwKLQkJ CQkJCQkgICBUUkVFX1RZUEUgKGFyZzEpKSkKLQkJICAgJiYgIVBPSU5URVJf VFlQRV9QICh0eXBlKQotCQkgICAmJiBpbnRfZml0c190eXBlX3AgKGFyZzAs IHR5cGUpKQotCSAgICByZXN1bHRfdHlwZSA9IHR5cGU7Ci0JICBlbHNlIGlm IChUUkVFX0NPREUgKGFyZzEpID09IElOVEVHRVJfQ1NUCi0JCSAgICYmICh1 bnNpZ25lZDAgfHwgIXVucykKLQkJICAgJiYgKFRZUEVfUFJFQ0lTSU9OIChU UkVFX1RZUEUgKGFyZzApKQotCQkgICAgICAgPCBUWVBFX1BSRUNJU0lPTiAo cmVzdWx0X3R5cGUpKQotCQkgICAmJiAodHlwZQotCQkgICAgICAgPSBjX2Nv bW1vbl9zaWduZWRfb3JfdW5zaWduZWRfdHlwZSAodW5zaWduZWQwLAotCQkJ CQkJCSAgIFRSRUVfVFlQRSAoYXJnMCkpKQotCQkgICAmJiAhUE9JTlRFUl9U WVBFX1AgKHR5cGUpCi0JCSAgICYmIGludF9maXRzX3R5cGVfcCAoYXJnMSwg dHlwZSkpCi0JICAgIHJlc3VsdF90eXBlID0gdHlwZTsKKwkgIHJlc3VsdF90 eXBlID0gc2hvcnRlbl9iaW5hcnlfb3AgKHJlc3VsdF90eXBlLCBvcDAsIG9w MSwgCisJCQkJCSAgIHNob3J0ZW4gPT0gLTEpOwogCX0KIAogICAgICAgLyog U2hpZnRzIGNhbiBiZSBzaG9ydGVuZWQgaWYgc2hpZnRpbmcgcmlnaHQuICAq LwogCiAgICAgICBpZiAoc2hvcnRfc2hpZnQpCkluZGV4OiBnY2MvYy1jb21t b24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvYy1jb21tb24u YwkocmV2aXNpb24gMTMyMzEwKQorKysgZ2NjL2MtY29tbW9uLmMJKHdvcmtp bmcgY29weSkKQEAgLTEyMDYsMTAgKzEyMDYsMTE0IEBAIHZlY3Rvcl90eXBl c19jb252ZXJ0aWJsZV9wIChjb25zdF90cmVlIHQKICAgICB9CiAKICAgcmV0 dXJuIGZhbHNlOwogfQogCisvKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9u IG9mIGJ1aWxkX2JpbmFyeV9vcC4KKworICAgRm9yIGNlcnRhaW4gb3BlcmF0 aW9ucyBpZiBib3RoIGFyZ3Mgd2VyZSBleHRlbmRlZCBmcm9tIHRoZSBzYW1l CisgICBzbWFsbGVyIHR5cGUsIGRvIHRoZSBhcml0aG1ldGljIGluIHRoYXQg dHlwZSBhbmQgdGhlbiBleHRlbmQuCisKKyAgIEJJVFdJU0UgaW5kaWNhdGVz IGEgYml0d2lzZSBvcGVyYXRpb24uCisgICBGb3IgdGhlbSwgdGhpcyBvcHRp bWl6YXRpb24gaXMgc2FmZSBvbmx5IGlmCisgICBib3RoIGFyZ3MgYXJlIHpl cm8tZXh0ZW5kZWQgb3IgYm90aCBhcmUgc2lnbi1leHRlbmRlZC4KKyAgIE90 aGVyd2lzZSwgd2UgbWlnaHQgY2hhbmdlIHRoZSByZXN1bHQuCisgICBFZywg KHNob3J0KS0xIHwgKHVuc2lnbmVkIHNob3J0KS0xIGlzIChpbnQpLTEKKyAg IGJ1dCBjYWxjdWxhdGVkIGluICh1bnNpZ25lZCBzaG9ydCkgaXQgd291bGQg YmUgKHVuc2lnbmVkIHNob3J0KS0xLiAgCisqLwordHJlZSBzaG9ydGVuX2Jp bmFyeV9vcCAodHJlZSByZXN1bHRfdHlwZSwgdHJlZSBvcDAsIHRyZWUgb3Ax LCBib29sIGJpdHdpc2UpCit7CisgIGludCB1bnNpZ25lZDAsIHVuc2lnbmVk MTsKKyAgdHJlZSBhcmcwLCBhcmcxOworICBpbnQgdW5zOworICB0cmVlIHR5 cGU7CisKKyAgLyogQ2FzdCBPUDAgYW5kIE9QMSB0byBSRVNVTFRfVFlQRS4g IERvaW5nIHNvIHByZXZlbnRzCisgICAgIGV4Y2Vzc2l2ZSBuYXJyb3dpbmcg d2hlbiB3ZSBjYWxsIGdldF9uYXJyb3dlciBiZWxvdy4gIEZvcgorICAgICBl eGFtcGxlLCBzdXBwb3NlIHRoYXQgT1AwIGlzIG9mIHVuc2lnbmVkIGludCBl eHRlbmRlZAorICAgICBmcm9tIHNpZ25lZCBjaGFyIGFuZCB0aGF0IFJFU1VM VF9UWVBFIGlzIGxvbmcgbG9uZyBpbnQuCisgICAgIElmIHdlIGV4cGxpY2l0 bHkgY2FzdCBPUDAgdG8gUkVTVUxUX1RZUEUsIE9QMCB3b3VsZCBsb29rCisg ICAgIGxpa2UKKyAgICAgCisgICAgIChsb25nIGxvbmcgaW50KSAodW5zaWdu ZWQgaW50KSBzaWduZWRfY2hhcgorCisgICAgIHdoaWNoIGdldF9uYXJyb3dl ciB3b3VsZCBuYXJyb3cgZG93biB0bworICAgICAKKyAgICAgKHVuc2lnbmVk IGludCkgc2lnbmVkIGNoYXIKKyAgICAgCisgICAgIElmIHdlIGRvIG5vdCBj YXN0IE9QMCBmaXJzdCwgZ2V0X25hcnJvd2VyIHdvdWxkIHJldHVybgorICAg ICBzaWduZWRfY2hhciwgd2hpY2ggaXMgaW5jb25zaXN0ZW50IHdpdGggdGhl IGNhc2Ugb2YgdGhlCisgICAgIGV4cGxpY2l0IGNhc3QuICAqLworICBvcDAg PSBjb252ZXJ0IChyZXN1bHRfdHlwZSwgb3AwKTsKKyAgb3AxID0gY29udmVy dCAocmVzdWx0X3R5cGUsIG9wMSk7CisKKyAgYXJnMCA9IGdldF9uYXJyb3dl ciAob3AwLCAmdW5zaWduZWQwKTsKKyAgYXJnMSA9IGdldF9uYXJyb3dlciAo b3AxLCAmdW5zaWduZWQxKTsKKworICAvKiBVTlMgaXMgMSBpZiB0aGUgb3Bl cmF0aW9uIHRvIGJlIGRvbmUgaXMgYW4gdW5zaWduZWQgb25lLiAgKi8KKyAg dW5zID0gVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpOworCisgIC8qIEhh bmRsZSB0aGUgY2FzZSB0aGF0IE9QMCAob3IgT1AxKSBkb2VzIG5vdCAqY29u dGFpbiogYSBjb252ZXJzaW9uCisgICAgIGJ1dCBpdCAqcmVxdWlyZXMqIGNv bnZlcnNpb24gdG8gRklOQUxfVFlQRS4gICovCisgIAorICBpZiAoKFRZUEVf UFJFQ0lTSU9OIChUUkVFX1RZUEUgKG9wMCkpCisgICAgICAgPT0gVFlQRV9Q UkVDSVNJT04gKFRSRUVfVFlQRSAoYXJnMCkpKQorICAgICAgJiYgVFJFRV9U WVBFIChvcDApICE9IHJlc3VsdF90eXBlKQorICAgIHVuc2lnbmVkMCA9IFRZ UEVfVU5TSUdORUQgKFRSRUVfVFlQRSAob3AwKSk7CisgIGlmICgoVFlQRV9Q UkVDSVNJT04gKFRSRUVfVFlQRSAob3AxKSkKKyAgICAgICA9PSBUWVBFX1BS RUNJU0lPTiAoVFJFRV9UWVBFIChhcmcxKSkpCisgICAgICAmJiBUUkVFX1RZ UEUgKG9wMSkgIT0gcmVzdWx0X3R5cGUpCisgICAgdW5zaWduZWQxID0gVFlQ RV9VTlNJR05FRCAoVFJFRV9UWVBFIChvcDEpKTsKKyAgCisgIC8qIE5vdyBV TlNJR05FRDAgaXMgMSBpZiBBUkcwIHplcm8tZXh0ZW5kcyB0byBGSU5BTF9U WVBFLiAgKi8KKyAgCisgIC8qIEZvciBiaXR3aXNlIG9wZXJhdGlvbnMsIHNp Z25lZG5lc3Mgb2Ygbm9taW5hbCB0eXBlCisgICAgIGRvZXMgbm90IG1hdHRl ci4gIENvbnNpZGVyIG9ubHkgaG93IG9wZXJhbmRzIHdlcmUgZXh0ZW5kZWQu ICAqLworICBpZiAoYml0d2lzZSkKKyAgICB1bnMgPSB1bnNpZ25lZDA7Cisg IAorICAvKiBOb3RlIHRoYXQgaW4gYWxsIHRocmVlIGNhc2VzIGJlbG93IHdl IHJlZnJhaW4gZnJvbSBvcHRpbWl6aW5nCisgICAgIGFuIHVuc2lnbmVkIG9w ZXJhdGlvbiBvbiBzaWduLWV4dGVuZGVkIGFyZ3MuCisgICAgIFRoYXQgd291 bGQgbm90IGJlIHZhbGlkLiAgKi8KKyAgCisgIC8qIEJvdGggYXJncyB2YXJp YWJsZTogaWYgYm90aCBleHRlbmRlZCBpbiBzYW1lIHdheQorICAgICBmcm9t IHNhbWUgd2lkdGgsIGRvIGl0IGluIHRoYXQgd2lkdGguCisgICAgIERvIGl0 IHVuc2lnbmVkIGlmIGFyZ3Mgd2VyZSB6ZXJvLWV4dGVuZGVkLiAgKi8KKyAg aWYgKChUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBFIChhcmcwKSkKKyAgICAg ICA8IFRZUEVfUFJFQ0lTSU9OIChyZXN1bHRfdHlwZSkpCisgICAgICAmJiAo VFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAoYXJnMSkpCisJICA9PSBUWVBF X1BSRUNJU0lPTiAoVFJFRV9UWVBFIChhcmcwKSkpCisgICAgICAmJiB1bnNp Z25lZDAgPT0gdW5zaWduZWQxCisgICAgICAmJiAodW5zaWduZWQwIHx8ICF1 bnMpKQorICAgIHJldHVybiBjX2NvbW1vbl9zaWduZWRfb3JfdW5zaWduZWRf dHlwZQorICAgICAgKHVuc2lnbmVkMCwgY29tbW9uX3R5cGUgKFRSRUVfVFlQ RSAoYXJnMCksIFRSRUVfVFlQRSAoYXJnMSkpKTsKKworICBlbHNlIGlmIChU UkVFX0NPREUgKGFyZzApID09IElOVEVHRVJfQ1NUCisJICAgJiYgKHVuc2ln bmVkMSB8fCAhdW5zKQorCSAgICYmIChUWVBFX1BSRUNJU0lPTiAoVFJFRV9U WVBFIChhcmcxKSkKKwkgICAgICAgPCBUWVBFX1BSRUNJU0lPTiAocmVzdWx0 X3R5cGUpKQorCSAgICYmICh0eXBlCisJICAgICAgID0gY19jb21tb25fc2ln bmVkX29yX3Vuc2lnbmVkX3R5cGUgKHVuc2lnbmVkMSwKKwkJCQkJCSAgIFRS RUVfVFlQRSAoYXJnMSkpKQorCSAgICYmICFQT0lOVEVSX1RZUEVfUCAodHlw ZSkKKwkgICAmJiBpbnRfZml0c190eXBlX3AgKGFyZzAsIHR5cGUpKQorICAg IHJldHVybiB0eXBlOworCisgIGVsc2UgaWYgKFRSRUVfQ09ERSAoYXJnMSkg PT0gSU5URUdFUl9DU1QKKwkgICAmJiAodW5zaWduZWQwIHx8ICF1bnMpCisJ ICAgJiYgKFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGFyZzApKQorCSAg ICAgICA8IFRZUEVfUFJFQ0lTSU9OIChyZXN1bHRfdHlwZSkpCisJICAgJiYg KHR5cGUKKwkgICAgICAgPSBjX2NvbW1vbl9zaWduZWRfb3JfdW5zaWduZWRf dHlwZSAodW5zaWduZWQwLAorCQkJCQkJICAgVFJFRV9UWVBFIChhcmcwKSkp CisJICAgJiYgIVBPSU5URVJfVFlQRV9QICh0eXBlKQorCSAgICYmIGludF9m aXRzX3R5cGVfcCAoYXJnMSwgdHlwZSkpCisgICAgcmV0dXJuIHR5cGU7CisK KyAgcmV0dXJuIHJlc3VsdF90eXBlOworfQorCiAvKiBXYXJucyBpZiB0aGUg Y29udmVyc2lvbiBvZiBFWFBSIHRvIFRZUEUgbWF5IGFsdGVyIGEgdmFsdWUu CiAgICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB3YXJuaW5nc19m b3JfY29udmVydF9hbmRfY2hlY2suICAqLwogCiBzdGF0aWMgdm9pZAogY29u dmVyc2lvbl93YXJuaW5nICh0cmVlIHR5cGUsIHRyZWUgZXhwcikKQEAgLTEy NzAsNjUgKzEzNzQsOTYgQEAgY29udmVyc2lvbl93YXJuaW5nICh0cmVlIHR5 cGUsIHRyZWUgZXhwcgogICAgICAgICAgICAgICAgICAiY29udmVyc2lvbiB0 byAlcVQgYWx0ZXJzICVxVCBjb25zdGFudCB2YWx1ZSIsCiAgICAgICAgICAg ICAgICAgIHR5cGUsIFRSRUVfVFlQRSAoZXhwcikpOwogICAgIH0KICAgZWxz ZSAvKiAnZXhwcicgaXMgbm90IGEgY29uc3RhbnQuICAqLwogICAgIHsKKyAg ICAgIHRyZWUgZXhwcl90eXBlID0gVFJFRV9UWVBFIChleHByKTsKKwogICAg ICAgLyogV2FybiBmb3IgcmVhbCB0eXBlcyBjb252ZXJ0ZWQgdG8gaW50ZWdl ciB0eXBlcy4gICovCi0gICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUg KGV4cHIpKSA9PSBSRUFMX1RZUEUKKyAgICAgIGlmIChUUkVFX0NPREUgKGV4 cHJfdHlwZSkgPT0gUkVBTF9UWVBFCiAgICAgICAgICAgJiYgVFJFRV9DT0RF ICh0eXBlKSA9PSBJTlRFR0VSX1RZUEUpCiAgICAgICAgIGdpdmVfd2Fybmlu ZyA9IHRydWU7CiAKLSAgICAgIGVsc2UgaWYgKFRSRUVfQ09ERSAoVFJFRV9U WVBFIChleHByKSkgPT0gSU5URUdFUl9UWVBFCisgICAgICBlbHNlIGlmIChU UkVFX0NPREUgKGV4cHJfdHlwZSkgPT0gSU5URUdFUl9UWVBFCiAgICAgICAg ICAgICAgICAmJiBUUkVFX0NPREUgKHR5cGUpID09IElOVEVHRVJfVFlQRSkK ICAgICAgICAgewogCSAgLyogRG9uJ3Qgd2FybiBhYm91dCB1bnNpZ25lZCBj aGFyIHkgPSAweGZmLCB4ID0gKGludCkgeTsgICovCiAJICBleHByID0gZ2V0 X3Vud2lkZW5lZCAoZXhwciwgMCk7CisJICBleHByX3R5cGUgPSBUUkVFX1RZ UEUgKGV4cHIpOwogCisJICAvKiBEb24ndCB3YXJuIGZvciBzaG9ydCB5OyBz aG9ydCB4ID0gKChpbnQpeSAmIDB4ZmYpOyAgKi8KKwkgIGlmIChUUkVFX0NP REUgKGV4cHIpID09IEJJVF9BTkRfRVhQUiAKKwkgICAgICB8fCBUUkVFX0NP REUgKGV4cHIpID09IEJJVF9JT1JfRVhQUiAKKwkgICAgICB8fCBUUkVFX0NP REUgKGV4cHIpID09IEJJVF9YT1JfRVhQUikKKwkgICAgeworCSAgICAvKiBJ dCBib3RoIGFyZ3Mgd2VyZSBleHRlbmRlZCBmcm9tIGEgc2hvcnRlc3QgdHlw ZSwgdXNlCisJICAgICAgIHRoYXQgdHlwZSBpZiB0aGF0IGlzIHNhZmUuICAq LworCSAgICAgIGV4cHJfdHlwZSA9IHNob3J0ZW5fYmluYXJ5X29wIChleHBy X3R5cGUsIAorCQkJCQkgICAgIFRSRUVfT1BFUkFORCAoZXhwciwgMCksIAor CQkJCQkgICAgIFRSRUVfT1BFUkFORCAoZXhwciwgMSksIAorCQkJCQkgICAg IC8qIGJpdHdpc2UgKi8xKTsKKworCSAgICAgIC8qIElmIG9uZSBvZiB0aGUg b3BlcmFuZHMgaXMgYSBub24tbmVnYXRpdmUgY29uc3RhbnQKKwkJIHRoYXQg Zml0cyBpbiB0aGUgdGFyZ2V0IHR5cGUsIHRoZW4gdGhlIHR5cGUgb2YgdGhl CisJCSBvdGhlciBvcGVyYW5kIGRvZXMgbm90IG1hdHRlci4gKi8KKwkgICAg ICBpZiAoVFJFRV9DT0RFIChleHByKSA9PSBCSVRfQU5EX0VYUFIpCisJCXsK KwkJICB0cmVlIG9wMCA9IFRSRUVfT1BFUkFORCAoZXhwciwgMCk7CisJCSAg dHJlZSBvcDEgPSBUUkVFX09QRVJBTkQgKGV4cHIsIDEpOworCQkgIGlmICgo VFJFRV9DT0RFIChvcDApID09IElOVEVHRVJfQ1NUCisJCSAgICAgICAmJiBp bnRfZml0c190eXBlX3AgKG9wMCwgY19jb21tb25fc2lnbmVkX3R5cGUgKHR5 cGUpKQorCQkgICAgICAgJiYgaW50X2ZpdHNfdHlwZV9wIChvcDAsIGNfY29t bW9uX3Vuc2lnbmVkX3R5cGUgKHR5cGUpKSkKKwkJICAgICAgfHwgKFRSRUVf Q09ERSAob3AxKSA9PSBJTlRFR0VSX0NTVAorCQkgICAgICAgJiYgaW50X2Zp dHNfdHlwZV9wIChvcDEsIGNfY29tbW9uX3NpZ25lZF90eXBlICh0eXBlKSkK KwkJICAgICAgICYmIGludF9maXRzX3R5cGVfcCAob3AxLCBjX2NvbW1vbl91 bnNpZ25lZF90eXBlICh0eXBlKSkpKQorCQkgICAgcmV0dXJuOworCQl9CisJ ICAgIH0KICAgICAgICAgICAvKiBXYXJuIGZvciBpbnRlZ2VyIHR5cGVzIGNv bnZlcnRlZCB0byBzbWFsbGVyIGludGVnZXIgdHlwZXMuICAqLwotICAgICAg ICAgIGlmIChmb3JtYWxfcHJlYyA8IFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZ UEUgKGV4cHIpKSkgCisgICAgICAgICAgaWYgKGZvcm1hbF9wcmVjIDwgVFlQ RV9QUkVDSVNJT04gKGV4cHJfdHlwZSkpIAogCSAgICBnaXZlX3dhcm5pbmcg PSB0cnVlOwogCiAJICAvKiBXaGVuIHRoZXkgYXJlIHRoZSBzYW1lIHdpZHRo IGJ1dCBkaWZmZXJlbnQgc2lnbmVkbmVzcywKIAkgICAgIHRoZW4gdGhlIHZh bHVlIG1heSBjaGFuZ2UuICAqLwotCSAgZWxzZSBpZiAoKGZvcm1hbF9wcmVj ID09IFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGV4cHIpKQotCQkgICAg JiYgVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFIChleHByKSkgIT0gVFlQRV9V TlNJR05FRCAodHlwZSkpCisJICBlbHNlIGlmICgoZm9ybWFsX3ByZWMgPT0g VFlQRV9QUkVDSVNJT04gKGV4cHJfdHlwZSkKKwkJICAgICYmIFRZUEVfVU5T SUdORUQgKGV4cHJfdHlwZSkgIT0gVFlQRV9VTlNJR05FRCAodHlwZSkpCiAJ CSAgIC8qIEV2ZW4gd2hlbiBjb252ZXJ0ZWQgdG8gYSBiaWdnZXIgdHlwZSwg aWYgdGhlIHR5cGUgaXMKIAkJICAgICAgdW5zaWduZWQgYnV0IGV4cHIgaXMg c2lnbmVkLCB0aGVuIG5lZ2F0aXZlIHZhbHVlcwogCQkgICAgICB3aWxsIGJl IGNoYW5nZWQuICAqLwotCQkgICB8fCAoVFlQRV9VTlNJR05FRCAodHlwZSkg JiYgIVRZUEVfVU5TSUdORUQgKFRSRUVfVFlQRSAoZXhwcikpKSkKKwkJICAg fHwgKFRZUEVfVU5TSUdORUQgKHR5cGUpICYmICFUWVBFX1VOU0lHTkVEIChl eHByX3R5cGUpKSkKIAkgICAgd2FybmluZyAoT1BUX1dzaWduX2NvbnZlcnNp b24sCiAJCSAgICAgImNvbnZlcnNpb24gdG8gJXFUIGZyb20gJXFUIG1heSBj aGFuZ2UgdGhlIHNpZ24gb2YgdGhlIHJlc3VsdCIsCi0JCSAgICAgdHlwZSwg VFJFRV9UWVBFIChleHByKSk7CisJCSAgICAgdHlwZSwgZXhwcl90eXBlKTsK ICAgICAgICAgfQogCiAgICAgICAvKiBXYXJuIGZvciBpbnRlZ2VyIHR5cGVz IGNvbnZlcnRlZCB0byByZWFsIHR5cGVzIGlmIGFuZCBvbmx5IGlmCiAgICAg ICAgICBhbGwgdGhlIHJhbmdlIG9mIHZhbHVlcyBvZiB0aGUgaW50ZWdlciB0 eXBlIGNhbm5vdCBiZQogICAgICAgICAgcmVwcmVzZW50ZWQgYnkgdGhlIHJl YWwgdHlwZS4gICovCi0gICAgICBlbHNlIGlmIChUUkVFX0NPREUgKFRSRUVf VFlQRSAoZXhwcikpID09IElOVEVHRVJfVFlQRQorICAgICAgZWxzZSBpZiAo VFJFRV9DT0RFIChleHByX3R5cGUpID09IElOVEVHRVJfVFlQRQogICAgICAg ICAgICAgICAgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBSRUFMX1RZUEUpCiAg ICAgICAgIHsKLSAgICAgICAgICB0cmVlIHR5cGVfbG93X2JvdW5kID0gVFlQ RV9NSU5fVkFMVUUgKFRSRUVfVFlQRSAoZXhwcikpOwotICAgICAgICAgIHRy ZWUgdHlwZV9oaWdoX2JvdW5kID0gVFlQRV9NQVhfVkFMVUUgKFRSRUVfVFlQ RSAoZXhwcikpOworICAgICAgICAgIHRyZWUgdHlwZV9sb3dfYm91bmQgPSBU WVBFX01JTl9WQUxVRSAoZXhwcl90eXBlKTsKKyAgICAgICAgICB0cmVlIHR5 cGVfaGlnaF9ib3VuZCA9IFRZUEVfTUFYX1ZBTFVFIChleHByX3R5cGUpOwog ICAgICAgICAgIFJFQUxfVkFMVUVfVFlQRSByZWFsX2xvd19ib3VuZCA9IHJl YWxfdmFsdWVfZnJvbV9pbnRfY3N0ICgwLCB0eXBlX2xvd19ib3VuZCk7CiAg ICAgICAgICAgUkVBTF9WQUxVRV9UWVBFIHJlYWxfaGlnaF9ib3VuZCA9IHJl YWxfdmFsdWVfZnJvbV9pbnRfY3N0ICgwLCB0eXBlX2hpZ2hfYm91bmQpOwog CiAgICAgICAgICAgaWYgKCFleGFjdF9yZWFsX3RydW5jYXRlIChUWVBFX01P REUgKHR5cGUpLCAmcmVhbF9sb3dfYm91bmQpCiAgICAgICAgICAgICAgIHx8 ICFleGFjdF9yZWFsX3RydW5jYXRlIChUWVBFX01PREUgKHR5cGUpLCAmcmVh bF9oaWdoX2JvdW5kKSkKICAgICAgICAgICAgIGdpdmVfd2FybmluZyA9IHRy dWU7CiAgICAgICAgIH0KIAogICAgICAgLyogV2FybiBmb3IgcmVhbCB0eXBl cyBjb252ZXJ0ZWQgdG8gc21hbGxlciByZWFsIHR5cGVzLiAgKi8KLSAgICAg IGVsc2UgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChleHByKSkgPT0gUkVB TF9UWVBFCisgICAgICBlbHNlIGlmIChUUkVFX0NPREUgKGV4cHJfdHlwZSkg PT0gUkVBTF9UWVBFCiAgICAgICAgICAgICAgICAmJiBUUkVFX0NPREUgKHR5 cGUpID09IFJFQUxfVFlQRQotICAgICAgICAgICAgICAgJiYgZm9ybWFsX3By ZWMgPCBUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBFIChleHByKSkpCisgICAg ICAgICAgICAgICAmJiBmb3JtYWxfcHJlYyA8IFRZUEVfUFJFQ0lTSU9OIChl eHByX3R5cGUpKQogICAgICAgICBnaXZlX3dhcm5pbmcgPSB0cnVlOwogCiAK ICAgICAgIGlmIChnaXZlX3dhcm5pbmcpCiAgICAgICAgIHdhcm5pbmcgKE9Q VF9XY29udmVyc2lvbiwKICAgICAgICAgICAgICAgICAgImNvbnZlcnNpb24g dG8gJXFUIGZyb20gJXFUIG1heSBhbHRlciBpdHMgdmFsdWUiLAotICAgICAg ICAgICAgICAgICB0eXBlLCBUUkVFX1RZUEUgKGV4cHIpKTsKKyAgICAgICAg ICAgICAgICAgdHlwZSwgZXhwcl90eXBlKTsKICAgICB9CiB9CiAKIC8qIFBy b2R1Y2Ugd2FybmluZ3MgYWZ0ZXIgYSBjb252ZXJzaW9uLiBSRVNVTFQgaXMg dGhlIHJlc3VsdCBvZgogICAgY29udmVydGluZyBFWFBSIHRvIFRZUEUuICBU aGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvcgpJbmRleDogZ2NjL2MtY29t bW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2MtY29tbW9u LmgJKHJldmlzaW9uIDEzMjMxMCkKKysrIGdjYy9jLWNvbW1vbi5oCSh3b3Jr aW5nIGNvcHkpCkBAIC02OTksMTAgKzY5OSwxMyBAQCBleHRlcm4gYm9vbCBj X2RldGVybWluZV92aXNpYmlsaXR5ICh0cmVlCiBleHRlcm4gYm9vbCBzYW1l X3NjYWxhcl90eXBlX2lnbm9yaW5nX3NpZ25lZG5lc3MgKHRyZWUsIHRyZWUp OwogCiAjZGVmaW5lIGNfc2l6ZW9mKFQpICBjX3NpemVvZl9vcl9hbGlnbm9m X3R5cGUgKFQsIHRydWUsIDEpCiAjZGVmaW5lIGNfYWxpZ25vZihUKSBjX3Np emVvZl9vcl9hbGlnbm9mX3R5cGUgKFQsIGZhbHNlLCAxKQogCisvKiBTdWJy b3V0aW5lIG9mIGJ1aWxkX2JpbmFyeV9vcCwgdXNlZCBmb3IgY2VydGFpbiBv cGVyYXRpb25zLiAgKi8KK2V4dGVybiB0cmVlIHNob3J0ZW5fYmluYXJ5X29w ICh0cmVlIHJlc3VsdF90eXBlLCB0cmVlIG9wMCwgdHJlZSBvcDEsIGJvb2wg Yml0d2lzZSk7CisKIC8qIFN1YnJvdXRpbmUgb2YgYnVpbGRfYmluYXJ5X29w LCB1c2VkIGZvciBjb21wYXJpc29uIG9wZXJhdGlvbnMuCiAgICBTZWUgaWYg dGhlIG9wZXJhbmRzIGhhdmUgYm90aCBiZWVuIGNvbnZlcnRlZCBmcm9tIHN1 YndvcmQgaW50ZWdlciB0eXBlcwogICAgYW5kLCBpZiBzbywgcGVyaGFwcyBj aGFuZ2UgdGhlbSBib3RoIGJhY2sgdG8gdGhlaXIgb3JpZ2luYWwgdHlwZS4g ICovCiBleHRlcm4gdHJlZSBzaG9ydGVuX2NvbXBhcmUgKHRyZWUgKiwgdHJl ZSAqLCB0cmVlICosIGVudW0gdHJlZV9jb2RlICopOwogCg== ------=_Part_9751_21989349.1203354406586--