From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.kundenserver.de (mout.kundenserver.de [217.72.192.75]) by sourceware.org (Postfix) with ESMTPS id 868533858C27 for ; Wed, 27 Oct 2021 09:19:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 868533858C27 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=towo.net Authentication-Results: sourceware.org; spf=none smtp.mailfrom=towo.net Received: from [192.168.178.51] ([91.65.221.56]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MFsd7-1mReTC1qUp-00HQuA for ; Wed, 27 Oct 2021 11:19:01 +0200 To: cygwin@cygwin.com From: Thomas Wolff Subject: gcc 11 weird bug Message-ID: <248361fa-f16d-cebb-eefe-be78e09f4c10@towo.net> Date: Wed, 27 Oct 2021 11:19:00 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------30D4158897F42C92C2A22C2F" X-Provags-ID: V03:K1:St2fALADZ3fyTBQBaFpP8mNaeDerEJICaf0R8/x134T8syEoyza 6wFmGWyyhkqBFhEP1hUWQmEN1KTGUhEzsuhkIixWvZKW7PDZQKCOnOG82yzyRjD0w7j+fyA ZZijwl6p0m/T0IO3S5zw0EPkU0gGHrHZ+0gtFEapc2NwiKORGmY55OmlIHpS0kHF2+4uD1P gzEMAMmbcm34RHKX3Y7xQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:rFv/pMOxhzY=:0BC8pYuTfnoen1i773+wlD UNhjMf0BRvX3TCbPsG5wnzqalgKqpO4QIr1Zc36buTE7KS4b0+/4rpaMj6weIIJEiO+JSciw8 T0CGZsEodoXhUz0XMtvFgP7OQEWmnxCuaVSR7LDR5Qjyd2By2lHXQxnml9sYE9ofPZ6+CGaHc 1UlLT/+AEPgN2vzkf0ngigQzoChHgoYk0WvdfQMF/t8Kk7dNx16bzq2O6pqeht8lRV3ZO1fZm aVa88zTVDRpiuloNH/bPhAU7n8atsb2xKpfsmfr3xs+7XQ/w8UwYpDKlUO4vi2WS3gEATomZW sq6t/PGwbWAPBGCB8BrvWVdSmgAivmVMp9YMN8MaD5kz14Yhg7CruairTRnQ42EHP/ctTh71G zTXmaXWmhduHdHfJMpgL3FoBguoo5uE93gWuEMSLIkMLT4qtcKWRfos13FoTWvzALVxX51GOF PXM8QJPRurgQJbuQyS+UDly85ydKzIPC2gPJlUFb2Eg35OtHcZW8TPMP5AzIgHZWeTFcvTXGi laTKJZxpGNoT0LqCz7VkOR+004TjzfjSFJDrEKVW6r/iRxh1jnCrS2sTDGaAzNmZn9rNGbcdF aZKUWwkQObBhLybMoA7O/KK6IZaYy8tR+MFUmsBZqNmrWOKqtKgYCz3Hu5zqtw0h9PsJo74ZM FX13mMiF5uEKhH9WSgdVGzFTH26OF6d7ng/HMBvbxMwBNH2MTVqq89L38TEU00ueshIg= X-Spam-Status: No, score=1.1 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.4 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Oct 2021 09:19:05 -0000 This is a multi-part message in MIME format. --------------30D4158897F42C92C2A22C2F Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit I noticed that mintty did not compile anymore after upgrade to gcc 11, but only on cygwin 32-bit. I tried to minimize the test case as much as possible without having the bug vanish, to the attached standalone file. Compile this with cc -O2 -Wall -Werror m0.c and it gives a false positive warning about possible uninitialized data usage. While data flow analysis is not perfect, it is weird that this used to happen on 32 bit but not on 64 bit. Meanwhile, after updating some other packages (not sure which), but still the same gcc version, the report on the test case also happens on 64 bit, while the original, unstripped file, as part of mintty, still works without error on 64 bit, which is even weirder. I have not yet had the opportunity to test this on Linux, sorry, so I'm reporting it here. Thomas --------------30D4158897F42C92C2A22C2F Content-Type: text/plain; charset=UTF-8; name="m0.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="m0.c" I2luY2x1ZGUgPHN0ZGJvb2wuaD4KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB3Y2hhcjsgICAg Ly8gVVRGLTE2CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKI2RlZmluZSBsZW5ndGhv ZihhcnJheSkgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKihhcnJheSkpKQoKI2RlZmluZSB3 aGVuIGJyZWFrOyBjYXNlCiNkZWZpbmUgb3IgOiBjYXNlCiNkZWZpbmUgb3RoZXJ3aXNlIGJy ZWFrOyBkZWZhdWx0Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1Y3NjaGFyOwoKdHlwZWRlZiBz dHJ1Y3Qgewp9IGJpZGlfY2hhcjsKCi8qIGJpZGkgY2xhc3NlcyAoVW5pY29kZTogUHJvcGVy dHlWYWx1ZUFsaWFzZXMudHh0KSAqLwplbnVtIHsKICBMLCBMUkUsIExSTywgUiwgQUwsIFJM RSwgUkxPLCBQREYsIEVOLCBFUywgRVQsIEFOLCBDUywgTlNNLCBCTiwgQiwgUywgV1MsIE9O LAogIExSSSwgUkxJLCBGU0ksIFBESQp9OwoKI2RlZmluZSBsZWFzdEdyZWF0ZXJPZGQoeCkg KCAoKHgpKzEpIHwgMSApCiNkZWZpbmUgbGVhc3RHcmVhdGVyRXZlbih4KSAoICgoeCkrMikg Jn4gMSApCgoKc3RhdGljIGJvb2wKaXNfTkkodWNoYXIgYmMpCnsKICByZXR1cm4gMSAmICgx IDw8IChiYykpOwp9CgoKLyoKICogVGhlIE1haW4gQmlkaSBGdW5jdGlvbiwgYW5kIHRoZSBv bmx5IGZ1bmN0aW9uIHRoYXQgc2hvdWxkCiAqIGJlIHVzZWQgYnkgdGhlIG91dHNpZGUgd29y bGQuCiAqCiAqIGxpbmU6IGEgYnVmZmVyIG9mIHNpemUgY291bnQgY29udGFpbmluZyB0ZXh0 IHRvIGFwcGx5CiAqIHRoZSBCaWRpcmVjdGlvbmFsIGFsZ29yaXRobSB0by4KICovCmludApk b19iaWRpKGJvb2wgYXV0b2RpciwgaW50IHBhcmFncmFwaExldmVsLCBib29sIGV4cGxpY2l0 UlRMLCBib29sIGJveF9taXJyb3IsIAogICAgICAgIGJpZGlfY2hhciAqIGxpbmUsIGludCBj b3VudCkKewogIHVjaGFyIGN1cnJlbnRFbWJlZGRpbmc7CiAgdWNoYXIgY3VycmVudE92ZXJy aWRlOwogIHVjaGFyIHRlbXBUeXBlOwogIGludCBpLCBqOwoKICB1Y2hhciBiaWRpX2NsYXNz X29mKGludCBpKSB7CiAgICAodm9pZClpOwoKICAgIGlmIChleHBsaWNpdFJUTCkKICAgICAg cmV0dXJuIFI7CgogICAgcmV0dXJuIE9OOwogIH0KCiAvKiBSdWxlIChQMiksIChQMykKICAq IFAyLiBJbiBlYWNoIHBhcmFncmFwaCwgZmluZCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHR5 cGUgTCwgQUwsIG9yIFIgCiAgICB3aGlsZSBza2lwcGluZyBvdmVyIGFueSBjaGFyYWN0ZXJz IGJldHdlZW4gYW4gaXNvbGF0ZSBpbml0aWF0b3IgYW5kIAogICAgaXRzIG1hdGNoaW5nIFBE SSBvciwgaWYgaXQgaGFzIG5vIG1hdGNoaW5nIFBESSwgdGhlIGVuZCBvZiB0aGUgcGFyYWdy YXBoLgogICogUDMuIElmIGEgY2hhcmFjdGVyIGlzIGZvdW5kIGluIFAyIGFuZCBpdCBpcyBv ZiB0eXBlIEFMIG9yIFIsIHRoZW4gc2V0CiAgKiB0aGUgcGFyYWdyYXBoIGVtYmVkZGluZyBs ZXZlbCB0byBvbmU7IG90aGVyd2lzZSwgc2V0IGl0IHRvIHplcm8uCiAgKi8KICBpbnQgaXNv bGF0ZUxldmVsID0gMDsKICBpbnQgcmVzTGV2ZWwgPSAtMTsKCgogLyogSW5pdGlhbGl6ZSB0 eXBlcywgbGV2ZWxzICovCiAgdWNoYXIgdHlwZXNbY291bnRdOwogIHVjaGFyIGxldmVsc1tj b3VudF07CiAgKHZvaWQpbGV2ZWxzOwoKIC8qIFJ1bGUgKFgxKQogICAgWDEuIEF0IHRoZSBi ZWdpbm5pbmcgb2YgYSBwYXJhZ3JhcGgsIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwczoK ICDigKIgU2V0IHRoZSBzdGFjayB0byBlbXB0eS4KICDigKIgUHVzaCBvbnRvIHRoZSBzdGFj ayBhbiBlbnRyeSBjb25zaXN0aW5nIG9mIHRoZSBwYXJhZ3JhcGggZW1iZWRkaW5nIGxldmVs LAogICAgYSBuZXV0cmFsIGRpcmVjdGlvbmFsIG92ZXJyaWRlIHN0YXR1cywgYW5kIGEgZmFs c2UgZGlyZWN0aW9uYWwgaXNvbGF0ZSBzdGF0dXMuCiAg4oCiIFNldCB0aGUgb3ZlcmZsb3cg aXNvbGF0ZSBjb3VudCB0byB6ZXJvLgogIOKAoiBTZXQgdGhlIG92ZXJmbG93IGVtYmVkZGlu ZyBjb3VudCB0byB6ZXJvLgogIOKAoiBTZXQgdGhlIHZhbGlkIGlzb2xhdGUgY291bnQgdG8g emVyby4KICDigKIgUHJvY2VzcyBlYWNoIGNoYXJhY3RlciBpdGVyYXRpdmVseSwgYXBwbHlp bmcgcnVsZXMgWDIgdGhyb3VnaCBYOC4gCiAgICBPbmx5IGVtYmVkZGluZyBsZXZlbHMgZnJv bSAwIHRocm91Z2ggbWF4X2RlcHRoIGFyZSB2YWxpZCBpbiB0aGlzIHBoYXNlLiAKICAgIChO b3RlIHRoYXQgaW4gdGhlIHJlc29sdXRpb24gb2YgbGV2ZWxzIGluIHJ1bGVzIEkxIGFuZCBJ MiwgCiAgICB0aGUgbWF4aW11bSBlbWJlZGRpbmcgbGV2ZWwgb2YgbWF4X2RlcHRoKzEgY2Fu IGJlIHJlYWNoZWQuKQogICovCiAgY3VycmVudEVtYmVkZGluZyA9IHBhcmFncmFwaExldmVs OwogIGN1cnJlbnRPdmVycmlkZSA9IE9OOwogIGJvb2wgY3VycmVudElzb2xhdGUgPSBmYWxz ZTsKCiAgLy8gQnkgbWFraW5nIHRoZSBkc3MgYXMgbGFyZ2UgYXMgdGhlIHdob2xlIGxpbmUs IHdlIGF2b2lkIG92ZXJmbG93IGhhbmRsaW5nLgogIHVjaGFyIGRzc19lbWJbY291bnQgKyAx XTsKICB1Y2hhciBkc3Nfb3ZyW2NvdW50ICsgMV07CiAgYm9vbCBkc3NfaXNvbFtjb3VudCAr IDFdOwogIGludCBkc3NfdG9wID0gLTE7CgogIGludCBjb3VudGRzcygpIHsgcmV0dXJuIGRz c190b3AgKyAxOyB9CgogIHZvaWQgcHVzaGRzcygpIHsKICAgIGRzc190b3ArKzsKICAgIGRz c19lbWJbZHNzX3RvcF0gPSBjdXJyZW50RW1iZWRkaW5nOwogICAgZHNzX292cltkc3NfdG9w XSA9IGN1cnJlbnRPdmVycmlkZTsKICAgIGRzc19pc29sW2Rzc190b3BdID0gY3VycmVudElz b2xhdGU7CiAgfQoKICB2b2lkIHBvcGRzcygpIHsKICAgIC8vIHJlbW92ZSB0b3AKICAgIGlm IChkc3NfdG9wID49IDApCiAgICAgIGRzc190b3AtLTsKICAgIC8vIHRoZW4gc2V0IGN1cnJl bnQgdmFsdWVzIHRvIG5ldyB0b3AKICAgIGlmIChkc3NfdG9wID49IDApIHsKICAgICAgY3Vy cmVudEVtYmVkZGluZyA9IGRzc19lbWJbZHNzX3RvcF07CiAgICAgIGN1cnJlbnRPdmVycmlk ZSA9IGRzc19vdnJbZHNzX3RvcF07CiAgICAgIGN1cnJlbnRJc29sYXRlID0gZHNzX2lzb2xb ZHNzX3RvcF07CiAgICB9CiAgfQoKICBwdXNoZHNzKCk7CiAgLy9pbnQgb3ZmSXNvbGF0ZSA9 IDA7CiAgLy9pbnQgb3ZmRW1iZWRkaW5nID0gMDsKICBpc29sYXRlTGV2ZWwgPSAwOwoKIC8q IFJ1bGUgKFgyKSwgKFgzKSwgKFg0KSwgKFg1KSwgKFg2KSwgKFg3KSwgKFg4KQogICogWDIu IFdpdGggZWFjaCBSTEUsIGNvbXB1dGUgdGhlIGxlYXN0IGdyZWF0ZXIgb2RkIGVtYmVkZGlu ZyBsZXZlbC4KICAqIFgzLiBXaXRoIGVhY2ggTFJFLCBjb21wdXRlIHRoZSBsZWFzdCBncmVh dGVyIGV2ZW4gZW1iZWRkaW5nIGxldmVsLgogICogWDQuIFdpdGggZWFjaCBSTE8sIGNvbXB1 dGUgdGhlIGxlYXN0IGdyZWF0ZXIgb2RkIGVtYmVkZGluZyBsZXZlbC4KICAqIFg1LiBXaXRo IGVhY2ggTFJPLCBjb21wdXRlIHRoZSBsZWFzdCBncmVhdGVyIGV2ZW4gZW1iZWRkaW5nIGxl dmVsLgogICogWDYuIEZvciBhbGwgdHlwZXMgYmVzaWRlcyBSTEUsIExSRSwgUkxPLCBMUk8s IGFuZCBQREY6CiAgKiAgICAgICAgICBhLiBTZXQgdGhlIGxldmVsIG9mIHRoZSBjdXJyZW50 IGNoYXJhY3RlciB0byB0aGUgY3VycmVudAogICogICAgICAgICAgICAgIGVtYmVkZGluZyBs ZXZlbC4KICAqICAgICAgICAgIGIuIFdoZW5ldmVyIHRoZSBkaXJlY3Rpb25hbCBvdmVycmlk ZSBzdGF0dXMgaXMgbm90IG5ldXRyYWwsCiAgKiAgICAgICAgICAgICAgcmVzZXQgdGhlIGN1 cnJlbnQgY2hhcmFjdGVyIHR5cGUgdG8gdGhlIGRpcmVjdGlvbmFsCiAgKiAgICAgICAgICAg ICAgb3ZlcnJpZGUgc3RhdHVzLgogICogWDcuIFdpdGggZWFjaCBQREYsIGRldGVybWluZSB0 aGUgbWF0Y2hpbmcgZW1iZWRkaW5nIG9yIG92ZXJyaWRlIGNvZGUuCiAgKiBJZiB0aGVyZSB3 YXMgYSB2YWxpZCBtYXRjaGluZyBjb2RlLCByZXN0b3JlIChwb3ApIHRoZSBsYXN0CiAgKiBy ZW1lbWJlcmVkIChwdXNoZWQpIGVtYmVkZGluZyBsZXZlbCBhbmQgZGlyZWN0aW9uYWwgb3Zl cnJpZGUuCiAgKiBYOC4gQWxsIGV4cGxpY2l0IGRpcmVjdGlvbmFsIGVtYmVkZGluZ3MgYW5k IG92ZXJyaWRlcyBhcmUgY29tcGxldGVseQogICogdGVybWluYXRlZCBhdCB0aGUgZW5kIG9m IGVhY2ggcGFyYWdyYXBoLiBQYXJhZ3JhcGggc2VwYXJhdG9ycyBhcmUgbm90CiAgKiBpbmNs dWRlZCBpbiB0aGUgZW1iZWRkaW5nLiAoVXNlbGVzcyBoZXJlKSBOT1QgSU1QTEVNRU5URUQK ICAqLwogIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICB0ZW1wVHlwZSA9IGJp ZGlfY2xhc3Nfb2YoaSk7CiAgICBsZXZlbHNbaV0gPSBjdXJyZW50RW1iZWRkaW5nOwoKICAg IGlmICh0ZW1wVHlwZSA9PSBGU0kpIHsKICAgICAgaW50IGx2bCA9IDA7CiAgICAgIHRlbXBU eXBlID0gTFJJOwogICAgICBmb3IgKGludCBrID0gaSArIDE7IGsgPCBjb3VudDsgaysrKSB7 CiAgICAgICAgdWNoYXIga1R5cGUgPSBiaWRpX2NsYXNzX29mKGspOwogICAgICAgIGlmIChr VHlwZSA9PSBGU0kgfHwga1R5cGUgPT0gUkxJIHx8IGtUeXBlID09IExSSSkKICAgICAgICAg IGx2bCsrOwogICAgICAgIGVsc2UgaWYgKGtUeXBlID09IFBESSkgewogICAgICAgICAgaWYg KGx2bCkKICAgICAgICAgICAgbHZsLS07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGJy ZWFrOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChrVHlwZSA9PSBSIHx8IGtUeXBlID09 IEFMKSB7CiAgICAgICAgICB0ZW1wVHlwZSA9IFJMSTsKICAgICAgICAgIGJyZWFrOwogICAg ICAgIH0KICAgICAgICBlbHNlIGlmIChrVHlwZSA9PSBMKQogICAgICAgICAgYnJlYWs7CiAg ICAgIH0KICAgIH0KICAgIHN3aXRjaCAodGVtcFR5cGUpIHsKICAgICAgd2hlbiBSTEU6CiAg ICAgICAgY3VycmVudEVtYmVkZGluZyA9IGxlYXN0R3JlYXRlck9kZChjdXJyZW50RW1iZWRk aW5nKTsKICAgICAgICBjdXJyZW50T3ZlcnJpZGUgPSBPTjsKICAgICAgICBjdXJyZW50SXNv bGF0ZSA9IGZhbHNlOwogICAgICAgIHB1c2hkc3MoKTsKICAgICAgd2hlbiBMUkU6CiAgICAg ICAgY3VycmVudEVtYmVkZGluZyA9IGxlYXN0R3JlYXRlckV2ZW4oY3VycmVudEVtYmVkZGlu Zyk7CiAgICAgICAgY3VycmVudE92ZXJyaWRlID0gT047CiAgICAgICAgY3VycmVudElzb2xh dGUgPSBmYWxzZTsKICAgICAgICBwdXNoZHNzKCk7CiAgICAgIHdoZW4gUkxPOgogICAgICAg IGN1cnJlbnRFbWJlZGRpbmcgPSBsZWFzdEdyZWF0ZXJPZGQoY3VycmVudEVtYmVkZGluZyk7 CiAgICAgICAgY3VycmVudE92ZXJyaWRlID0gUjsKICAgICAgICBjdXJyZW50SXNvbGF0ZSA9 IGZhbHNlOwogICAgICAgIHB1c2hkc3MoKTsKICAgICAgd2hlbiBMUk86CiAgICAgICAgY3Vy cmVudEVtYmVkZGluZyA9IGxlYXN0R3JlYXRlckV2ZW4oY3VycmVudEVtYmVkZGluZyk7CiAg ICAgICAgY3VycmVudE92ZXJyaWRlID0gTDsKICAgICAgICBjdXJyZW50SXNvbGF0ZSA9IGZh bHNlOwogICAgICAgIHB1c2hkc3MoKTsKICAgICAgd2hlbiBSTEk6CiAgICAgICAgaWYgKGN1 cnJlbnRPdmVycmlkZSAhPSBPTikKICAgICAgICAgIHRlbXBUeXBlID0gY3VycmVudE92ZXJy aWRlOwogICAgICAgIGN1cnJlbnRFbWJlZGRpbmcgPSBsZWFzdEdyZWF0ZXJPZGQoY3VycmVu dEVtYmVkZGluZyk7CiAgICAgICAgaXNvbGF0ZUxldmVsKys7CiAgICAgICAgY3VycmVudE92 ZXJyaWRlID0gT047CiAgICAgICAgY3VycmVudElzb2xhdGUgPSB0cnVlOwogICAgICAgIHB1 c2hkc3MoKTsKICAgICAgd2hlbiBMUkk6CiAgICAgICAgaWYgKGN1cnJlbnRPdmVycmlkZSAh PSBPTikKICAgICAgICAgIHRlbXBUeXBlID0gY3VycmVudE92ZXJyaWRlOwogICAgICAgIGN1 cnJlbnRFbWJlZGRpbmcgPSBsZWFzdEdyZWF0ZXJFdmVuKGN1cnJlbnRFbWJlZGRpbmcpOwog ICAgICAgIGlzb2xhdGVMZXZlbCsrOwogICAgICAgIGN1cnJlbnRPdmVycmlkZSA9IE9OOwog ICAgICAgIGN1cnJlbnRJc29sYXRlID0gdHJ1ZTsKICAgICAgICBwdXNoZHNzKCk7CiAgICAg IHdoZW4gUERGOgogICAgICAgIGlmICghY3VycmVudElzb2xhdGUgJiYgY291bnRkc3MoKSA+ PSAyKQogICAgICAgICAgcG9wZHNzKCk7CiAgICAgICAgbGV2ZWxzW2ldID0gY3VycmVudEVt YmVkZGluZzsKICAgICAgd2hlbiBQREk6CiAgICAgICAgaWYgKGlzb2xhdGVMZXZlbCkgewog ICAgICAgICAgd2hpbGUgKCFjdXJyZW50SXNvbGF0ZSAmJiBjb3VudGRzcygpID4gMCkKICAg ICAgICAgICAgcG9wZHNzKCk7CiAgICAgICAgICBwb3Bkc3MoKTsKICAgICAgICAgIGlzb2xh dGVMZXZlbC0tOwogICAgICAgIH0KICAgICAgICBpZiAoY3VycmVudE92ZXJyaWRlICE9IE9O KQogICAgICAgICAgdGVtcFR5cGUgPSBjdXJyZW50T3ZlcnJpZGU7CiAgICAgICAgbGV2ZWxz W2ldID0gY3VycmVudEVtYmVkZGluZzsKICAgICAgd2hlbiBXUyBvciBTOiAvKiBXaGl0ZXNw YWNlIGlzIHRyZWF0ZWQgYXMgbmV1dHJhbCBmb3Igbm93ICovCiAgICAgICAgaWYgKGN1cnJl bnRPdmVycmlkZSAhPSBPTikKICAgICAgICAgIHRlbXBUeXBlID0gY3VycmVudE92ZXJyaWRl OwogICAgICBvdGhlcndpc2U6CiAgICAgICAgaWYgKGN1cnJlbnRPdmVycmlkZSAhPSBPTikK ICAgICAgICAgIHRlbXBUeXBlID0gY3VycmVudE92ZXJyaWRlOwogICAgfQogICAgdHlwZXNb aV0gPSB0ZW1wVHlwZTsKICB9CgogLyogUnVsZSAoWDkpCiAgKiBYOS4gUmVtb3ZlIGFsbCBS TEUsIExSRSwgUkxPLCBMUk8sIFBERiwgYW5kIEJOIGNvZGVzLgogICogSGVyZSwgdGhleSdy ZSBjb252ZXJ0ZWQgdG8gTlNNICh1c2VkIHRvIGJlIEJOKS4KICAqLwogIGJvb2wgc2tpcFtj b3VudF07CiAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgIHN3aXRjaCAodHlw ZXNbaV0pIHsKICAgICAgd2hlbiBSTEUgb3IgTFJFIG9yIFJMTyBvciBMUk8gb3IgUERGIG9y IEJOOgogICAgICAgIC8vdHlwZXNbaV0gPSBCTjsKICAgICAgICB0eXBlc1tpXSA9IE5TTTsg IC8vIGZpeGVzIDQ1OTQgdGVzdCBjYXNlcyArIDI4IGNoYXIgdGVzdCBjYXNlcwogICAgICAg IHNraXBbaV0gPSB0cnVlOyAgLy8gcmVtb3ZlIGNoYXIgZnJvbSBhbGdvcml0aG0uLi4gKHVz YWdlIGluY29tcGxldGUpCiAgICAgIG90aGVyd2lzZToKICAgICAgICBza2lwW2ldID0gZmFs c2U7CiAgICB9CiAgfQoKIC8qIFJ1bGUgKFcxKQogICogVzEuIEV4YW1pbmUgZWFjaCBub24t c3BhY2luZyBtYXJrIChOU00pIGluIHRoZSBsZXZlbCBydW4sIGFuZCBjaGFuZ2UKICAqIHRo ZSB0eXBlIG9mIHRoZSBOU00gdG8gdGhlIHR5cGUgb2YgdGhlIHByZXZpb3VzIGNoYXJhY3Rl ci4gSWYgdGhlIE5TTQogICogaXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsZXZlbCBydW4sIGl0 IHdpbGwgZ2V0IHRoZSB0eXBlIG9mIHNvci4KICAvLyBUT0RPOiBjaGVjawogICAgVzEuIEV4 YW1pbmUgZWFjaCBub25zcGFjaW5nIG1hcmsgKE5TTSkgaW4gdGhlIGlzb2xhdGluZyBydW4g c2VxdWVuY2UsIAogICAgYW5kIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgTlNNIAogICAgdG8g T3RoZXIgTmV1dHJhbCBpZiB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGlzIGFuIGlzb2xhdGUg aW5pdGlhdG9yIG9yIFBESSwgCiAgICBhbmQgdG8gdGhlIHR5cGUgb2YgdGhlIHByZXZpb3Vz IGNoYXJhY3RlciBvdGhlcndpc2UuIAogICAgSWYgdGhlIE5TTSBpcyBhdCB0aGUgc3RhcnQg b2YgdGhlIGlzb2xhdGluZyBydW4gc2VxdWVuY2UsIAogICAgaXQgd2lsbCBnZXQgdGhlIHR5 cGUgb2Ygc29zLiAKICAgIChOb3RlIHRoYXQgaW4gYW4gaXNvbGF0aW5nIHJ1biBzZXF1ZW5j ZSwgYW4gaXNvbGF0ZSBpbml0aWF0b3IgZm9sbG93ZWQgYnkgCiAgICBhbiBOU00gb3IgYW55 IHR5cGUgb3RoZXIgdGhhbiBQREkgbXVzdCBiZSBhbiBvdmVyZmxvdyBpc29sYXRlIGluaXRp YXRvci4pCiAgKi8KICBpZiAodHlwZXNbMF0gPT0gTlNNIC8qJiYgIXNraXBbMF0qLykKICAg IHR5cGVzWzBdID0gKHBhcmFncmFwaExldmVsICYgMSkgPyBSIDogTDsgIC8vIHNvcgoKICBm b3IgKGkgPSAxOyBpIDwgY291bnQ7IGkrKykgewogICAgaWYgKHR5cGVzW2ldID09IE5TTSAv KiYmICFza2lwW2ldKi8pCiAgICAgIHN3aXRjaCAodHlwZXNbaSAtIDFdKSB7CiAgICAgICAg d2hlbiBMUkkgb3IgUkxJIG9yIEZTSSBvciBQREk6CiAgICAgICAgICB0eXBlc1tpXSA9IE9O OwogICAgICAgIG90aGVyd2lzZToKICAgICAgICAgIHR5cGVzW2ldID0gdHlwZXNbaSAtIDFd OwogICAgICB9CiAgfQoKIC8qIFJ1bGUgKFc0KQogICogVzQuIEEgc2luZ2xlIEV1cm9wZWFu IHNlcGFyYXRvciBiZXR3ZWVuIHR3byBFdXJvcGVhbiBudW1iZXJzIGNoYW5nZXMKICAqIHRv IGEgRXVyb3BlYW4gbnVtYmVyLiBBIHNpbmdsZSBjb21tb24gc2VwYXJhdG9yIGJldHdlZW4g dHdvIG51bWJlcnMKICAqIG9mIHRoZSBzYW1lIHR5cGUgY2hhbmdlcyB0byB0aGF0IHR5cGUu CiAgKi8KICBmb3IgKGkgPSAxOyBpIDwgY291bnQgLSAxOyBpKyspIHsKICAgIGlmICh0eXBl c1tpXSA9PSBFUykgewogICAgICBpZiAodHlwZXNbaSAtIDFdID09IEVOICYmIHR5cGVzW2kg KyAxXSA9PSBFTikKICAgICAgICB0eXBlc1tpXSA9IEVOOwogICAgfQogICAgZWxzZSBpZiAo dHlwZXNbaV0gPT0gQ1MpIHsKICAgICAgaWYgKHR5cGVzW2kgLSAxXSA9PSBFTiAmJiB0eXBl c1tpICsgMV0gPT0gRU4pCiAgICAgICAgdHlwZXNbaV0gPSBFTjsKICAgICAgZWxzZSBpZiAo dHlwZXNbaSAtIDFdID09IEFOICYmIHR5cGVzW2kgKyAxXSA9PSBBTikKICAgICAgICB0eXBl c1tpXSA9IEFOOwogICAgfQogIH0KCiAvKiBSdWxlIChXNSkKICAqIFc1LiBBIHNlcXVlbmNl IG9mIEV1cm9wZWFuIHRlcm1pbmF0b3JzIGFkamFjZW50IHRvIEV1cm9wZWFuIG51bWJlcnMK ICAqIGNoYW5nZXMgdG8gYWxsIEV1cm9wZWFuIG51bWJlcnMuCiAgKgogICogT3B0aW1pemF0 aW9uOiBsb3RzIGhlcmUuLi4gZWxzZSBpZnMgbmVlZCByZWFycmFuZ2VtZW50CiAgKi8KICBm b3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgaWYgKHR5cGVzW2ldID09IEVUKSB7 CiAgICAgIGlmIChpID4gMCAmJiB0eXBlc1tpIC0gMV0gPT0gRU4pIHsKICAgICAgICB0eXBl c1tpXSA9IEVOOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGkg PCBjb3VudCAtIDEgJiYgdHlwZXNbaSArIDFdID09IEVOKSB7CiAgICAgICAgdHlwZXNbaV0g PSBFTjsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBlbHNlIGlmIChpIDwgY291 bnQgLSAxICYmIHR5cGVzW2kgKyAxXSA9PSBFVCkgewogICAgICAgIGogPSBpOwogICAgICAg IHdoaWxlIChqIDwgY291bnQgJiYgdHlwZXNbal0gPT0gRVQpIHsKICAgICAgICAgIGorKzsK ICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVzW2pdID09IEVOKQogICAgICAgICAgdHlwZXNb aV0gPSBFTjsKICAgICAgfQogICAgfQogIH0KCiAvKiBSdWxlIChOMSkKICAqIE4xLiBBIHNl cXVlbmNlIG9mIE5JcyB0YWtlcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzdXJyb3VuZGluZwog ICogc3Ryb25nIHRleHQgaWYgdGhlIHRleHQgb24gYm90aCBzaWRlcyBoYXMgdGhlIHNhbWUg ZGlyZWN0aW9uLgogICogRXVyb3BlYW4gYW5kIEFyYWJpYyBudW1iZXJzIGFyZSB0cmVhdGVk IGFzIHRob3VnaCB0aGV5IHdlcmUgUi4KICAvLyBUT0RPOiBjaGVjawogICAgRXVyb3BlYW4g YW5kIEFyYWJpYyBudW1iZXJzIGFjdCBhcyBpZiB0aGV5IHdlcmUgUiBpbiB0ZXJtcyBvZiB0 aGVpciAKICAgIGluZmx1ZW5jZSBvbiBOSXMuIFRoZSBzdGFydC1vZi1zZXF1ZW5jZSAoc29z KSBhbmQgZW5kLW9mLXNlcXVlbmNlIChlb3MpIAogICAgdHlwZXMgYXJlIHVzZWQgYXQgaXNv bGF0aW5nIHJ1biBzZXF1ZW5jZSBib3VuZGFyaWVzLgogICovCiAgaWYgKGNvdW50ID49IDIg JiYgaXNfTkkodHlwZXNbMF0pKSB7CiAgICBpZiAoKHBhcmFncmFwaExldmVsICYgMSkgJiYK ICAgICAgICAoKHR5cGVzWzFdID09IFIpIHx8ICh0eXBlc1sxXSA9PSBFTikgfHwgKHR5cGVz WzFdID09IEFOKSkKICAgICAgICkKICAgICAgdHlwZXNbMF0gPSBSOwogICAgZWxzZSBpZiAo IShwYXJhZ3JhcGhMZXZlbCAmIDEpICYmIHR5cGVzWzFdID09IEwpCiAgICAgIHR5cGVzWzBd ID0gTDsKICB9CiAgZm9yIChpID0gMTsgaSA8IGNvdW50IC0gMTsgaSsrKSB7CiAgICBpZiAo aXNfTkkodHlwZXNbaV0pKSB7CiAgICAgIGlmICh0eXBlc1tpIC0gMV0gPT0gTCkgewogICAg ICAgIGogPSBpOwogICAgICAgIHdoaWxlIChqIDwgY291bnQgLSAxICYmIGlzX05JKHR5cGVz W2pdKSkgewogICAgICAgICAgaisrOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZXNbal0g PT0gTCkgewogICAgICAgICAgd2hpbGUgKGkgPCBqKSB7CiAgICAgICAgICAgIHR5cGVzW2ld ID0gTDsKICAgICAgICAgICAgaSsrOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgIH0K ICAgICAgZWxzZSBpZiAoKHR5cGVzW2kgLSAxXSA9PSBSKSB8fCAodHlwZXNbaSAtIDFdID09 IEVOKSB8fAogICAgICAgICAgICAgICAodHlwZXNbaSAtIDFdID09IEFOKSkgewogICAgICAg IGogPSBpOwogICAgICAgIHdoaWxlIChqIDwgY291bnQgLSAxICYmIGlzX05JKHR5cGVzW2pd KSkgewogICAgICAgICAgaisrOwogICAgICAgIH0KICAgICAgICBpZiAoKHR5cGVzW2pdID09 IFIpIHx8ICh0eXBlc1tqXSA9PSBFTikgfHwgKHR5cGVzW2pdID09IEFOKSkgewogICAgICAg ICAgd2hpbGUgKGkgPCBqKSB7CiAgICAgICAgICAgIHR5cGVzW2ldID0gUjsKICAgICAgICAg ICAgaSsrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICBpZiAo Y291bnQgPj0gMiAmJiBpc19OSSh0eXBlc1tjb3VudCAtIDFdKSkgewogICAgaWYgKChwYXJh Z3JhcGhMZXZlbCAmIDEpICYmCiAgICAgICAgKHR5cGVzW2NvdW50IC0gMl0gPT0gUiB8fCB0 eXBlc1tjb3VudCAtIDJdID09IEVOIHx8IHR5cGVzW2NvdW50IC0gMl0gPT0gQU4pCiAgICAg ICApCiAgICAgIHR5cGVzW2NvdW50IC0gMV0gPSBSOwogICAgZWxzZSBpZiAoIShwYXJhZ3Jh cGhMZXZlbCAmIDEpICYmIHR5cGVzW2NvdW50IC0gMl0gPT0gTCkKICAgICAgdHlwZXNbY291 bnQgLSAxXSA9IEw7CiAgfQoKIC8qIFJ1bGUgKEwxKQogICogTDEuIE9uIGVhY2ggbGluZSwg cmVzZXQgdGhlIGVtYmVkZGluZyBsZXZlbCBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnMK ICAqIHRvIHRoZSBwYXJhZ3JhcGggZW1iZWRkaW5nIGxldmVsOgogICogICAoMSkgc2VnbWVu dCBzZXBhcmF0b3JzLAogICogICAoMikgcGFyYWdyYXBoIHNlcGFyYXRvcnMsCiAgKiAgICgz KSBhbnkgc2VxdWVuY2Ugb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIG9yIGlzb2xhdGUgbWFy a2VycwogICogICAgICAgcHJlY2VkaW5nIGEgc2VnbWVudCBzZXBhcmF0b3Igb3IgcGFyYWdy YXBoIHNlcGFyYXRvciwKICAqICAgKDQpIGFuZCBhbnkgc2VxdWVuY2Ugb2Ygd2hpdGVzcGFj ZSBjaGFyYWN0ZXJzIG9yIGlzb2xhdGUgbWFya2VycwogICogICAgICAgYXQgdGhlIGVuZCBv ZiB0aGUgbGluZS4KICAqIFRoZSB0eXBlcyBvZiBjaGFyYWN0ZXJzIHVzZWQgaGVyZSBhcmUg dGhlIG9yaWdpbmFsIHR5cGVzLCBub3QgdGhvc2UKICAqIG1vZGlmaWVkIGJ5IHRoZSBwcmV2 aW91cyBwaGFzZS4KICAgIE4vQTogQmVjYXVzZSBhIHBhcmFncmFwaCBzZXBhcmF0b3IgYnJl YWtzIGxpbmVzLCB0aGVyZSB3aWxsIGJlIGF0IG1vc3QgCiAgICBvbmUgcGVyIGxpbmUsIGF0 IHRoZSBlbmQgb2YgdGhhdCBsaW5lLgogICovCiAgLy8gKDQpCiAgaiA9IGNvdW50IC0gMTsK ICB3aGlsZSAoaiA+IDAgJiYgKGJpZGlfY2xhc3Nfb2YoaikgPT0gV1MgfHwgc2tpcFtqXSkp IHsKICAgIGotLTsKICB9CiAgaWYgKGogPCBjb3VudCAtIDEpIHsKICAgIGZvciAoaisrOyBq IDwgY291bnQ7IGorKykKICAgICAgbGV2ZWxzW2pdID0gcGFyYWdyYXBoTGV2ZWw7CiAgfQog IC8vICgzKQogIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICB0ZW1wVHlwZSA9 IGJpZGlfY2xhc3Nfb2YoaSk7CiAgICBpZiAodGVtcFR5cGUgPT0gV1MpIHsKICAgICAgaiA9 IGk7CiAgICAgIHdoaWxlIChqIDwgY291bnQgJiYgKGJpZGlfY2xhc3Nfb2YoaikgPT0gV1Mg fHwgc2tpcFtqXSkpIHsKICAgICAgICBqKys7CiAgICAgIH0KICAgICAgaWYgKGogPT0gY291 bnQgfHwgYmlkaV9jbGFzc19vZihqKSA9PSBCIHx8IGJpZGlfY2xhc3Nfb2YoaikgPT0gUykg ewogICAgICAgIGZvciAoai0tOyBqID49IGk7IGotLSkgewogICAgICAgICAgbGV2ZWxzW2pd ID0gcGFyYWdyYXBoTGV2ZWw7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBlbHNlIGlm ICh0ZW1wVHlwZSA9PSBCIHx8IHRlbXBUeXBlID09IFMpIHsKICAgICAgbGV2ZWxzW2ldID0g cGFyYWdyYXBoTGV2ZWw7CiAgICB9CiAgfQoKICByZXR1cm4gcmVzTGV2ZWw7Cn0K --------------30D4158897F42C92C2A22C2F--