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 19E4A386F805; Thu, 4 Jan 2024 22:33:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 19E4A386F805 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 19E4A386F805 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=1704407627; cv=none; b=Oqg1aGsRFRtO0ab1WwOqrRcr+jp1iumUTmgX53CTBmnB+SGQNb9GoPRk4ylPsroHYcVr/5npfNDWSxwVNxX/z0PsvomDoPM82msH9mfKSUc77qjp3Fbjdetn0mbhUKlCHiBXt+XJxu7DBBkkAse/ZarK2t6nj4hWVk7zj7cFW8w= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704407627; c=relaxed/simple; bh=PqefOPPKMjGU4y8aO9QHEyimWFmlDPmlJMjylYTokaE=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=DjPrvoLdzrhW+q1QECcpheN9VAW9agmO/A/aV85G2I8CN06w5YocxjDQZKmPVB1yM/p/2JqS/2u0n3oe64gucUEv8x2xoxRd/7S61OMTo+WHNorHdhjEAQsmL3iHFgn0IRPd2O95jQl/bvkfBHxITdwyC1FvzomHoTPEhjl9MAI= 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 99C737004AC; Thu, 4 Jan 2024 23:33:27 +0100 (CET) Content-Type: multipart/mixed; boundary="------------Ch0Y2SL0lY70dtSxfr1kZr0I" Message-ID: Date: Thu, 4 Jan 2024 23:33:28 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 5/4] libbacktrace: improve getting debug information for loaded dlls From: =?UTF-8?Q?Bj=C3=B6rn_Sch=C3=A4pers?= 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> Content-Language: de-DE, en-US In-Reply-To: <0c08e584-499f-473f-8699-a41c6a967536@hazardy.de> X-Spam-Status: No, score=-12.7 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. --------------Ch0Y2SL0lY70dtSxfr1kZr0I Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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? Kind regards, Björn. --------------Ch0Y2SL0lY70dtSxfr1kZr0I Content-Type: text/plain; charset=UTF-8; name="0004-libbacktrace-improve-getting-debug-information-for-l.patch" Content-Disposition: attachment; filename*0="0004-libbacktrace-improve-getting-debug-information-for-l.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3ODRlMDFmMWJhZjkyYzIzYzgxOWFlYjllNzcwMTA0MTIwMjM3MDBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qmo9QzM9QjZybj0yMFNjaD1DMz1B NHBlcnM/PSA8YmpvZXJuQGhhemFyZHkuZGU+CkRhdGU6IFRodSwgNCBKYW4gMjAyNCAyMjow MjowMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBsaWJiYWNrdHJhY2U6IGltcHJvdmUg Z2V0dGluZyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IKIGxvYWRlZCBkbGxzCgpFbnVtUHJvY2Vz c01vZHVsZXMgZG9lcyBub3QgYWx3YXlzIHJlc3VsdCBpbiBhbGwgbW9kdWxlcyBsb2FkZWQs CmVzcGVjaWFsbHkgdGhvc2UgdGhhdCBhcmUgbG9hZGVkIHdpdGggTG9hZExpYnJhcnkuCgps aWJiYWNrdHJhY2UvQ2hhbmdlbG9nOgoKCSogY29uZmlndXJlLmFjOiBDaGVja2VkIGZvciB0 bGhlbHAzMi5oCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmguaW46IFJl Z2VuZXJhdGUuCgkqIHBlY29mZi5jOiBJbmNsdWRlIDx0bGhlbHAzMi5oPiBpZiBhdmFpbGFi bGUuCgkgKGJhY2t0cmFjZV9pbml0aWFsaXplKTogVXNlIHRsaGVscDMyIGFwaSBmb3IgYSBz bmFwc2hvdCB0bwoJICAgICAgICAgICAgICAgICAgICAgICAgIGRldGVjdCBsb2FkZWQgbW9k dWxlcy4KLS0tCiBsaWJiYWNrdHJhY2UvY29uZmlnLmguaW4gIHwgICAzICsKIGxpYmJhY2t0 cmFjZS9jb25maWd1cmUgICAgfCAxODUgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0KIGxpYmJhY2t0cmFjZS9jb25maWd1cmUuYWMgfCAgIDQgKwogbGliYmFja3Ry YWNlL3BlY29mZi5jICAgICB8ICA2MiArKysrKysrKysrKystCiA0IGZpbGVzIGNoYW5nZWQs IDE2NCBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJi YWNrdHJhY2UvY29uZmlnLmguaW4gYi9saWJiYWNrdHJhY2UvY29uZmlnLmguaW4KaW5kZXgg ZWUyNjE2MzM1YzcuLjliOGFiODhhYjYzIDEwMDY0NAotLS0gYS9saWJiYWNrdHJhY2UvY29u ZmlnLmguaW4KKysrIGIvbGliYmFja3RyYWNlL2NvbmZpZy5oLmluCkBAIC0xMDEsNiArMTAx LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhl YWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKIAorLyogRGVmaW5lIHRv IDEgaWYgeW91IGhhdmUgdGhlIDx0bGhlbHAzMi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRl ZiBIQVZFX1RMSEVMUDMyX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1 bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9VTklTVERfSAogCmRpZmYg LS1naXQgYS9saWJiYWNrdHJhY2UvY29uZmlndXJlIGIvbGliYmFja3RyYWNlL2NvbmZpZ3Vy ZQppbmRleCA3YWRlOTY2YjU0ZC4uY2E1MmVlM2JhZmIgMTAwNzU1Ci0tLSBhL2xpYmJhY2t0 cmFjZS9jb25maWd1cmUKKysrIGIvbGliYmFja3RyYWNlL2NvbmZpZ3VyZQpAQCAtMTg2Niw3 ICsxODY2LDcgQEAgZWxzZQogI2RlZmluZSAkMiBpbm5vY3VvdXNfJDIKIAogLyogU3lzdGVt IGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90 b3R5cGVzLAotICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJDIgKCk7IGJlbG93 LgorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJDIgKHZvaWQpOyBiZWxvdy4K ICAgICBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRl ZmluZWQsIHNpbmNlCiAgICAgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRp bmcgY29tcGlsZXJzLiAgKi8KIApAQCAtMTg4NCw3ICsxODg0LDcgQEAgZWxzZQogI2lmZGVm IF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiCiAjZW5kaWYKLWNoYXIgJDIgKCk7CitjaGFyICQy ICh2b2lkKTsKIC8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rp b25zIHdoaWNoIGl0IGltcGxlbWVudHMKICAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZ Uy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAogICAgIHNvbWV0aGluZyBz dGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLwpA QCAtMTg5Myw3ICsxODkzLDcgQEAgY2hva2UgbWUKICNlbmRpZgogCiBpbnQKLW1haW4gKCkK K21haW4gKHZvaWQpCiB7CiByZXR1cm4gJDIgKCk7CiAgIDsKQEAgLTE5MzIsNyArMTkzMiw3 IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICQ0CiBpbnQKLW1haW4gKCkKK21h aW4gKHZvaWQpCiB7CiBpZiAoc2l6ZW9mICgkMikpCiAJIHJldHVybiAwOwpAQCAtMTk0NSw3 ICsxOTQ1LDcgQEAgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgog LyogZW5kIGNvbmZkZWZzLmguICAqLwogJDQKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkK IHsKIGlmIChzaXplb2YgKCgkMikpKQogCSAgICByZXR1cm4gMDsKQEAgLTE5ODMsNyArMTk4 Myw3IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8q IGVuZCBjb25mZGVmcy5oLiAgKi8KICQ0CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7 CiBzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpID49IDApXTsKIHRlc3Rf YXJyYXkgWzBdID0gMDsKQEAgLTIwMDAsNyArMjAwMCw3IEBAIGlmIGFjX2ZuX2NfdHJ5X2Nv bXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICQ0CiBp bnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiBzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEg LSAyICogISgoJDIpIDw9ICRhY19taWQpXTsKIHRlc3RfYXJyYXkgWzBdID0gMDsKQEAgLTIw MjcsNyArMjAyNyw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICQ0CiBpbnQK LW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiBzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAy ICogISgoJDIpIDwgMCldOwogdGVzdF9hcnJheSBbMF0gPSAwOwpAQCAtMjA0NCw3ICsyMDQ0 LDcgQEAgaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgogLyogZW5k IGNvbmZkZWZzLmguICAqLwogJDQKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIHN0 YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkMikgPj0gJGFjX21pZCldOwogdGVz dF9hcnJheSBbMF0gPSAwOwpAQCAtMjA3OSw3ICsyMDc5LDcgQEAgd2hpbGUgdGVzdCAieCRh Y19sbyIgIT0gIngkYWNfaGkiOyBkbwogLyogZW5kIGNvbmZkZWZzLmguICAqLwogJDQKIGlu dAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIHN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAt IDIgKiAhKCgkMikgPD0gJGFjX21pZCldOwogdGVzdF9hcnJheSBbMF0gPSAwOwpAQCAtMjEw NCwxMiArMjEwNCwxMiBAQCBlc2FjCiAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogJDQKLXN0YXRpYyBs b25nIGludCBsb25ndmFsICgpIHsgcmV0dXJuICQyOyB9Ci1zdGF0aWMgdW5zaWduZWQgbG9u ZyBpbnQgdWxvbmd2YWwgKCkgeyByZXR1cm4gJDI7IH0KK3N0YXRpYyBsb25nIGludCBsb25n dmFsICh2b2lkKSB7IHJldHVybiAkMjsgfQorc3RhdGljIHVuc2lnbmVkIGxvbmcgaW50IHVs b25ndmFsICh2b2lkKSB7IHJldHVybiAkMjsgfQogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5j bHVkZSA8c3RkbGliLmg+CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgRklM RSAqZiA9IGZvcGVuICgiY29uZnRlc3QudmFsIiwgInciKTsKQEAgLTIxNzAsNyArMjE3MCw3 IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICQ0CiBpbnQKLW1haW4gKCkKK21h aW4gKHZvaWQpCiB7CiAjaWZuZGVmICRhc19kZWNsX25hbWUKICNpZmRlZiBfX2NwbHVzcGx1 cwpAQCAtMzA3Myw3ICszMDczLDcgQEAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u ZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkK K21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMzIxMyw3ICszMjEzLDcgQEAgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmgu ICAqLwogI2luY2x1ZGUgPHN0ZGlvLmg+CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7 CiBGSUxFICpmID0gZm9wZW4gKCJjb25mdGVzdC5vdXQiLCAidyIpOwogIHJldHVybiBmZXJy b3IgKGYpIHx8IGZjbG9zZSAoZikgIT0gMDsKQEAgLTMyNzcsNyArMzI3Nyw3IEBAIGVsc2UK IC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQog ewogCiAgIDsKQEAgLTMzMjgsNyArMzMyOCw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5o LiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogI2lmbmRlZiBfX0dOVUNf XwogICAgICAgIGNob2tlIG1lCkBAIC0zMzY5LDcgKzMzNjksNyBAQCBlbHNlCiAvKiBlbmQg Y29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7 CkBAIC0zMzg0LDcgKzMzODQsNyBAQCBlbHNlCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAK IGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7CkBAIC0zNDAwLDcgKzM0MDAs NyBAQCBlbHNlCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFp biAodm9pZCkKIHsKIAogICA7CkBAIC0zNDQ5LDkgKzM0NDksNyBAQCBzdHJ1Y3Qgc3RhdDsK IC8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUu NydzIHNyYy9jb25mLnNoLiAgKi8KIHN0cnVjdCBidWYgeyBpbnQgeDsgfTsKIEZJTEUgKiAo KnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCk7Ci1zdGF0aWMg Y2hhciAqZSAocCwgaSkKLSAgICAgY2hhciAqKnA7Ci0gICAgIGludCBpOworc3RhdGljIGNo YXIgKmUgKGNoYXIgKipwLCBpbnQgaSkKIHsKICAgcmV0dXJuIHBbaV07CiB9CkBAIC0zNDg2 LDcgKzM0ODQsNyBAQCBpbnQgcGFpcm5hbWVzIChpbnQsIGNoYXIgKiosIEZJTEUgKigqKShz dHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCksIGludCwgaQogaW50IGFyZ2M7CiBj aGFyICoqYXJndjsKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIHJldHVybiBmIChl LCBhcmd2LCAwKSAhPSBhcmd2WzBdICB8fCAgZiAoZSwgYXJndiwgMSkgIT0gYXJndlsxXTsK ICAgOwpAQCAtMzU0NCw3ICszNTQyLDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmguICAq LwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMzg3MSw3ICsz ODY5LDcgQEAgZWxzZQogI2luY2x1ZGUgPGZsb2F0Lmg+CiAKIGludAotbWFpbiAoKQorbWFp biAodm9pZCkKIHsKIAogICA7CkBAIC0zOTQxLDcgKzM5MzksNyBAQCBlbHNlCiAKICNkZWZp bmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCiBpbnQKLW1h aW4gKCkKK21haW4gKHZvaWQpCiB7CiAgIGludCBpOwogICBmb3IgKGkgPSAwOyBpIDwgMjU2 OyBpKyspCkBAIC00MDIwLDcgKzQwMTgsNyBAQCBlbHNlCiAjICAgICAgICAgZGVmaW5lIF9f RVhURU5TSU9OU19fIDEKICAgICAgICAgICAkYWNfaW5jbHVkZXNfZGVmYXVsdAogaW50Ci1t YWluICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTUwMDIsNyArNTAwMCw3IEBAIGVs c2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2b2lk KQogewogI2lmbmRlZiBfX0dOVUNfXwogICAgICAgIGNob2tlIG1lCkBAIC01MDQzLDcgKzUw NDEsNyBAQCBlbHNlCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQor bWFpbiAodm9pZCkKIHsKIAogICA7CkBAIC01MDU4LDcgKzUwNTYsNyBAQCBlbHNlCiAvKiBl bmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAog ICA7CkBAIC01MDc0LDcgKzUwNzIsNyBAQCBlbHNlCiAvKiBlbmQgY29uZmRlZnMuaC4gICov CiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7CkBAIC01MTIzLDkgKzUx MjEsNyBAQCBzdHJ1Y3Qgc3RhdDsKIC8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBh cmUgc3RvbGVuIGZyb20gUkNTIDUuNydzIHNyYy9jb25mLnNoLiAgKi8KIHN0cnVjdCBidWYg eyBpbnQgeDsgfTsKIEZJTEUgKiAoKnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBz dGF0ICosIGludCk7Ci1zdGF0aWMgY2hhciAqZSAocCwgaSkKLSAgICAgY2hhciAqKnA7Ci0g ICAgIGludCBpOworc3RhdGljIGNoYXIgKmUgKGNoYXIgKipwLCBpbnQgaSkKIHsKICAgcmV0 dXJuIHBbaV07CiB9CkBAIC01MTYwLDcgKzUxNTYsNyBAQCBpbnQgcGFpcm5hbWVzIChpbnQs IGNoYXIgKiosIEZJTEUgKigqKShzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCks IGludCwgaQogaW50IGFyZ2M7CiBjaGFyICoqYXJndjsKIGludAotbWFpbiAoKQorbWFpbiAo dm9pZCkKIHsKIHJldHVybiBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBdICB8fCAgZiAoZSwg YXJndiwgMSkgIT0gYXJndlsxXTsKICAgOwpAQCAtNTIxOCw3ICs1MjE0LDcgQEAgZWxzZQog LyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7 CiAKICAgOwpAQCAtNzQwOCw3ICs3NDA0LDcgQEAgYWNfY29tcGlsZXJfZ251PSRhY19jdl9j X2NvbXBpbGVyX2dudQogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkK K21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtNzk5NCw3ICs3OTkwLDcgQEAgZWxzZQogLyog ZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAK ICAgOwpAQCAtOTYzMiw3ICs5NjI4LDcgQEAgX0xUX0VPRgogLyogZW5kIGNvbmZkZWZzLmgu ICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtOTY3Miw3 ICs5NjY4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0 aD0iL3Vzci9saWI6L2xpYiI7IGZpCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAot bWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7CkBAIC0xMDk0Nyw3ICsxMDk0Myw3IEBA IGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWluICgpCittYWluICh2 b2lkKQogewogCiAgIDsKQEAgLTExMzg4LDkgKzExMzg0LDkgQEAgY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRl cm4gIkMiCiAjZW5kaWYKLWNoYXIgZGxvcGVuICgpOworY2hhciBkbG9wZW4gKHZvaWQpOwog aW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIGRsb3BlbiAoKTsKICAgOwpA QCAtMTE0NDEsOSArMTE0MzcsOSBAQCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m dGVzdC4kYWNfZXh0CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIKICNlbmRpZgot Y2hhciBzaGxfbG9hZCAoKTsKK2NoYXIgc2hsX2xvYWQgKHZvaWQpOwogaW50Ci1tYWluICgp CittYWluICh2b2lkKQogewogcmV0dXJuIHNobF9sb2FkICgpOwogICA7CkBAIC0xMTQ4NCw5 ICsxMTQ4MCw5IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIgogI2VuZGlmCi1jaGFyIGRsb3Bl biAoKTsKK2NoYXIgZGxvcGVuICh2b2lkKTsKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkK IHsKIHJldHVybiBkbG9wZW4gKCk7CiAgIDsKQEAgLTExNTIzLDkgKzExNTE5LDkgQEAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogI2lmZGVmIF9fY3Bs dXNwbHVzCiBleHRlcm4gIkMiCiAjZW5kaWYKLWNoYXIgZGxvcGVuICgpOworY2hhciBkbG9w ZW4gKHZvaWQpOwogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIGRsb3Bl biAoKTsKICAgOwpAQCAtMTE1NjIsOSArMTE1NTgsOSBAQCBjYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAi QyIKICNlbmRpZgotY2hhciBkbGRfbGluayAoKTsKK2NoYXIgZGxkX2xpbmsgKHZvaWQpOwog aW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIGRsZF9saW5rICgpOwogICA7 CkBAIC0xMTYzMiw3ICsxMTYyOCw3IEBAIGVsc2UKICAgbHRfZGx1bmtub3duPTA7IGx0X2Rs bm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgogICBsdF9zdGF0dXM9JGx0X2RsdW5r bm93bgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotI2xpbmUgMTE2MzUg ImNvbmZpZ3VyZSIKKyNsaW5lIDExNjMxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRl ZnMuaCIKIAogI2lmIEhBVkVfRExGQ05fSApAQCAtMTE3MzgsNyArMTE3MzQsNyBAQCBlbHNl CiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3Jl PTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4 dCA8PF9MVF9FT0YKLSNsaW5lIDExNzQxICJjb25maWd1cmUiCisjbGluZSAxMTczNyAiY29u ZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAg LTEyMDE2LDcgKzEyMDEyLDcgQEAgZWxzZQogCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAy MTQ3NDgzNjQ3ID09IDEpCiAJCSAgICAgID8gMSA6IC0xXTsKIGludAotbWFpbiAoKQorbWFp biAodm9pZCkKIHsKIAogICA7CkBAIC0xMjA2Miw3ICsxMjA1OCw3IEBAIGVsc2UKIAkJICAg ICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQogCQkgICAgICA/IDEgOiAt MV07CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMTIwODYsNyAr MTIwODIsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0 IGNvbmZ0ZXN0LiRhY19leHQKIAkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0 NyA9PSAxKQogCQkgICAgICA/IDEgOiAtMV07CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQp CiB7CiAKICAgOwpAQCAtMTIxMzEsNyArMTIxMjcsNyBAQCBlbHNlCiAJCSAgICAgICAmJiBM QVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKIAkJICAgICAgPyAxIDogLTFdOwogaW50 Ci1tYWluICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTEyMTU1LDcgKzEyMTUxLDcg QEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC4kYWNfZXh0CiAJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkK IAkJICAgICAgPyAxIDogLTFdOwogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogCiAg IDsKQEAgLTEyMjI4LDcgKzEyMjI0LDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmguICAq Lwogc3RhdGljIGludCBmKCkgeyByZXR1cm4gMDsgfQogaW50Ci1tYWluICgpCittYWluICh2 b2lkKQogewogcmV0dXJuIGYoKTsKICAgOwpAQCAtMTIyNTksNyArMTIyNTUsNyBAQCBlbHNl CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkK IHsKIHJldHVybiAwOwogICA7CkBAIC0xMjMxMiw3ICsxMjMwOCw3IEBAIGNhc2UgIiRob3N0 IiBpbgogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZv aWQpCiB7CiAKICNpZiAhZGVmaW5lZChfX1NTRTJfXykKQEAgLTEyMzM5LDcgKzEyMzM1LDcg QEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFp biAodm9pZCkKIHsKIGFzbSAoInNldHNzYnN5Iik7CiAgIDsKQEAgLTEyNDAxLDcgKzEyMzk3 LDcgQEAgZWxzZQogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21h aW4gKHZvaWQpCiB7CiAKICAgOwpAQCAtMTI0OTAsNyArMTI0ODYsNyBAQCAkYXNfZWNob19u ICJjaGVja2luZyBmb3IgX1Vud2luZF9HZXRJUEluZm8uLi4gIiA+JjY7IH0KIAlzdHJ1Y3Qg X1Vud2luZF9Db250ZXh0ICpjb250ZXh0OwogCWludCBpcF9iZWZvcmVfaW5zbiA9IDA7CiBp bnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1cm4gX1Vud2luZF9HZXRJUEluZm8g KGNvbnRleHQsICZpcF9iZWZvcmVfaW5zbik7CiAgIDsKQEAgLTEyNTU0LDcgKzEyNTUwLDcg QEAgY2FzZSAiJGhvc3QiIGluCiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFp biAoKQorbWFpbiAodm9pZCkKIHsKIAogI2lmICFkZWZpbmVkKF9fU1NFMl9fKQpAQCAtMTI1 ODAsNyArMTI1NzYsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50 Ci1tYWluICgpCittYWluICh2b2lkKQogewogYXNtICgic2V0c3Nic3kiKTsKICAgOwpAQCAt MTI2MjYsNyArMTI2MjIsNyBAQCBpZiB0ZXN0IHgkbWF5X2hhdmVfY2V0ID0geHllczsgdGhl bgogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQp CiB7CiByZXR1cm4gMDsKICAgOwpAQCAtMTI3NjMsNyArMTI3NTksNyBAQCBlbHNlCiAvKiBl bmQgY29uZmRlZnMuaC4gICovCiBpbnQgaTsKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkK IHsKIF9fc3luY19ib29sX2NvbXBhcmVfYW5kX3N3YXAgKCZpLCBpLCBpKTsKICAgICAgICAg ICAgICAgICAgICAgICAgX19zeW5jX2xvY2tfdGVzdF9hbmRfc2V0ICgmaSwgMSk7CkBAIC0x MjgwNSw3ICsxMjgwMSw3IEBAIGVsc2UKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGludCBp OwogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogX19hdG9taWNfbG9hZF9uICgmaSwg X19BVE9NSUNfQUNRVUlSRSk7CiAJCSAgICAgICBfX2F0b21pY19zdG9yZV9uICgmaSwgMSwg X19BVE9NSUNfUkVMRUFTRSk7CkBAIC0xMjg0Myw3ICsxMjgzOSw3IEBAIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KIGludCBpOwogaW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogaW50IGo7CiAgIDsK QEAgLTEzNTIxLDYgKzEzNTE3LDIxIEBAIGZpCiAKIGRvbmUKIAorZm9yIGFjX2hlYWRlciBp biB0bGhlbHAzMi5oCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRM SU5FTk8iICJ0bGhlbHAzMi5oIiAiYWNfY3ZfaGVhZGVyX3RsaGVscDMyX2giICIjaWZkZWYg SEFWRV9XSU5ET1dTX0gKKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorIgoraWYg dGVzdCAieCRhY19jdl9oZWFkZXJfdGxoZWxwMzJfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0 ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1RMSEVMUDMyX0ggMQorX0FD RU9GCisKK2ZpCisKK2RvbmUKKwogCiAjIENoZWNrIGZvciB0aGUgZmNudGwgZnVuY3Rpb24u CiBpZiB0ZXN0IC1uICIke3dpdGhfdGFyZ2V0X3N1YmRpcn0iOyB0aGVuCkBAIC0xMzYyNSw3 ICsxMzYzNiw3IEBAIGVsc2UKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAKIGludAotbWFp biAoKQorbWFpbiAodm9pZCkKIHsKIGludCBtaWIwID0gQ1RMX0tFUk47IGludCBtaWIxID0g S0VSTl9QUk9DOyBpbnQgbWliMiA9IEtFUk5fUFJPQ19QQVRITkFNRTsKICAgOwpAQCAtMTM2 NTksNyArMTM2NzAsNyBAQCBlbHNlCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogCiBpbnQK LW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiBpbnQgbWliMCA9IENUTF9LRVJOOyBpbnQgbWli MSA9IEtFUk5fUFJPQ19BUkdTOyBpbnQgbWliMiA9IEtFUk5fUFJPQ19QQVRITkFNRTsKICAg OwpAQCAtMTM3MTUsOSArMTM3MjYsOSBAQCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j b25mdGVzdC4kYWNfZXh0CiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIKICNlbmRp ZgotY2hhciBjbG9ja19nZXR0aW1lICgpOworY2hhciBjbG9ja19nZXR0aW1lICh2b2lkKTsK IGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIHJldHVybiBjbG9ja19nZXR0aW1lICgp OwogICA7CkBAIC0xMzc5Miw3ICsxMzgwMyw3IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGludCBpOwog aW50Ci1tYWluICgpCittYWluICh2b2lkKQogewogcmV0dXJuIDA7CiAgIDsKQEAgLTEzODM1 LDkgKzEzODQ2LDkgQEAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj X2V4dAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiCiAjZW5kaWYKLWNoYXIgY29t cHJlc3MgKCk7CitjaGFyIGNvbXByZXNzICh2b2lkKTsKIGludAotbWFpbiAoKQorbWFpbiAo dm9pZCkKIHsKIHJldHVybiBjb21wcmVzcyAoKTsKICAgOwpAQCAtMTM4ODEsNyArMTM4OTIs NyBAQCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBl bmQgY29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAog ICA7CkBAIC0xMzkxOSw3ICsxMzkzMCw3IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50Ci1tYWlu ICgpCittYWluICh2b2lkKQogewogCiAgIDsKQEAgLTEzOTYyLDkgKzEzOTczLDkgQEAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogI2lmZGVmIF9fY3Bs dXNwbHVzCiBleHRlcm4gIkMiCiAjZW5kaWYKLWNoYXIgWlNURF9jb21wcmVzcyAoKTsKK2No YXIgWlNURF9jb21wcmVzcyAodm9pZCk7CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7 CiByZXR1cm4gWlNURF9jb21wcmVzcyAoKTsKICAgOwpAQCAtMTQwMDgsNyArMTQwMTksNyBA QCBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQg Y29uZmRlZnMuaC4gICovCiAKIGludAotbWFpbiAoKQorbWFpbiAodm9pZCkKIHsKIAogICA7 CkBAIC0xNDMzOCw5ICsxNDM0OSw5IEBAIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIgogI2VuZGlm Ci1jaGFyIGx6bWFfYXV0b19kZWNvZGVyICgpOworY2hhciBsem1hX2F1dG9fZGVjb2RlciAo dm9pZCk7CiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1cm4gbHptYV9hdXRv X2RlY29kZXIgKCk7CiAgIDsKQEAgLTE0Mzg1LDcgKzE0Mzk2LDcgQEAgZWxzZQogLyogZW5k IGNvbmZkZWZzLmguICAqLwogCiBpbnQKLW1haW4gKCkKK21haW4gKHZvaWQpCiB7CiByZXR1 cm4gMDsKICAgOwpkaWZmIC0tZ2l0IGEvbGliYmFja3RyYWNlL2NvbmZpZ3VyZS5hYyBiL2xp YmJhY2t0cmFjZS9jb25maWd1cmUuYWMKaW5kZXggMGY2MWYyYjI4YWIuLmI5YTY5NWFiNDAy IDEwMDY0NAotLS0gYS9saWJiYWNrdHJhY2UvY29uZmlndXJlLmFjCisrKyBiL2xpYmJhY2t0 cmFjZS9jb25maWd1cmUuYWMKQEAgLTM4MCw2ICszODAsMTAgQEAgaWYgdGVzdCAiJGhhdmVf bG9hZHF1ZXJ5IiA9ICJ5ZXMiOyB0aGVuCiBmaQogCiBBQ19DSEVDS19IRUFERVJTKHdpbmRv d3MuaCkKK0FDX0NIRUNLX0hFQURFUlModGxoZWxwMzIuaCwgW10sIFtdLAorWyNpZmRlZiBI QVZFX1dJTkRPV1NfSAorIyAgaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmXSkKIAogIyBD aGVjayBmb3IgdGhlIGZjbnRsIGZ1bmN0aW9uLgogaWYgdGVzdCAtbiAiJHt3aXRoX3Rhcmdl dF9zdWJkaXJ9IjsgdGhlbgpkaWZmIC0tZ2l0IGEvbGliYmFja3RyYWNlL3BlY29mZi5jIGIv bGliYmFja3RyYWNlL3BlY29mZi5jCmluZGV4IDY0Nzg3YTE4NDExLi42NDdiYWEzOTY0MCAx MDA2NDQKLS0tIGEvbGliYmFja3RyYWNlL3BlY29mZi5jCisrKyBiL2xpYmJhY2t0cmFjZS9w ZWNvZmYuYwpAQCAtNTAsNiArNTAsMTggQEAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu ICAqLwogCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHBzYXBpLmg+CisKKyNp ZmRlZiBIQVZFX1RMSEVMUDMyX0gKKyNpbmNsdWRlIDx0bGhlbHAzMi5oPgorCisjaWZkZWYg VU5JQ09ERQorLyogSWYgVU5JQ09ERSBpcyBkZWZpbmVkLCBhbGwgdGhlIHN5bWJvbHMgYXJl IHJlcGxhY2VkIGJ5IGEgbWFjcm8gdG8gdXNlIHRoZQorICAgd2lkZSB2YXJpYW50LiBCdXQg d2UgbmVlZCB0aGUgYW5zaSB2YXJpYW50LCBzbyB1bmRlZiB0aGUgbWFjcm9zLiAqLworI3Vu ZGVmIE1PRFVMRUVOVFJZMzIKKyN1bmRlZiBNb2R1bGUzMkZpcnN0CisjdW5kZWYgTW9kdWxl MzJOZXh0CisjZW5kaWYKKyNlbmRpZgogI2VuZGlmCiAKIC8qIENvZmYgZmlsZSBoZWFkZXIu ICAqLwpAQCAtOTAwLDcgKzkxMiw3IEBAIGNvZmZfYWRkIChzdHJ1Y3QgYmFja3RyYWNlX3N0 YXRlICpzdGF0ZSwgaW50IGRlc2NyaXB0b3IsCiAgIHJldHVybiAwOwogfQogCi0jaWZkZWYg SEFWRV9XSU5ET1dTX0gKKyNpZiBkZWZpbmVkKEhBVkVfV0lORE9XU19IKSAmJiAhZGVmaW5l ZChIQVZFX1RMSEVMUDMyX0gpCiBzdGF0aWMgdm9pZAogZnJlZV9tb2R1bGVzIChzdHJ1Y3Qg YmFja3RyYWNlX3N0YXRlICpzdGF0ZSwKIAkgICAgICBiYWNrdHJhY2VfZXJyb3JfY2FsbGJh Y2sgZXJyb3JfY2FsbGJhY2ssIHZvaWQgKmRhdGEsCkBAIC05NjQsMTMgKzk3NiwxOSBAQCBi YWNrdHJhY2VfaW5pdGlhbGl6ZSAoc3RydWN0IGJhY2t0cmFjZV9zdGF0ZSAqc3RhdGUsCiAg IHVpbnRwdHJfdCBtb2R1bGVfaGFuZGxlID0gMDsKIAogI2lmZGVmIEhBVkVfV0lORE9XU19I CisgIGZpbGVsaW5lIG1vZHVsZV9maWxlbGluZV9mbjsKKyAgaW50IG1vZHVsZV9mb3VuZF9z eW07CisKKyNpZmRlZiBIQVZFX1RMSEVMUDMyX0gKKyAgSEFORExFIHNuYXBzaG90OworI2Vs c2UKICAgRFdPUkQgaTsKICAgRFdPUkQgbW9kdWxlX2NvdW50ID0gMTAwOwogICBEV09SRCBi eXRlc19hbGxvY2F0ZWRfZm9yX21vZHVsZXMgPSAwOwogICBITU9EVUxFICptb2R1bGVzID0g TlVMTDsKICAgY2hhciBtb2R1bGVfbmFtZVtNQVhfUEFUSF07Ci0gIGludCBtb2R1bGVfZm91 bmRfc3ltOwotICBmaWxlbGluZSBtb2R1bGVfZmlsZWxpbmVfZm47CisKKyNlbmRpZgogCiAg IG1vZHVsZV9oYW5kbGUgPSAodWludHB0cl90KSBHZXRNb2R1bGVIYW5kbGUgKE5VTEwpOwog I2VuZGlmCkBAIC05ODEsNiArOTk5LDQzIEBAIGJhY2t0cmFjZV9pbml0aWFsaXplIChzdHJ1 Y3QgYmFja3RyYWNlX3N0YXRlICpzdGF0ZSwKICAgICByZXR1cm4gMDsKIAogI2lmZGVmIEhB VkVfV0lORE9XU19ICisjaWZkZWYgSEFWRV9UTEhFTFAzMl9ICisgIGRvCisgICAgeworICAg ICAgc25hcHNob3QgPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QgKFRIMzJDU19TTkFQTU9E VUxFLCAwKTsKKyAgICB9CisgIHdoaWxlIChzbmFwc2hvdCA9PSBJTlZBTElEX0hBTkRMRV9W QUxVRQorCSAmJiBHZXRMYXN0RXJyb3IgKCkgPT0gRVJST1JfQkFEX0xFTkdUSCk7CisKKyAg aWYgKHNuYXBzaG90ICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgIHsKKyAgICAgIE1P RFVMRUVOVFJZMzIgZW50cnk7CisgICAgICBCT09MIG9rOworICAgICAgZW50cnkuZHdTaXpl ID0gc2l6ZW9mKE1PRFVMRUVOVFJZMzIpOworCisgICAgICBmb3IgKG9rID0gTW9kdWxlMzJG aXJzdCAoc25hcHNob3QsICZlbnRyeSk7IG9rOyBvayA9TW9kdWxlMzJOZXh0IChzbmFwc2hv dCwgJmVudHJ5KSkKKwl7CisJICBpZiAoc3RyY21wIChmaWxlbmFtZSwgZW50cnkuc3pFeGVQ YXRoKSA9PSAwKQorCSAgICBjb250aW51ZTsKKworCSAgbW9kdWxlX2hhbmRsZSA9ICh1aW50 cHRyX3QpIGVudHJ5LmhNb2R1bGU7CisJICBpZiAobW9kdWxlX2hhbmRsZSA9PSAwKQorCSAg ICBjb250aW51ZTsKKworCSAgZGVzY3JpcHRvciA9IGJhY2t0cmFjZV9vcGVuIChlbnRyeS5z ekV4ZVBhdGgsIGVycm9yX2NhbGxiYWNrLCBkYXRhLCBOVUxMKTsKKwkgIGlmIChkZXNjcmlw dG9yIDwgMCkKKwkgICAgY29udGludWU7CisKKwkgIGNvZmZfYWRkIChzdGF0ZSwgZGVzY3Jp cHRvciwgZXJyb3JfY2FsbGJhY2ssIGRhdGEsCisJCSAgICAmbW9kdWxlX2ZpbGVsaW5lX2Zu LCAmbW9kdWxlX2ZvdW5kX3N5bSwgJmZvdW5kX2R3YXJmLAorCQkgICAgbW9kdWxlX2hhbmRs ZSk7CisJICBpZiAobW9kdWxlX2ZvdW5kX3N5bSkKKwkgICAgZm91bmRfc3ltID0gMTsKKwl9 CisKKyAgICAgIENsb3NlSGFuZGxlIChzbmFwc2hvdCk7CisgICAgfQorI2Vsc2UKICAgZ2V0 X2FsbF9tb2R1bGVzIChzdGF0ZSwgZXJyb3JfY2FsbGJhY2ssIGRhdGEsICZtb2R1bGVzLCAK IAkJICAgJm1vZHVsZV9jb3VudCwgJmJ5dGVzX2FsbG9jYXRlZF9mb3JfbW9kdWxlcyk7CiAK QEAgLTEwMDksNiArMTA2NCw3IEBAIGJhY2t0cmFjZV9pbml0aWFsaXplIChzdHJ1Y3QgYmFj a3RyYWNlX3N0YXRlICpzdGF0ZSwKIAogICBpZiAobW9kdWxlcykKICAgICBmcmVlX21vZHVs ZXMgKHN0YXRlLCBlcnJvcl9jYWxsYmFjaywgZGF0YSwgJm1vZHVsZXMsIGJ5dGVzX2FsbG9j YXRlZF9mb3JfbW9kdWxlcyk7CisjZW5kaWYKICNlbmRpZgogCiAgIGlmICghc3RhdGUtPnRo cmVhZGVkKQotLSAKMi40Mi4xCgo= --------------Ch0Y2SL0lY70dtSxfr1kZr0I--