From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by sourceware.org (Postfix) with ESMTPS id 40FA13858407; Thu, 4 Aug 2022 20:56:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 40FA13858407 Received: by mail-wr1-x436.google.com with SMTP id l22so1103116wrz.7; Thu, 04 Aug 2022 13:56:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc; bh=I+cBlC0LjMSebc5s6BtQ3DZ7fGuNm+blSQjawL2WDrw=; b=7PxzAPjSmcGuzpaIG6n4V4AHWuj/e4GVTjcaXjfOX+g/Nax5UnH6W85nu/fsJKOKpL 96ZYeZsP4a2Sula2W3C0Yxm27zU9jF0jWLUzY3YfXvSt+3K6o0ekkLtxOjQMSo0MAM5l znN20dBOfdC0GTYfd0K5tl3Rb0CzwOyt+7zZOqzhgeYJHueIW/87QPQ29Dfg7oRj6qQg xrtd/hkWy/CpsrhwfaJqHP36mKIzpCX+OXoCSTC6ZcOGR7kBbsfpG1Xh2qWwGEfZK6PO kMLOuH3Fo8aHfvsPVrOTEDTf7qZ5DluL36+bJUVvn+QnID9luA3T18ClLzvhpBEJdP15 FPfA== X-Gm-Message-State: ACgBeo3r3UkQo7kAP4remAbsCu2xQShHTox+sjNqw53hd+J5cEASJ1tn h14MqtzaYdCV0iPhrDsz7zUew51erPI= X-Google-Smtp-Source: AA6agR639SNbiO0ASKTfHaFFQmlPrgWEI2cQapZEGzrHwf33/Kh+IDLFfQuRCLhUMgqmq5bD3JiVMw== X-Received: by 2002:adf:d1e8:0:b0:21d:ddc1:3701 with SMTP id g8-20020adfd1e8000000b0021dddc13701mr2414140wrd.153.1659646563795; Thu, 04 Aug 2022 13:56:03 -0700 (PDT) Received: from ?IPV6:2a01:e0a:1dc:b1c0:58e1:6932:2415:706b? ([2a01:e0a:1dc:b1c0:58e1:6932:2415:706b]) by smtp.googlemail.com with ESMTPSA id b17-20020a05600010d100b002206b4df832sm2022600wrx.110.2022.08.04.13.56.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Aug 2022 13:56:03 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------j0lQKPFpigu7WjEuOaP0ejQk" Message-ID: <3b6d1c3d-8bc7-e5e5-0a76-58d960f86e3f@gmail.com> Date: Thu, 4 Aug 2022 22:56:02 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Content-Language: en-US To: "libstdc++@gcc.gnu.org" Cc: gcc-patches From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= Subject: [PATCH][_GLIBCXX_DEBUG] Refine singular iterator state X-Spam-Status: No, score=-8.8 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Aug 2022 20:56:08 -0000 This is a multi-part message in MIME format. --------------j0lQKPFpigu7WjEuOaP0ejQk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit This an old patch I had prepared a long time ago, I don't think I ever submitted it.     libstdc++: [_GLIBCXX_DEBUG] Do not consider detached iterators as value-initialized     An attach iterator has its _M_version set to something != 0. This value shall be preserved     when detaching it so that the iterator does not look like a value initialized one.     libstdc++-v3/ChangeLog:             * include/debug/formatter.h (__singular_value_init): New _Iterator_state enum entry.             (_Parameter<>(const _Safe_iterator<>&, const char*, _Is_iterator)): Check if iterator             parameter is value-initialized.             (_Parameter<>(const _Safe_local_iterator<>&, const char*, _Is_iterator)): Likewise.             * include/debug/safe_iterator.h (_Safe_iterator<>::_M_value_initialized()): New. Adapt             checks.             * include/debug/safe_local_iterator.h (_Safe_local_iterator<>::_M_value_initialized()): New.             Adapt checks.             * src/c++11/debug.cc (_Safe_iterator_base::_M_reset): Do not reset _M_version.             (print_field(PrintContext&, const _Parameter&, const char*)): Adapt state_names.             * testsuite/23_containers/deque/debug/iterator1_neg.cc: New test.             * testsuite/23_containers/deque/debug/iterator2_neg.cc: New test.             * testsuite/23_containers/forward_list/debug/iterator1_neg.cc: New test.             * testsuite/23_containers/forward_list/debug/iterator2_neg.cc: New test. Tested under Linux x86_64 _GLIBCXX_DEBUG mode. Ok to commit ? François --------------j0lQKPFpigu7WjEuOaP0ejQk Content-Type: text/x-patch; charset=UTF-8; name="singular_value_init.patch" Content-Disposition: attachment; filename="singular_value_init.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL2Zvcm1hdHRlci5oIGIv bGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvZm9ybWF0dGVyLmgKaW5kZXggODBlOGJhNDZk MWUuLjc0OGQ0ZmJmZWE0IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1 Zy9mb3JtYXR0ZXIuaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9mb3JtYXR0 ZXIuaApAQCAtMTg1LDYgKzE4NSw3IEBAIG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwogICAgICAg X19yYmVnaW4sCQkvLyBkZXJlZmVyZW5jZWFibGUsIGFuZCBhdCB0aGUgcmV2ZXJzZS1iZWdp bm5pbmcKICAgICAgIF9fcm1pZGRsZSwJLy8gcmV2ZXJzZS1kZXJlZmVyZW5jZWFibGUsIG5v dCBhdCB0aGUgcmV2ZXJzZS1iZWdpbm5pbmcKICAgICAgIF9fcmVuZCwJCS8vIHJldmVyc2Ut cGFzdC10aGUtZW5kCisgICAgICBfX3Npbmd1bGFyX3ZhbHVlX2luaXQsCS8vIHNpbmd1bGFy LCB2YWx1ZSBpbml0aWFsaXplZAogICAgICAgX19sYXN0X3N0YXRlCiAgICAgfTsKIApAQCAt MjgwLDcgKzI4MSwxMiBAQCBuYW1lc3BhY2UgX19nbnVfZGVidWcKIAkgIF9NX3ZhcmlhbnQu X01faXRlcmF0b3IuX01fc2VxX3R5cGUgPSBfR0xJQkNYWF9UWVBFSUQoX1NlcXVlbmNlKTsK IAogCSAgaWYgKF9faXQuX01fc2luZ3VsYXIoKSkKLQkgICAgX01fdmFyaWFudC5fTV9pdGVy YXRvci5fTV9zdGF0ZSA9IF9fc2luZ3VsYXI7CisJICAgIHsKKwkgICAgICBpZiAoX19pdC5f TV92YWx1ZV9pbml0aWFsaXplZCgpKQorCQlfTV92YXJpYW50Ll9NX2l0ZXJhdG9yLl9NX3N0 YXRlID0gX19zaW5ndWxhcl92YWx1ZV9pbml0OworCSAgICAgIGVsc2UKKwkJX01fdmFyaWFu dC5fTV9pdGVyYXRvci5fTV9zdGF0ZSA9IF9fc2luZ3VsYXI7CisJICAgIH0KIAkgIGVsc2UK IAkgICAgewogCSAgICAgIGlmIChfX2l0Ll9NX2lzX2JlZm9yZV9iZWdpbigpKQpAQCAtMzA4 LDcgKzMxNCwxMiBAQCBuYW1lc3BhY2UgX19nbnVfZGVidWcKIAkgIF9NX3ZhcmlhbnQuX01f aXRlcmF0b3IuX01fc2VxX3R5cGUgPSBfR0xJQkNYWF9UWVBFSUQoX1NlcXVlbmNlKTsKIAog CSAgaWYgKF9faXQuX01fc2luZ3VsYXIoKSkKLQkgICAgX01fdmFyaWFudC5fTV9pdGVyYXRv ci5fTV9zdGF0ZSA9IF9fc2luZ3VsYXI7CisJICAgIHsKKwkgICAgICBpZiAoX19pdC5fTV92 YWx1ZV9pbml0aWFsaXplZCgpKQorCQlfTV92YXJpYW50Ll9NX2l0ZXJhdG9yLl9NX3N0YXRl ID0gX19zaW5ndWxhcl92YWx1ZV9pbml0OworCSAgICAgIGVsc2UKKwkJX01fdmFyaWFudC5f TV9pdGVyYXRvci5fTV9zdGF0ZSA9IF9fc2luZ3VsYXI7CisJICAgIH0KIAkgIGVsc2UKIAkg ICAgewogCSAgICAgIGlmIChfX2l0Ll9NX2lzX2VuZCgpKQpkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL2luY2x1ZGUvZGVidWcvc2FmZV9pdGVyYXRvci5oIGIvbGlic3RkYysrLXYzL2lu Y2x1ZGUvZGVidWcvc2FmZV9pdGVyYXRvci5oCmluZGV4IGQ2MTM5MzNlMjM2Li4zM2Y3YTg2 NDc4YSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvc2FmZV9pdGVy YXRvci5oCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL3NhZmVfaXRlcmF0b3Iu aApAQCAtNDEsOCArNDEsOCBAQAogCiAjZGVmaW5lIF9HTElCQ1hYX0RFQlVHX1ZFUklGWV9P UEVSQU5EUyhfTGhzLCBfUmhzLCBfQmFkTXNnSWQsIF9EaWZmTXNnSWQpIFwKICAgX0dMSUJD WFhfREVCVUdfVkVSSUZZKCFfTGhzLl9NX3Npbmd1bGFyKCkgJiYgIV9SaHMuX01fc2luZ3Vs YXIoKQlcCi0JCQl8fCAoX0xocy5iYXNlKCkgPT0gX0l0ZXJhdG9yKCkJCQlcCi0JCQkgICAg JiYgX1Jocy5iYXNlKCkgPT0gX0l0ZXJhdG9yKCkpLAkJXAorCQkJfHwgKF9MaHMuX01fdmFs dWVfaW5pdGlhbGl6ZWQoKQkJCVwKKwkJCSAgICAmJiBfUmhzLl9NX3ZhbHVlX2luaXRpYWxp emVkKCkpLAkJXAogCQkJX01fbWVzc2FnZShfQmFkTXNnSWQpCQkJCVwKIAkJCS5fTV9pdGVy YXRvcihfTGhzLCAjX0xocykJCQlcCiAJCQkuX01faXRlcmF0b3IoX1JocywgI19SaHMpKTsJ CQlcCkBAIC0xNzcsNyArMTc3LDcgQEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAJLy8gX0dM SUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUwogCS8vIERSIDQwOC4gSXMgdmVjdG9yPHJldmVy c2VfaXRlcmF0b3I8Y2hhcio+ID4gZm9yYmlkZGVuPwogCV9HTElCQ1hYX0RFQlVHX1ZFUklG WSghX194Ll9NX3Npbmd1bGFyKCkKLQkJCSAgICAgIHx8IF9feC5iYXNlKCkgPT0gX0l0ZXJh dG9yKCksCisJCQkgICAgICB8fCBfX3guX01fdmFsdWVfaW5pdGlhbGl6ZWQoKSwKIAkJCSAg ICAgIF9NX21lc3NhZ2UoX19tc2dfaW5pdF9jb3B5X3Npbmd1bGFyKQogCQkJICAgICAgLl9N X2l0ZXJhdG9yKCp0aGlzLCAidGhpcyIpCiAJCQkgICAgICAuX01faXRlcmF0b3IoX194LCAi b3RoZXIiKSk7CkBAIC0xOTMsNyArMTkzLDcgQEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAg ICAgICA6IF9JdGVyX2Jhc2UoKQogICAgICAgewogCV9HTElCQ1hYX0RFQlVHX1ZFUklGWSgh X194Ll9NX3Npbmd1bGFyKCkKLQkJCSAgICAgIHx8IF9feC5iYXNlKCkgPT0gX0l0ZXJhdG9y KCksCisJCQkgICAgICB8fCBfX3guX01fdmFsdWVfaW5pdGlhbGl6ZWQoKSwKIAkJCSAgICAg IF9NX21lc3NhZ2UoX19tc2dfaW5pdF9jb3B5X3Npbmd1bGFyKQogCQkJICAgICAgLl9NX2l0 ZXJhdG9yKCp0aGlzLCAidGhpcyIpCiAJCQkgICAgICAuX01faXRlcmF0b3IoX194LCAib3Ro ZXIiKSk7CkBAIC0yMjAsNyArMjIwLDcgQEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAJICAv LyBfR0xJQkNYWF9SRVNPTFZFX0xJQl9ERUZFQ1RTCiAJICAvLyBEUiA0MDguIElzIHZlY3Rv cjxyZXZlcnNlX2l0ZXJhdG9yPGNoYXIqPiA+IGZvcmJpZGRlbj8KIAkgIF9HTElCQ1hYX0RF QlVHX1ZFUklGWSghX194Ll9NX3Npbmd1bGFyKCkKLQkJCQl8fCBfX3guYmFzZSgpID09IF9N dXRhYmxlSXRlcmF0b3IoKSwKKwkJCQl8fCBfX3guX01fdmFsdWVfaW5pdGlhbGl6ZWQoKSwK IAkJCQlfTV9tZXNzYWdlKF9fbXNnX2luaXRfY29uc3Rfc2luZ3VsYXIpCiAJCQkJLl9NX2l0 ZXJhdG9yKCp0aGlzLCAidGhpcyIpCiAJCQkJLl9NX2l0ZXJhdG9yKF9feCwgIm90aGVyIikp OwpAQCAtMjM2LDcgKzIzNiw3IEBAIG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwogCS8vIF9HTElC Q1hYX1JFU09MVkVfTElCX0RFRkVDVFMKIAkvLyBEUiA0MDguIElzIHZlY3RvcjxyZXZlcnNl X2l0ZXJhdG9yPGNoYXIqPiA+IGZvcmJpZGRlbj8KIAlfR0xJQkNYWF9ERUJVR19WRVJJRlko IV9feC5fTV9zaW5ndWxhcigpCi0JCQkgICAgICB8fCBfX3guYmFzZSgpID09IF9JdGVyYXRv cigpLAorCQkJICAgICAgfHwgX194Ll9NX3ZhbHVlX2luaXRpYWxpemVkKCksCiAJCQkgICAg ICBfTV9tZXNzYWdlKF9fbXNnX2NvcHlfc2luZ3VsYXIpCiAJCQkgICAgICAuX01faXRlcmF0 b3IoKnRoaXMsICJ0aGlzIikKIAkJCSAgICAgIC5fTV9pdGVyYXRvcihfX3gsICJvdGhlciIp KTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBuYW1lc3BhY2UgX19nbnVfZGVidWcKICAgICAgIG9w ZXJhdG9yPShfU2FmZV9pdGVyYXRvciYmIF9feCkgbm9leGNlcHQKICAgICAgIHsKIAlfR0xJ QkNYWF9ERUJVR19WRVJJRlkoIV9feC5fTV9zaW5ndWxhcigpCi0JCQkgICAgICB8fCBfX3gu YmFzZSgpID09IF9JdGVyYXRvcigpLAorCQkJICAgICAgfHwgX194Ll9NX3ZhbHVlX2luaXRp YWxpemVkKCksCiAJCQkgICAgICBfTV9tZXNzYWdlKF9fbXNnX2NvcHlfc2luZ3VsYXIpCiAJ CQkgICAgICAuX01faXRlcmF0b3IoKnRoaXMsICJ0aGlzIikKIAkJCSAgICAgIC5fTV9pdGVy YXRvcihfX3gsICJvdGhlciIpKTsKQEAgLTQwNSw2ICs0MDUsMTEgQEAgbmFtZXNwYWNlIF9f Z251X2RlYnVnCiAgICAgICBfTV9pbmNyZW1lbnRhYmxlKCkgY29uc3QKICAgICAgIHsgcmV0 dXJuICF0aGlzLT5fTV9zaW5ndWxhcigpICYmICFfTV9pc19lbmQoKTsgfQogCisgICAgICAv Ly8gSXMgdGhlIGl0ZXJhdG9yIHZhbHVlLWluaXRpYWxpemVkPworICAgICAgYm9vbAorICAg ICAgX01fdmFsdWVfaW5pdGlhbGl6ZWQoKSBjb25zdAorICAgICAgeyByZXR1cm4gX01fdmVy c2lvbiA9PSAwICYmIGJhc2UoKSA9PSBfSXRlcl9iYXNlKCk7IH0KKwogICAgICAgLy8gQ2Fu IHdlIGFkdmFuY2UgdGhlIGl0ZXJhdG9yIEBwIF9fbiBzdGVwcyAoQHAgX19uIG1heSBiZSBu ZWdhdGl2ZSkKICAgICAgIGJvb2wKICAgICAgIF9NX2Nhbl9hZHZhbmNlKGRpZmZlcmVuY2Vf dHlwZSBfX24sIGJvb2wgX19zdHJpY3QgPSBmYWxzZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9zYWZlX2xvY2FsX2l0ZXJhdG9yLmggYi9saWJz dGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9zYWZlX2xvY2FsX2l0ZXJhdG9yLmgKaW5kZXggYjUz MThmNTBiNmEuLjZlM2M0ZWIxNTA1IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVk ZS9kZWJ1Zy9zYWZlX2xvY2FsX2l0ZXJhdG9yLmgKKysrIGIvbGlic3RkYysrLXYzL2luY2x1 ZGUvZGVidWcvc2FmZV9sb2NhbF9pdGVyYXRvci5oCkBAIC0zMyw4ICszMyw4IEBACiAKICNk ZWZpbmUgX0dMSUJDWFhfREVCVUdfVkVSSUZZX09QRVJBTkRTKF9MaHMsIF9SaHMpIFwKICAg X0dMSUJDWFhfREVCVUdfVkVSSUZZKCFfTGhzLl9NX3Npbmd1bGFyKCkgJiYgIV9SaHMuX01f c2luZ3VsYXIoKQlcCi0JCQl8fCAoX0xocy5iYXNlKCkgPT0gX0l0ZXJhdG9ye30JCQlcCi0J CQkgICAgJiYgX1Jocy5iYXNlKCkgPT0gX0l0ZXJhdG9ye30pLAkJXAorCQkJfHwgKF9MaHMu X01fdmFsdWVfaW5pdGlhbGl6ZWQoKQkJCVwKKwkJCSAgICAmJiBfUmhzLl9NX3ZhbHVlX2lu aXRpYWxpemVkKCkpLAkJXAogCQkJX01fbWVzc2FnZShfX21zZ19pdGVyX2NvbXBhcmVfYmFk KQkJXAogCQkJLl9NX2l0ZXJhdG9yKF9MaHMsICJsaHMiKQkJCVwKIAkJCS5fTV9pdGVyYXRv cihfUmhzLCAicmhzIikpOwkJCVwKQEAgLTEyNyw3ICsxMjcsNyBAQCBuYW1lc3BhY2UgX19n bnVfZGVidWcKIAkvLyBfR0xJQkNYWF9SRVNPTFZFX0xJQl9ERUZFQ1RTCiAJLy8gRFIgNDA4 LiBJcyB2ZWN0b3I8cmV2ZXJzZV9pdGVyYXRvcjxjaGFyKj4gPiBmb3JiaWRkZW4/CiAJX0dM SUJDWFhfREVCVUdfVkVSSUZZKCFfX3guX01fc2luZ3VsYXIoKQotCQkJICAgICAgfHwgX194 LmJhc2UoKSA9PSBfSXRlcmF0b3IoKSwKKwkJCSAgICAgIHx8IF9feC5fTV92YWx1ZV9pbml0 aWFsaXplZCgpLAogCQkJICAgICAgX01fbWVzc2FnZShfX21zZ19pbml0X2NvcHlfc2luZ3Vs YXIpCiAJCQkgICAgICAuX01faXRlcmF0b3IoKnRoaXMsICJ0aGlzIikKIAkJCSAgICAgIC5f TV9pdGVyYXRvcihfX3gsICJvdGhlciIpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBuYW1lc3Bh Y2UgX19nbnVfZGVidWcKICAgICAgIDogX0l0ZXJfYmFzZSgpCiAgICAgICB7CiAJX0dMSUJD WFhfREVCVUdfVkVSSUZZKCFfX3guX01fc2luZ3VsYXIoKQotCQkJICAgICAgfHwgX194LmJh c2UoKSA9PSBfSXRlcmF0b3IoKSwKKwkJCSAgICAgIHx8IF9feC5fTV92YWx1ZV9pbml0aWFs aXplZCgpLAogCQkJICAgICAgX01fbWVzc2FnZShfX21zZ19pbml0X2NvcHlfc2luZ3VsYXIp CiAJCQkgICAgICAuX01faXRlcmF0b3IoKnRoaXMsICJ0aGlzIikKIAkJCSAgICAgIC5fTV9p dGVyYXRvcihfX3gsICJvdGhlciIpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2Ug X19nbnVfZGVidWcKIAkgIC8vIF9HTElCQ1hYX1JFU09MVkVfTElCX0RFRkVDVFMKIAkgIC8v IERSIDQwOC4gSXMgdmVjdG9yPHJldmVyc2VfaXRlcmF0b3I8Y2hhcio+ID4gZm9yYmlkZGVu PwogCSAgX0dMSUJDWFhfREVCVUdfVkVSSUZZKCFfX3guX01fc2luZ3VsYXIoKQotCQkJCXx8 IF9feC5iYXNlKCkgPT0gX011dGFibGVJdGVyYXRvcigpLAorCQkJCXx8IF9feC5fTV92YWx1 ZV9pbml0aWFsaXplZCgpLAogCQkJCV9NX21lc3NhZ2UoX19tc2dfaW5pdF9jb25zdF9zaW5n dWxhcikKIAkJCQkuX01faXRlcmF0b3IoKnRoaXMsICJ0aGlzIikKIAkJCQkuX01faXRlcmF0 b3IoX194LCAib3RoZXIiKSk7CkBAIC0xODMsNyArMTgzLDcgQEAgbmFtZXNwYWNlIF9fZ251 X2RlYnVnCiAJLy8gX0dMSUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUwogCS8vIERSIDQwOC4g SXMgdmVjdG9yPHJldmVyc2VfaXRlcmF0b3I8Y2hhcio+ID4gZm9yYmlkZGVuPwogCV9HTElC Q1hYX0RFQlVHX1ZFUklGWSghX194Ll9NX3Npbmd1bGFyKCkKLQkJCSAgICAgIHx8IF9feC5i YXNlKCkgPT0gX0l0ZXJhdG9yKCksCisJCQkgICAgICB8fCBfX3guX01fdmFsdWVfaW5pdGlh bGl6ZWQoKSwKIAkJCSAgICAgIF9NX21lc3NhZ2UoX19tc2dfY29weV9zaW5ndWxhcikKIAkJ CSAgICAgIC5fTV9pdGVyYXRvcigqdGhpcywgInRoaXMiKQogCQkJICAgICAgLl9NX2l0ZXJh dG9yKF9feCwgIm90aGVyIikpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIG5hbWVzcGFjZSBfX2du dV9kZWJ1ZwogICAgICAgb3BlcmF0b3I9KF9TYWZlX2xvY2FsX2l0ZXJhdG9yJiYgX194KSBu b2V4Y2VwdAogICAgICAgewogCV9HTElCQ1hYX0RFQlVHX1ZFUklGWSghX194Ll9NX3Npbmd1 bGFyKCkKLQkJCSAgICAgIHx8IF9feC5iYXNlKCkgPT0gX0l0ZXJhdG9yKCksCisJCQkgICAg ICB8fCBfX3guX01fdmFsdWVfaW5pdGlhbGl6ZWQoKSwKIAkJCSAgICAgIF9NX21lc3NhZ2Uo X19tc2dfY29weV9zaW5ndWxhcikKIAkJCSAgICAgIC5fTV9pdGVyYXRvcigqdGhpcywgInRo aXMiKQogCQkJICAgICAgLl9NX2l0ZXJhdG9yKF9feCwgIm90aGVyIikpOwpAQCAtMzQzLDYg KzM0MywxMSBAQCBuYW1lc3BhY2UgX19nbnVfZGVidWcKICAgICAgIF9NX2luY3JlbWVudGFi bGUoKSBjb25zdAogICAgICAgeyByZXR1cm4gIXRoaXMtPl9NX3Npbmd1bGFyKCkgJiYgIV9N X2lzX2VuZCgpOyB9CiAKKyAgICAgIC8vLyBJcyB0aGUgaXRlcmF0b3IgdmFsdWUtaW5pdGlh bGl6ZWQ/CisgICAgICBib29sCisgICAgICBfTV92YWx1ZV9pbml0aWFsaXplZCgpIGNvbnN0 CisgICAgICB7IHJldHVybiBfTV92ZXJzaW9uID09IDAgJiYgYmFzZSgpID09IF9JdGVyX2Jh c2V7fTsgfQorCiAgICAgICAvLyBJcyB0aGUgaXRlcmF0b3IgcmFuZ2UgWyp0aGlzLCBfX3Jo cykgdmFsaWQ/CiAgICAgICBib29sCiAgICAgICBfTV92YWxpZF9yYW5nZShjb25zdCBfU2Fm ZV9sb2NhbF9pdGVyYXRvciYgX19yaHMsCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3Jj L2MrKzExL2RlYnVnLmNjIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9kZWJ1Zy5jYwppbmRl eCA0NzA2ZGVmZWRmMS4uY2Y4ZTZmNDgwODEgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9z cmMvYysrMTEvZGVidWcuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9kZWJ1Zy5j YwpAQCAtNDI2LDcgKzQyNiw4IEBAIG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwogICBfTV9yZXNl dCgpIHRocm93ICgpCiAgIHsKICAgICBfX2F0b21pY19zdG9yZV9uKCZfTV9zZXF1ZW5jZSwg KF9TYWZlX3NlcXVlbmNlX2Jhc2UqKTAsIF9fQVRPTUlDX1JFTEVBU0UpOwotICAgIF9NX3Zl cnNpb24gPSAwOworICAgIC8vIERldGFjaCBpdGVyYXRvciBzaGFsbCBub3QgbG9vayBsaWtl IGEgdmFsdWUtaW5pdGlhbGl6ZWQgb25lLgorICAgIC8vIF9NX3ZlcnNpb24gPSAwOwogICAg IF9NX3ByaW9yID0gMDsKICAgICBfTV9uZXh0ID0gMDsKICAgfQpAQCAtNzY3LDcgKzc2OCw4 IEBAIG5hbWVzcGFjZQogCSAiYmVmb3JlLWJlZ2luIiwKIAkgImRlcmVmZXJlbmNlYWJsZSAo c3RhcnQtb2YtcmV2ZXJzZS1zZXF1ZW5jZSkiLAogCSAiZGVyZWZlcmVuY2VhYmxlIChyZXZl cnNlKSIsCi0JICJwYXN0LXRoZS1yZXZlcnNlLWVuZCIKKwkgInBhc3QtdGhlLXJldmVyc2Ut ZW5kIiwKKwkgInNpbmd1bGFyICh2YWx1ZS1pbml0aWFsaXplZCkiCiAJfTsKICAgICAgIHBy aW50X3dvcmQoY3R4LCBzdGF0ZV9uYW1lc1tpdGVyYXRvci5fTV9zdGF0ZV0pOwogICAgIH0K ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy9kZXF1 ZS9kZWJ1Zy9pdGVyYXRvcjFfbmVnLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19j b250YWluZXJzL2RlcXVlL2RlYnVnL2l0ZXJhdG9yMV9uZWcuY2MKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA5N2EwMzVjNDYxCi0tLSAvZGV2L251bGwKKysr IGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL2RlcXVlL2RlYnVnL2l0 ZXJhdG9yMV9uZWcuY2MKQEAgLTAsMCArMSwzOSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDIy IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUK Ky8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 IHVuZGVyIHRoZQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNp b24uCisvLworLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhbG9uZworLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ SU5HMy4gIElmIG5vdCBzZWUKKy8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K Ky8vCisvLyB7IGRnLWRvIHJ1biB7IHhmYWlsICotKi0qIH0gfQorLy8geyBkZy1yZXF1aXJl LWRlYnVnLW1vZGUgIiIgfQorCisjaW5jbHVkZSA8ZGVxdWU+CisKKyNpbmNsdWRlIDx0ZXN0 c3VpdGVfaG9va3MuaD4KKwordm9pZCB0ZXN0MDEoKQoreworICB0eXBlZGVmIHR5cGVuYW1l IHN0ZDo6ZGVxdWU8aW50Pjo6aXRlcmF0b3IgSXQ7CisgIHN0ZDo6ZGVxdWU8aW50PiBkcTsK KyAgZHEucHVzaF9iYWNrKDEpOworCisgIEl0IGl0ID0gSXQoKTsKKyAgVkVSSUZZKCBkcS5i ZWdpbigpICE9IGl0ICk7Cit9CisKK2ludCBtYWluKCkKK3sKKyAgdGVzdDAxKCk7CisgIHJl dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250 YWluZXJzL2RlcXVlL2RlYnVnL2l0ZXJhdG9yMl9uZWcuY2MgYi9saWJzdGRjKystdjMvdGVz dHN1aXRlLzIzX2NvbnRhaW5lcnMvZGVxdWUvZGVidWcvaXRlcmF0b3IyX25lZy5jYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDk3YjViYTE1Y2IKLS0tIC9k ZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRhaW5lcnMvZGVx dWUvZGVidWcvaXRlcmF0b3IyX25lZy5jYwpAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmln aHQgKEMpIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJh cnkgaXMgZnJlZQorLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIgdGhlCisvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLy8gRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkg bGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor Ly8KKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo ZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorLy8KKy8vIHsgZGctZG8gcnVuIHsgeGZhaWwgKi0qLSogfSB9CisvLyB7 IGRnLXJlcXVpcmUtZGVidWctbW9kZSAiIiB9CisKKyNpbmNsdWRlIDxkZXF1ZT4KKworI2lu Y2x1ZGUgPHRlc3RzdWl0ZV9ob29rcy5oPgorCit2b2lkIHRlc3QwMSgpCit7CisgIHR5cGVk ZWYgdHlwZW5hbWUgc3RkOjpkZXF1ZTxpbnQ+OjppdGVyYXRvciBJdDsKKyAgSXQgaXQ7Cisg IHsKKyAgICBzdGQ6OmRlcXVlPGludD4gZHE7CisgICAgaXQgPSBkcS5iZWdpbigpOworICB9 CisKKyAgSXQgdmFsdWVfaW5pdF9pdCA9IEl0KCk7CisgIFZFUklGWSggaXQgIT0gdmFsdWVf aW5pdF9pdCApOworfQorCitpbnQgbWFpbigpCit7CisgIHRlc3QwMSgpOworICByZXR1cm4g MDsKK30KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVy cy9mb3J3YXJkX2xpc3QvZGVidWcvaXRlcmF0b3IxX25lZy5jYyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMjNfY29udGFpbmVycy9mb3J3YXJkX2xpc3QvZGVidWcvaXRlcmF0b3IxX25l Zy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTQ3MmIwZWQy MzEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRh aW5lcnMvZm9yd2FyZF9saXN0L2RlYnVnL2l0ZXJhdG9yMV9uZWcuY2MKQEAgLTAsMCArMSwz OSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJy YXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorLy8gdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIg b3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLworLy8gVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKy8vCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworLy8gd2l0aCB0aGlz IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKy8vIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy8vCisvLyB7IGRnLWRvIHJ1biB7IHhmYWls ICotKi0qIH0gfQorLy8geyBkZy1yZXF1aXJlLWRlYnVnLW1vZGUgIiIgfQorCisjaW5jbHVk ZSA8Zm9yd2FyZF9saXN0PgorCisjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CisKK3Zv aWQgdGVzdDAxKCkKK3sKKyAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmZvcndhcmRfbGlzdDxp bnQ+OjppdGVyYXRvciBJdDsKKyAgc3RkOjpmb3J3YXJkX2xpc3Q8aW50PiBmbDsKKyAgZmwu cHVzaF9mcm9udCgxKTsKKworICBJdCBpdCA9IEl0KCk7CisgIFZFUklGWSggZmwuYmVnaW4o KSAhPSBpdCApOworfQorCitpbnQgbWFpbigpCit7CisgIHRlc3QwMSgpOworICByZXR1cm4g MDsKK30KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVy cy9mb3J3YXJkX2xpc3QvZGVidWcvaXRlcmF0b3IyX25lZy5jYyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMjNfY29udGFpbmVycy9mb3J3YXJkX2xpc3QvZGVidWcvaXRlcmF0b3IyX25l Zy5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzQyNzhlYjhj YzgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRh aW5lcnMvZm9yd2FyZF9saXN0L2RlYnVnL2l0ZXJhdG9yMl9uZWcuY2MKQEAgLTAsMCArMSw0 MiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJy YXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQorLy8gdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKy8vIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIg b3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLworLy8gVGhpcyBsaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKy8vCisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworLy8gd2l0aCB0aGlz IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKy8vIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy8vCisvLyB7IGRnLWRvIHJ1biB7IHRhcmdl dCBjKysxMSB4ZmFpbCAqLSotKiB9IH0KKy8vIHsgZGctcmVxdWlyZS1kZWJ1Zy1tb2RlICIi IH0KKworI2luY2x1ZGUgPGZvcndhcmRfbGlzdD4KKworI2luY2x1ZGUgPHRlc3RzdWl0ZV9o b29rcy5oPgorCit2b2lkIHRlc3QwMSgpCit7CisgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpm b3J3YXJkX2xpc3Q8aW50Pjo6aXRlcmF0b3IgSXQ7CisgIEl0IGl0OworICB7CisgICAgc3Rk Ojpmb3J3YXJkX2xpc3Q8aW50PiBmbDsKKyAgICBpdCA9IGZsLmJlZ2luKCk7CisgIH0KKwor ICBJdCB2YWx1ZV9pbml0X2l0e307CisgIFZFUklGWSggaXQgIT0gdmFsdWVfaW5pdF9pdCAp OworfQorCitpbnQgbWFpbigpCit7CisgIHRlc3QwMSgpOworICByZXR1cm4gMDsKK30K --------------j0lQKPFpigu7WjEuOaP0ejQk--