From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.hazardy.de (mail.hazardy.de [78.94.181.132]) by sourceware.org (Postfix) with ESMTPS id F2968385E45E; Fri, 15 Mar 2024 20:40:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F2968385E45E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=hazardy.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=hazardy.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F2968385E45E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=78.94.181.132 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710535247; cv=none; b=G7wdo6NUvUUh1YledU+D0LiRZPa2GBvbHSN/Vy3F73Kzm+zW/G/P9h6VtCySnmSLOi3E7AU8NypJJdZUSTlP0aHnW09qdcLRqeyifthWWhAD1JJp5IvHZzT/mEQPL7FcYXzt9Em+Wv1zscKhRFeLGvxP5718Cxx9ZVQ19taJtDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710535247; c=relaxed/simple; bh=SfP+k0RK9nPQZDPBJhLXzii0/0i1c8jt47brRQHxRnI=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=gXk4vPcrUBYSgDKntT3A669UWfNG3kj5d61bqfL+bufetCsPxN28tzi9dDnZPIHNt2/t+Uq4tSVhSFkAESIxV9fldgDxU5OW250LBSfT60gttIwiIiaXjIH7loqEABI+20UBBDbcjgT/j/mfL79tloeSwu+RVF9kjcLJg/v9dnI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from [10.0.1.129] (hades.hazardy.de [10.0.1.129]) by mail.hazardy.de (Postfix) with ESMTPSA id 98370700532; Fri, 15 Mar 2024 21:40:34 +0100 (CET) Content-Type: multipart/mixed; boundary="------------UEIWDlEdWk2oHdBgrvc1hqcs" Message-ID: Date: Fri, 15 Mar 2024 21:40:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 5/4] libbacktrace: improve getting debug information for loaded dlls To: Ian Lance Taylor Cc: gcc-patches@gcc.gnu.org, gcc@gcc.gnu.org References: <20230120105409.54949-1-gcc@hazardy.de> <20230120105409.54949-4-gcc@hazardy.de> <0c08e584-499f-473f-8699-a41c6a967536@hazardy.de> <2bb200e6-2ae7-40b0-86a7-24a72532924c@hazardy.de> Content-Language: en-US From: =?UTF-8?Q?Bj=C3=B6rn_Sch=C3=A4pers?= In-Reply-To: X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------UEIWDlEdWk2oHdBgrvc1hqcs Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Am 25.01.2024 um 23:04 schrieb Ian Lance Taylor: > On Thu, Jan 25, 2024 at 11:53 AM Björn Schäpers wrote: >> >> Am 23.01.2024 um 23:37 schrieb Ian Lance Taylor: >>> On Thu, Jan 4, 2024 at 2:33 PM Björn Schäpers wrote: >>>> >>>> Am 03.01.2024 um 00:12 schrieb Björn Schäpers: >>>>> Am 30.11.2023 um 20:53 schrieb Ian Lance Taylor: >>>>>> On Fri, Jan 20, 2023 at 2:55 AM Björn Schäpers wrote: >>>>>>> >>>>>>> From: Björn Schäpers >>>>>>> >>>>>>> Fixes https://github.com/ianlancetaylor/libbacktrace/issues/53, except >>>>>>> that libraries loaded after the backtrace_initialize are not handled. >>>>>>> But as far as I can see that's the same for elf. >>>>>> >>>>>> Thanks, but I don't want a patch that loops using goto statements. >>>>>> Please rewrite to avoid that. It may be simpler to call a function. >>>>>> >>>>>> Also starting with a module count of 1000 seems like a lot. Do >>>>>> typical Windows programs load that many modules? >>>>>> >>>>>> Ian >>>>>> >>>>>> >>>>> >>>>> Rewritten using a function. >>>>> >>>>> If that is commited, could you attribute that commit to me (--author="Björn >>>>> Schäpers ")? >>>>> >>>>> Thanks and kind regards, >>>>> Björn. >>>> >>>> I noticed that under 64 bit libraries loaded with LoadLibrary were missing. >>>> EnumProcessModules stated the correct number of modules, but did not fill the >>>> the HMODULEs, but set them to 0. While trying to investigate I noticed if I do >>>> the very same thing from main (in C++) I even got fewer module HMODULEs. >>>> >>>> So I went a different way. This detects all libraries correctly, in 32 and 64 >>>> bit. The question is, if it should be a patch on top of the previous, or should >>>> they be merged, or even only this solution and drop the EnumProcessModules variant? >>> >>> Is there any reason to use both patches? Seems simpler to just use >>> this one if it works. Thanks. >>> >>> Ian >> >> This one needs the tlhelp32 header and its functions, which are (accoridng to >> the microsoft documentation) are only available since Windows XP rsp. Windows >> Server 2003. >> >> If that's no problem, and in my opinion it shouldn't be, then I can basically >> drop patch 4 and rebase this one. > > I don't see that as a problem. It seems like the patch will fall back > cleanly on ancient Windows and simply fail to pick up other loaded > DLLs. I think that is fine. I'll look for an updated patch. Thanks. > > Ian Attached is the combined version of the two patches, only implementing the variant with the tlhelp32 API. Tested on x86 and x86_64 windows. Kind regards, Björn. --------------UEIWDlEdWk2oHdBgrvc1hqcs Content-Type: text/plain; charset=UTF-8; name="0003-libbacktrace-get-debug-information-for-loaded-dlls.patch" Content-Disposition: attachment; filename*0="0003-libbacktrace-get-debug-information-for-loaded-dlls.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSAzM2E2MzgwZmVmZjY2ZTMyZWYwZjBkN2NiYWQ2ZmI1NTMxOWY0ZTJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qmo9QzM9QjZybj0yMFNjaD1DMz1B NHBlcnM/PSA8YmpvZXJuQGhhemFyZHkuZGU+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjM6 NTQ6MzIgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gbGliYmFja3RyYWNlOiBnZXQgZGVi dWcgaW5mb3JtYXRpb24gZm9yIGxvYWRlZCBkbGxzCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA4Yml0CgpGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vaWFubGFuY2V0YXlsb3Iv bGliYmFja3RyYWNlL2lzc3Vlcy81MywgZXhjZXB0CnRoYXQgbGlicmFyaWVzIGxvYWRlZCBh ZnRlciB0aGUgYmFja3RyYWNlX2luaXRpYWxpemUgYXJlIG5vdCBoYW5kbGVkLgpCdXQgYXMg ZmFyIGFzIEkgY2FuIHNlZSB0aGF0J3MgdGhlIHNhbWUgZm9yIGVsZi4KClRlc3RlZCBvbiB4 ODZfNjQtbGludXggYW5kIGk2ODYtdzY0LW1pbmd3MzIuCgotLSA+OCAtLQoKbGliYmFja3Ry YWNlL0NoYW5nZWxvZzoKCgkqIGNvbmZpZ3VyZS5hYzogQ2hlY2tlZCBmb3IgdGxoZWxwMzIu aAoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5oLmluOiBSZWdlbmVyYXRl LgoJKiBwZWNvZmYuYzogSW5jbHVkZSA8dGxoZWxwMzIuaD4gaWYgYXZhaWxhYmxlLgoJIChi YWNrdHJhY2VfaW5pdGlhbGl6ZSk6IFVzZSB0bGhlbHAzMiBhcGkgZm9yIGEgc25hcHNob3Qg dG8KCSAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3QgbG9hZGVkIG1vZHVsZXMuCgkg KGNvZmZfYWRkKTogTmV3IGFyZ3VtZW50IGZvciB0aGUgbW9kdWxlIGhhbmRsZSBvZiB0aGUg ZmlsZSwKCSAgICAgICAgICAgICB0byBnZXQgdGhlIGJhc2UgYWRkcmVzcy4KClNpZ25lZC1v ZmYtYnk6IEJqw7ZybiBTY2jDpHBlcnMgPGJqb2VybkBoYXphcmR5LmRlPgotLS0KIGxpYmJh Y2t0cmFjZS9jb25maWcuaC5pbiAgfCAgIDMgKwogbGliYmFja3RyYWNlL2NvbmZpZ3VyZSAg ICB8IDE4NSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogbGliYmFj a3RyYWNlL2NvbmZpZ3VyZS5hYyB8ICAgNCArCiBsaWJiYWNrdHJhY2UvcGVjb2ZmLmMgICAg IHwgIDc0ICsrKysrKysrKysrKystLQogNCBmaWxlcyBjaGFuZ2VkLCAxNzEgaW5zZXJ0aW9u cygrKSwgOTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYmFja3RyYWNlL2NvbmZp Zy5oLmluIGIvbGliYmFja3RyYWNlL2NvbmZpZy5oLmluCmluZGV4IGVlMjYxNjMzNWM3Li45 YjhhYjg4YWI2MyAxMDA2NDQKLS0tIGEvbGliYmFja3RyYWNlL2NvbmZpZy5oLmluCisrKyBi L2xpYmJhY2t0cmFjZS9jb25maWcuaC5pbgpAQCAtMTAxLDYgKzEwMSw5IEBACiAvKiBEZWZp bmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8K ICN1bmRlZiBIQVZFX1NZU19UWVBFU19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl IHRoZSA8dGxoZWxwMzIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9UTEhFTFAz Ml9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRl ciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIApkaWZmIC0tZ2l0IGEvbGliYmFj a3RyYWNlL2NvbmZpZ3VyZSBiL2xpYmJhY2t0cmFjZS9jb25maWd1cmUKaW5kZXggN2FkZTk2 NmI1NGQuLmNhNTJlZTNiYWZiIDEwMDc1NQotLS0gYS9saWJiYWNrdHJhY2UvY29uZmlndXJl CisrKyBiL2xpYmJhY2t0cmFjZS9jb25maWd1cmUKQEAgLTE4NjYsNyArMTg2Niw3IEBAIGVs c2UKICNkZWZpbmUgJDIgaW5ub2N1b3VzXyQyCiAKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVm aW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLSAgICB3 aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICQyICgpOyBiZWxvdy4KKyAgICB3aGljaCBj YW4gY29uZmxpY3Qgd2l0aCBjaGFyICQyICh2b2lkKTsgYmVsb3cuCiAgICAgUHJlZmVyIDxs aW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQog ICAgIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4g ICovCiAKQEAgLTE4ODQsNyArMTg4NCw3IEBAIGVsc2UKICNpZmRlZiBfX2NwbHVzcGx1cwog ZXh0ZXJuICJDIgogI2VuZGlmCi1jaGFyICQyICgpOworY2hhciAkMiAodm9pZCk7CiAvKiBU aGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRoaXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBp bXBsZW1lbnRzCiAgICAgdG8gYWx3YXlzIGZhaWwgd2l0aCBFTk9TWVMuICBTb21lIGZ1bmN0 aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQKICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBf XyBhbmQgdGhlIG5vcm1hbCBuYW1lIGlzIGFuIGFsaWFzLiAgKi8KQEAgLTE4OTMsNyArMTg5 Myw3IEBAIGNob2tlIG1lCiAjZW5kaWYKIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQog ewogcmV0dXJuICQyICgpOwogICA7CkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBlbHNlCiAvKiBl bmQgY29uZmRlZnMuaC4gICovCiAkNAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewog aWYgKHNpemVvZiAoJDIpKQogCSByZXR1cm4gMDsKQEAgLTE5NDUsNyArMTk0NSw3IEBAIGlm IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKIC8qIGVuZCBjb25mZGVm cy5oLiAgKi8KICQ0CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiBpZiAoc2l6ZW9m ICgoJDIpKSkKIAkgICAgcmV0dXJuIDA7CkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMu aC4gICovCiAkNAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogc3RhdGljIGludCB0 ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA+PSAwKV07CiB0ZXN0X2FycmF5IFswXSA9IDA7 CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IjsgdGhlbiA6CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAkNAogaW50Ci1tYWluICgpCitt YWluICh2b2lkKQogewogc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA8 PSAkYWNfbWlkKV07CiB0ZXN0X2FycmF5IFswXSA9IDA7CkBAIC0yMDI3LDcgKzIwMjcsNyBA QCBlbHNlCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAkNAogaW50Ci1tYWluICgpCittYWlu ICh2b2lkKQogewogc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA8IDAp XTsKIHRlc3RfYXJyYXkgWzBdID0gMDsKQEAgLTIwNDQsNyArMjA0NCw3IEBAIGlmIGFjX2Zu X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKIC8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KICQ0CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiBzdGF0aWMgaW50IHRlc3Rf YXJyYXkgWzEgLSAyICogISgoJDIpID49ICRhY19taWQpXTsKIHRlc3RfYXJyYXkgWzBdID0g MDsKQEAgLTIwNzksNyArMjA3OSw3IEBAIHdoaWxlIHRlc3QgIngkYWNfbG8iICE9ICJ4JGFj X2hpIjsgZG8KIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICQ0CiBpbnQKLW1haW4gKCkKK21h aW4gKHZvaWQpCiB7CiBzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpIDw9 ICRhY19taWQpXTsKIHRlc3RfYXJyYXkgWzBdID0gMDsKQEAgLTIxMDQsMTIgKzIxMDQsMTIg QEAgZXNhYwogICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICQ0Ci1zdGF0aWMgbG9uZyBpbnQgbG9uZ3Zh bCAoKSB7IHJldHVybiAkMjsgfQotc3RhdGljIHVuc2lnbmVkIGxvbmcgaW50IHVsb25ndmFs ICgpIHsgcmV0dXJuICQyOyB9CitzdGF0aWMgbG9uZyBpbnQgbG9uZ3ZhbCAodm9pZCkgeyBy ZXR1cm4gJDI7IH0KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGludCB1bG9uZ3ZhbCAodm9pZCkg eyByZXR1cm4gJDI7IH0KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5o PgogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogCiAgIEZJTEUgKmYgPSBmb3BlbiAo ImNvbmZ0ZXN0LnZhbCIsICJ3Iik7CkBAIC0yMTcwLDcgKzIxNzAsNyBAQCBlbHNlCiAvKiBl bmQgY29uZmRlZnMuaC4gICovCiAkNAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewog I2lmbmRlZiAkYXNfZGVjbF9uYW1lCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTMwNzMsNyAr MzA3Myw3IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQog ewogCiAgIDsKQEAgLTMyMTMsNyArMzIxMyw3IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICNpbmNsdWRl IDxzdGRpby5oPgogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogRklMRSAqZiA9IGZv cGVuICgiY29uZnRlc3Qub3V0IiwgInciKTsKICByZXR1cm4gZmVycm9yIChmKSB8fCBmY2xv c2UgKGYpICE9IDA7CkBAIC0zMjc3LDcgKzMyNzcsNyBAQCBlbHNlCiAvKiBlbmQgY29uZmRl ZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7CkBAIC0z MzI4LDcgKzMzMjgsNyBAQCBlbHNlCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAot bWFpbiAoKQorbWFpbiAodm9pZCkKIHsKICNpZm5kZWYgX19HTlVDX18KICAgICAgICBjaG9r ZSBtZQpAQCAtMzM2OSw3ICszMzY5LDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmguICAq LwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMzM4NCw3ICsz Mzg0LDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkK K21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMzQwMCw3ICszNDAwLDcgQEAgZWxzZQogLyog ZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAK ICAgOwpAQCAtMzQ0OSw5ICszNDQ5LDcgQEAgc3RydWN0IHN0YXQ7CiAvKiBNb3N0IG9mIHRo ZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5z aC4gICovCiBzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CiBGSUxFICogKCpyY3NvcGVuKSAoc3Ry dWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOwotc3RhdGljIGNoYXIgKmUgKHAsIGkp Ci0gICAgIGNoYXIgKipwOwotICAgICBpbnQgaTsKK3N0YXRpYyBjaGFyICplIChjaGFyICoq cCwgaW50IGkpCiB7CiAgIHJldHVybiBwW2ldOwogfQpAQCAtMzQ4Niw3ICszNDg0LDcgQEAg aW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBz dHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGkKIGludCBhcmdjOwogY2hhciAqKmFyZ3Y7CiBp bnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0g YXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07CiAgIDsKQEAgLTM1NDQs NyArMzU0Miw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWlu ICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTM4NzEsNyArMzg2OSw3IEBAIGVsc2UK ICNpbmNsdWRlIDxmbG9hdC5oPgogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAK ICAgOwpAQCAtMzk0MSw3ICszOTM5LDcgQEAgZWxzZQogCiAjZGVmaW5lIFhPUihlLCBmKSAo KChlKSAmJiAhKGYpKSB8fCAoIShlKSAmJiAoZikpKQogaW50Ci1tYWluICgpCittYWluICh2 b2lkKQogewogICBpbnQgaTsKICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQpAQCAtNDAy MCw3ICs0MDE4LDcgQEAgZWxzZQogIyAgICAgICAgIGRlZmluZSBfX0VYVEVOU0lPTlNfXyAx CiAgICAgICAgICAgJGFjX2luY2x1ZGVzX2RlZmF1bHQKIGludAotbWFpbiAoKQorbWFpbiAo dm9pZCkKIHsKIAogICA7CkBAIC01MDAyLDcgKzUwMDAsNyBAQCBlbHNlCiAvKiBlbmQgY29u ZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKICNpZm5kZWYg X19HTlVDX18KICAgICAgICBjaG9rZSBtZQpAQCAtNTA0Myw3ICs1MDQxLDcgQEAgZWxzZQog LyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7 CiAKICAgOwpAQCAtNTA1OCw3ICs1MDU2LDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmgu ICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtNTA3NCw3 ICs1MDcyLDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4g KCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtNTEyMyw5ICs1MTIxLDcgQEAgc3RydWN0 IHN0YXQ7CiAvKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9t IFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCiBzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CiBG SUxFICogKCpyY3NvcGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOwot c3RhdGljIGNoYXIgKmUgKHAsIGkpCi0gICAgIGNoYXIgKipwOwotICAgICBpbnQgaTsKK3N0 YXRpYyBjaGFyICplIChjaGFyICoqcCwgaW50IGkpCiB7CiAgIHJldHVybiBwW2ldOwogfQpA QCAtNTE2MCw3ICs1MTU2LDcgQEAgaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxF ICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGkKIGludCBh cmdjOwogY2hhciAqKmFyZ3Y7CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1 cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFy Z3ZbMV07CiAgIDsKQEAgLTUyMTgsNyArNTIxNCw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVm cy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTc0 MDgsNyArNzQwNCw3IEBAIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUK IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQog ewogCiAgIDsKQEAgLTc5OTQsNyArNzk5MCw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5o LiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTk2MzIs NyArOTYyOCw3IEBAIF9MVF9FT0YKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1t YWluICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTk2NzIsNyArOTY2OCw3IEBAIGlm IHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9s aWIiOyBmaQogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4g KHZvaWQpCiB7CiAKICAgOwpAQCAtMTA5NDcsNyArMTA5NDMsNyBAQCBlbHNlCiAvKiBlbmQg Y29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7 CkBAIC0xMTM4OCw5ICsxMTM4NCw5IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIgogI2VuZGlm Ci1jaGFyIGRsb3BlbiAoKTsKK2NoYXIgZGxvcGVuICh2b2lkKTsKIGludAotbWFpbiAoKQor bWFpbiAodm9pZCkKIHsKIHJldHVybiBkbG9wZW4gKCk7CiAgIDsKQEAgLTExNDQxLDkgKzEx NDM3LDkgQEAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAog I2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiCiAjZW5kaWYKLWNoYXIgc2hsX2xvYWQg KCk7CitjaGFyIHNobF9sb2FkICh2b2lkKTsKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkK IHsKIHJldHVybiBzaGxfbG9hZCAoKTsKICAgOwpAQCAtMTE0ODQsOSArMTE0ODAsOSBAQCBj YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAjaWZkZWYgX19j cGx1c3BsdXMKIGV4dGVybiAiQyIKICNlbmRpZgotY2hhciBkbG9wZW4gKCk7CitjaGFyIGRs b3BlbiAodm9pZCk7CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1cm4gZGxv cGVuICgpOwogICA7CkBAIC0xMTUyMyw5ICsxMTUxOSw5IEBAIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJu ICJDIgogI2VuZGlmCi1jaGFyIGRsb3BlbiAoKTsKK2NoYXIgZGxvcGVuICh2b2lkKTsKIGlu dAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIHJldHVybiBkbG9wZW4gKCk7CiAgIDsKQEAg LTExNTYyLDkgKzExNTU4LDkgQEAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiCiAjZW5kaWYKLWNo YXIgZGxkX2xpbmsgKCk7CitjaGFyIGRsZF9saW5rICh2b2lkKTsKIGludAotbWFpbiAoKQor bWFpbiAodm9pZCkKIHsKIHJldHVybiBkbGRfbGluayAoKTsKICAgOwpAQCAtMTE2MzIsNyAr MTE2MjgsNyBAQCBlbHNlCiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBs dF9kbG5lZWRfdXNjb3JlPTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4g Y29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLSNsaW5lIDExNjM1ICJjb25maWd1cmUiCisj bGluZSAxMTYzMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBI QVZFX0RMRkNOX0gKQEAgLTExNzM4LDcgKzExNzM0LDcgQEAgZWxzZQogICBsdF9kbHVua25v d249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1 cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0j bGluZSAxMTc0MSAiY29uZmlndXJlIgorI2xpbmUgMTE3MzcgImNvbmZpZ3VyZSIKICNpbmNs dWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9ICkBAIC0xMjAxNiw3ICsxMjAx Miw3IEBAIGVsc2UKIAkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAx KQogCQkgICAgICA/IDEgOiAtMV07CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAK ICAgOwpAQCAtMTIwNjIsNyArMTIwNTgsNyBAQCBlbHNlCiAJCSAgICAgICAmJiBMQVJHRV9P RkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKIAkJICAgICAgPyAxIDogLTFdOwogaW50Ci1tYWlu ICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTEyMDg2LDcgKzEyMDgyLDcgQEAgcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNf ZXh0CiAJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKIAkJICAg ICAgPyAxIDogLTFdOwogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAg LTEyMTMxLDcgKzEyMTI3LDcgQEAgZWxzZQogCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAy MTQ3NDgzNjQ3ID09IDEpCiAJCSAgICAgID8gMSA6IC0xXTsKIGludAotbWFpbiAoKQorbWFp biAodm9pZCkKIHsKIAogICA7CkBAIC0xMjE1NSw3ICsxMjE1MSw3IEBAIHJtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogCQkg ICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCiAJCSAgICAgID8gMSA6 IC0xXTsKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7CkBAIC0xMjIyOCw3 ICsxMjIyNCw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIHN0YXRpYyBpbnQg ZigpIHsgcmV0dXJuIDA7IH0KIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIHJldHVy biBmKCk7CiAgIDsKQEAgLTEyMjU5LDcgKzEyMjU1LDcgQEAgZWxzZQogLyogZW5kIGNvbmZk ZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1cm4gMDsK ICAgOwpAQCAtMTIzMTIsNyArMTIzMDgsNyBAQCBjYXNlICIkaG9zdCIgaW4KIC8qIGVuZCBj b25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogCiAjaWYg IWRlZmluZWQoX19TU0UyX18pCkBAIC0xMjMzOSw3ICsxMjMzNSw3IEBAIHJtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogLyog ZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiBh c20gKCJzZXRzc2JzeSIpOwogICA7CkBAIC0xMjQwMSw3ICsxMjM5Nyw3IEBAIGVsc2UKIC8q IGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewog CiAgIDsKQEAgLTEyNDkwLDcgKzEyNDg2LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IF9VbndpbmRfR2V0SVBJbmZvLi4uICIgPiY2OyB9CiAJc3RydWN0IF9VbndpbmRfQ29udGV4 dCAqY29udGV4dDsKIAlpbnQgaXBfYmVmb3JlX2luc24gPSAwOwogaW50Ci1tYWluICgpCitt YWluICh2b2lkKQogewogcmV0dXJuIF9VbndpbmRfR2V0SVBJbmZvIChjb250ZXh0LCAmaXBf YmVmb3JlX2luc24pOwogICA7CkBAIC0xMjU1NCw3ICsxMjU1MCw3IEBAIGNhc2UgIiRob3N0 IiBpbgogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZv aWQpCiB7CiAKICNpZiAhZGVmaW5lZChfX1NTRTJfXykKQEAgLTEyNTgwLDcgKzEyNTc2LDcg QEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFp biAodm9pZCkKIHsKIGFzbSAoInNldHNzYnN5Iik7CiAgIDsKQEAgLTEyNjI2LDcgKzEyNjIy LDcgQEAgaWYgdGVzdCB4JG1heV9oYXZlX2NldCA9IHh5ZXM7IHRoZW4KIC8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIDA7 CiAgIDsKQEAgLTEyNzYzLDcgKzEyNzU5LDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmgu ICAqLwogaW50IGk7CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiBfX3N5bmNfYm9v bF9jb21wYXJlX2FuZF9zd2FwICgmaSwgaSwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAg IF9fc3luY19sb2NrX3Rlc3RfYW5kX3NldCAoJmksIDEpOwpAQCAtMTI4MDUsNyArMTI4MDEs NyBAQCBlbHNlCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiBpbnQgaTsKIGludAotbWFpbiAo KQorbWFpbiAodm9pZCkKIHsKIF9fYXRvbWljX2xvYWRfbiAoJmksIF9fQVRPTUlDX0FDUVVJ UkUpOwogCQkgICAgICAgX19hdG9taWNfc3RvcmVfbiAoJmksIDEsIF9fQVRPTUlDX1JFTEVB U0UpOwpAQCAtMTI4NDMsNyArMTI4MzksNyBAQCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiBpbnQgaTsKIGlu dAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIGludCBqOwogICA7CkBAIC0xMzUyMSw2ICsx MzUxNywyMSBAQCBmaQogCiBkb25lCiAKK2ZvciBhY19oZWFkZXIgaW4gdGxoZWxwMzIuaAor ZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAidGxoZWxw MzIuaCIgImFjX2N2X2hlYWRlcl90bGhlbHAzMl9oIiAiI2lmZGVmIEhBVkVfV0lORE9XU19I CisjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKyIKK2lmIHRlc3QgIngkYWNfY3Zf aGVhZGVyX3RsaGVscDMyX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9UTEhFTFAzMl9IIDEKK19BQ0VPRgorCitmaQorCitk b25lCisKIAogIyBDaGVjayBmb3IgdGhlIGZjbnRsIGZ1bmN0aW9uLgogaWYgdGVzdCAtbiAi JHt3aXRoX3RhcmdldF9zdWJkaXJ9IjsgdGhlbgpAQCAtMTM2MjUsNyArMTM2MzYsNyBAQCBl bHNlCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogCiBpbnQKLW1haW4gKCkKK21haW4gKHZv aWQpCiB7CiBpbnQgbWliMCA9IENUTF9LRVJOOyBpbnQgbWliMSA9IEtFUk5fUFJPQzsgaW50 IG1pYjIgPSBLRVJOX1BST0NfUEFUSE5BTUU7CiAgIDsKQEAgLTEzNjU5LDcgKzEzNjcwLDcg QEAgZWxzZQogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KIAogaW50Ci1tYWluICgpCittYWlu ICh2b2lkKQogewogaW50IG1pYjAgPSBDVExfS0VSTjsgaW50IG1pYjEgPSBLRVJOX1BST0Nf QVJHUzsgaW50IG1pYjIgPSBLRVJOX1BST0NfUEFUSE5BTUU7CiAgIDsKQEAgLTEzNzE1LDkg KzEzNzI2LDkgQEAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiCiAjZW5kaWYKLWNoYXIgY2xvY2tf Z2V0dGltZSAoKTsKK2NoYXIgY2xvY2tfZ2V0dGltZSAodm9pZCk7CiBpbnQKLW1haW4gKCkK K21haW4gKHZvaWQpCiB7CiByZXR1cm4gY2xvY2tfZ2V0dGltZSAoKTsKICAgOwpAQCAtMTM3 OTIsNyArMTM4MDMsNyBAQCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiBpbnQgaTsKIGludAotbWFpbiAoKQor bWFpbiAodm9pZCkKIHsKIHJldHVybiAwOwogICA7CkBAIC0xMzgzNSw5ICsxMzg0Niw5IEBA IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICNpZmRlZiBf X2NwbHVzcGx1cwogZXh0ZXJuICJDIgogI2VuZGlmCi1jaGFyIGNvbXByZXNzICgpOworY2hh ciBjb21wcmVzcyAodm9pZCk7CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1 cm4gY29tcHJlc3MgKCk7CiAgIDsKQEAgLTEzODgxLDcgKzEzODkyLDcgQEAgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmgu ICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMTM5MTks NyArMTM5MzAsNyBAQCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9p ZCkKIHsKIAogICA7CkBAIC0xMzk2Miw5ICsxMzk3Myw5IEBAIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJu ICJDIgogI2VuZGlmCi1jaGFyIFpTVERfY29tcHJlc3MgKCk7CitjaGFyIFpTVERfY29tcHJl c3MgKHZvaWQpOwogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIFpTVERf Y29tcHJlc3MgKCk7CiAgIDsKQEAgLTE0MDA4LDcgKzE0MDE5LDcgQEAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAq LwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMTQzMzgsOSAr MTQzNDksOSBAQCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIKICNlbmRpZgotY2hhciBsem1hX2F1 dG9fZGVjb2RlciAoKTsKK2NoYXIgbHptYV9hdXRvX2RlY29kZXIgKHZvaWQpOwogaW50Ci1t YWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIGx6bWFfYXV0b19kZWNvZGVyICgpOwog ICA7CkBAIC0xNDM4NSw3ICsxNDM5Niw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIDA7CiAgIDsKZGlm ZiAtLWdpdCBhL2xpYmJhY2t0cmFjZS9jb25maWd1cmUuYWMgYi9saWJiYWNrdHJhY2UvY29u ZmlndXJlLmFjCmluZGV4IDBmNjFmMmIyOGFiLi5iOWE2OTVhYjQwMiAxMDA2NDQKLS0tIGEv bGliYmFja3RyYWNlL2NvbmZpZ3VyZS5hYworKysgYi9saWJiYWNrdHJhY2UvY29uZmlndXJl LmFjCkBAIC0zODAsNiArMzgwLDEwIEBAIGlmIHRlc3QgIiRoYXZlX2xvYWRxdWVyeSIgPSAi eWVzIjsgdGhlbgogZmkKIAogQUNfQ0hFQ0tfSEVBREVSUyh3aW5kb3dzLmgpCitBQ19DSEVD S19IRUFERVJTKHRsaGVscDMyLmgsIFtdLCBbXSwKK1sjaWZkZWYgSEFWRV9XSU5ET1dTX0gK KyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZl0pCiAKICMgQ2hlY2sgZm9yIHRoZSBm Y250bCBmdW5jdGlvbi4KIGlmIHRlc3QgLW4gIiR7d2l0aF90YXJnZXRfc3ViZGlyfSI7IHRo ZW4KZGlmZiAtLWdpdCBhL2xpYmJhY2t0cmFjZS9wZWNvZmYuYyBiL2xpYmJhY2t0cmFjZS9w ZWNvZmYuYwppbmRleCA5ZTQzN2Q4MTBjNy4uZmFhMGJlMGI3MDAgMTAwNjQ0Ci0tLSBhL2xp YmJhY2t0cmFjZS9wZWNvZmYuYworKysgYi9saWJiYWNrdHJhY2UvcGVjb2ZmLmMKQEAgLTQ5 LDYgKzQ5LDE4IEBAIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAgKi8KICNlbmRpZgog CiAjaW5jbHVkZSA8d2luZG93cy5oPgorCisjaWZkZWYgSEFWRV9UTEhFTFAzMl9ICisjaW5j bHVkZSA8dGxoZWxwMzIuaD4KKworI2lmZGVmIFVOSUNPREUKKy8qIElmIFVOSUNPREUgaXMg ZGVmaW5lZCwgYWxsIHRoZSBzeW1ib2xzIGFyZSByZXBsYWNlZCBieSBhIG1hY3JvIHRvIHVz ZSB0aGUKKyAgIHdpZGUgdmFyaWFudC4gQnV0IHdlIG5lZWQgdGhlIGFuc2kgdmFyaWFudCwg c28gdW5kZWYgdGhlIG1hY3Jvcy4gKi8KKyN1bmRlZiBNT0RVTEVFTlRSWTMyCisjdW5kZWYg TW9kdWxlMzJGaXJzdAorI3VuZGVmIE1vZHVsZTMyTmV4dAorI2VuZGlmCisjZW5kaWYKICNl bmRpZgogCiAvKiBDb2ZmIGZpbGUgaGVhZGVyLiAgKi8KQEAgLTU5Miw3ICs2MDQsOCBAQCBj b2ZmX3N5bWluZm8gKHN0cnVjdCBiYWNrdHJhY2Vfc3RhdGUgKnN0YXRlLCB1aW50cHRyX3Qg YWRkciwKIHN0YXRpYyBpbnQKIGNvZmZfYWRkIChzdHJ1Y3QgYmFja3RyYWNlX3N0YXRlICpz dGF0ZSwgaW50IGRlc2NyaXB0b3IsCiAJICBiYWNrdHJhY2VfZXJyb3JfY2FsbGJhY2sgZXJy b3JfY2FsbGJhY2ssIHZvaWQgKmRhdGEsCi0JICBmaWxlbGluZSAqZmlsZWxpbmVfZm4sIGlu dCAqZm91bmRfc3ltLCBpbnQgKmZvdW5kX2R3YXJmKQorCSAgZmlsZWxpbmUgKmZpbGVsaW5l X2ZuLCBpbnQgKmZvdW5kX3N5bSwgaW50ICpmb3VuZF9kd2FyZiwKKwkgIHVpbnRwdHJfdCBt b2R1bGVfaGFuZGxlIEFUVFJJQlVURV9VTlVTRUQpCiB7CiAgIHN0cnVjdCBiYWNrdHJhY2Vf dmlldyBmaGRyX3ZpZXc7CiAgIG9mZl90IGZoZHJfb2ZmOwpAQCAtODcwLDEyICs4ODMsNyBA QCBjb2ZmX2FkZCAoc3RydWN0IGJhY2t0cmFjZV9zdGF0ZSAqc3RhdGUsIGludCBkZXNjcmlw dG9yLAogICAgIH0KIAogI2lmZGVmIEhBVkVfV0lORE9XU19ICi0gIHsKLSAgICB1aW50cHRy X3QgbW9kdWxlX2hhbmRsZTsKLQotICAgIG1vZHVsZV9oYW5kbGUgPSAodWludHB0cl90KSBH ZXRNb2R1bGVIYW5kbGUgKE5VTEwpOwotICAgIGJhc2VfYWRkcmVzcyA9IG1vZHVsZV9oYW5k bGUgLSBpbWFnZV9iYXNlOwotICB9CisgIGJhc2VfYWRkcmVzcyA9IG1vZHVsZV9oYW5kbGUg LSBpbWFnZV9iYXNlOwogI2VuZGlmCiAKICAgaWYgKCFiYWNrdHJhY2VfZHdhcmZfYWRkIChz dGF0ZSwgYmFzZV9hZGRyZXNzLCAmZHdhcmZfc2VjdGlvbnMsCkBAIC05MTcsMTIgKzkyNSw2 MiBAQCBiYWNrdHJhY2VfaW5pdGlhbGl6ZSAoc3RydWN0IGJhY2t0cmFjZV9zdGF0ZSAqc3Rh dGUsCiAgIGludCBmb3VuZF9zeW07CiAgIGludCBmb3VuZF9kd2FyZjsKICAgZmlsZWxpbmUg Y29mZl9maWxlbGluZV9mbjsKKyAgdWludHB0cl90IG1vZHVsZV9oYW5kbGUgPSAwOworCisj aWZkZWYgSEFWRV9UTEhFTFAzMl9ICisgIGZpbGVsaW5lIG1vZHVsZV9maWxlbGluZV9mbjsK KyAgaW50IG1vZHVsZV9mb3VuZF9zeW07CisKKyAgSEFORExFIHNuYXBzaG90OworI2VuZGlm CisKKyNpZmRlZiBIQVZFX1dJTkRPV1NfSAorICBtb2R1bGVfaGFuZGxlID0gKHVpbnRwdHJf dCkgR2V0TW9kdWxlSGFuZGxlIChOVUxMKTsKKyNlbmRpZgogCiAgIHJldCA9IGNvZmZfYWRk IChzdGF0ZSwgZGVzY3JpcHRvciwgZXJyb3JfY2FsbGJhY2ssIGRhdGEsCi0JCSAgJmNvZmZf ZmlsZWxpbmVfZm4sICZmb3VuZF9zeW0sICZmb3VuZF9kd2FyZik7CisJCSAgJmNvZmZfZmls ZWxpbmVfZm4sICZmb3VuZF9zeW0sICZmb3VuZF9kd2FyZiwgbW9kdWxlX2hhbmRsZSk7CiAg IGlmICghcmV0KQogICAgIHJldHVybiAwOwogCisjaWZkZWYgSEFWRV9UTEhFTFAzMl9ICisg IGRvCisgICAgeworICAgICAgc25hcHNob3QgPSBDcmVhdGVUb29saGVscDMyU25hcHNob3Qg KFRIMzJDU19TTkFQTU9EVUxFLCAwKTsKKyAgICB9CisgIHdoaWxlIChzbmFwc2hvdCA9PSBJ TlZBTElEX0hBTkRMRV9WQUxVRQorCSAmJiBHZXRMYXN0RXJyb3IgKCkgPT0gRVJST1JfQkFE X0xFTkdUSCk7CisKKyAgaWYgKHNuYXBzaG90ICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQor ICAgIHsKKyAgICAgIE1PRFVMRUVOVFJZMzIgZW50cnk7CisgICAgICBCT09MIG9rOworICAg ICAgZW50cnkuZHdTaXplID0gc2l6ZW9mKE1PRFVMRUVOVFJZMzIpOworCisgICAgICBmb3Ig KG9rID0gTW9kdWxlMzJGaXJzdCAoc25hcHNob3QsICZlbnRyeSk7IG9rOyBvayA9TW9kdWxl MzJOZXh0IChzbmFwc2hvdCwgJmVudHJ5KSkKKwl7CisJICBpZiAoc3RyY21wIChmaWxlbmFt ZSwgZW50cnkuc3pFeGVQYXRoKSA9PSAwKQorCSAgICBjb250aW51ZTsKKworCSAgbW9kdWxl X2hhbmRsZSA9ICh1aW50cHRyX3QpIGVudHJ5LmhNb2R1bGU7CisJICBpZiAobW9kdWxlX2hh bmRsZSA9PSAwKQorCSAgICBjb250aW51ZTsKKworCSAgZGVzY3JpcHRvciA9IGJhY2t0cmFj ZV9vcGVuIChlbnRyeS5zekV4ZVBhdGgsIGVycm9yX2NhbGxiYWNrLCBkYXRhLCBOVUxMKTsK KwkgIGlmIChkZXNjcmlwdG9yIDwgMCkKKwkgICAgY29udGludWU7CisKKwkgIGNvZmZfYWRk IChzdGF0ZSwgZGVzY3JpcHRvciwgZXJyb3JfY2FsbGJhY2ssIGRhdGEsCisJCSAgICAmbW9k dWxlX2ZpbGVsaW5lX2ZuLCAmbW9kdWxlX2ZvdW5kX3N5bSwgJmZvdW5kX2R3YXJmLAorCQkg ICAgbW9kdWxlX2hhbmRsZSk7CisJICBpZiAobW9kdWxlX2ZvdW5kX3N5bSkKKwkgICAgZm91 bmRfc3ltID0gMTsKKwl9CisKKyAgICAgIENsb3NlSGFuZGxlIChzbmFwc2hvdCk7CisgICAg fQorI2VuZGlmCisKICAgaWYgKCFzdGF0ZS0+dGhyZWFkZWQpCiAgICAgewogICAgICAgaWYg KGZvdW5kX3N5bSkKLS0gCjIuNDMuMAoK --------------UEIWDlEdWk2oHdBgrvc1hqcs--