From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by sourceware.org (Postfix) with ESMTPS id 737B03858430; Wed, 10 Aug 2022 18:31:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 737B03858430 Received: by mail-wr1-x42c.google.com with SMTP id bs25so250459wrb.2; Wed, 10 Aug 2022 11:31:24 -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=C0gfK96mTBzjDn0uMPEJ4c8VQFZ8AKNJCkn1v67j48M=; b=ixDbUYQXlH3xJXtAG/hbsvAMno7nZMRfnRGYmtHfTOKTLmB4f/l3W8OqewngD/4JbY qAmIisyQ65QF1N6JiBOmwdjdcGodLFKAL9fHT7lQfk7DYJNIRmzTaSgE34PvOmVROJyx u5UikgwwMUiYvZi2UHxJdPchXpGPpXiCWSwEP54pnZ2tPdh8lk7uGnOuOsgugkKkh6nB DAUgbMjrefzmc5PaCgFSeJhRp52Cw33ey+iUR0B4dBOgf46HBptjMDIDJhX3SE3bem+2 PBo1Bjg+GW8dTgnQWSF+QjaENmp6Z9ONnCFtw4Lp2YCAVL4jJC3uXTFlDDdJnTqpYp7Z SyvA== X-Gm-Message-State: ACgBeo2NiEpao8F24bfu4h84PLda0NzMei4CdDY0UPSrhvyl5Dv+wllH aj1RW3E11+Ijp6BR9l1/xDfndv4iSRo= X-Google-Smtp-Source: AA6agR7sN6QdicTufZGByDekYwoEPfa26IC5dZWA0WR/cTHVZMLlNYRQ+nsptqYjZqmL6zORrANr0Q== X-Received: by 2002:a5d:59a4:0:b0:222:cf54:70e1 with SMTP id p4-20020a5d59a4000000b00222cf5470e1mr8960075wrr.637.1660156282708; Wed, 10 Aug 2022 11:31:22 -0700 (PDT) Received: from [10.40.1.1] ([109.190.253.15]) by smtp.googlemail.com with ESMTPSA id t11-20020a5d534b000000b00222c96d8656sm9299751wrv.114.2022.08.10.11.31.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 10 Aug 2022 11:31:21 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------MpAU9X00p8XvsYT5QvLMQYEi" Message-ID: Date: Wed, 10 Aug 2022 20:31:17 +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] Complete __gnu_test::basic_string<>::compare support X-Spam-Status: No, score=-7.6 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_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, 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 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: Wed, 10 Aug 2022 18:31:27 -0000 This is a multi-part message in MIME format. --------------MpAU9X00p8XvsYT5QvLMQYEi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Here is another patch to complete __gnu_debug::basic_string<> Standard conformity. This one is adding the missing compare overloads. I also would like to propose to change how __gnu_debug::basic_string<> is tested. I considered activating checks when _GLIBCXX_ASSERTIONS is defined but it turns out that to do so this light-debug mode should then also consider _GLIBCXX_DEBUG_PEDANTIC. I prefer to avoid this. So I restored previous behavior. I'm now checking for the _GLIBCXX_TEST_DEBUG_STRING macro to force usage of . This way I am testing it using: make check-debug CXXFLAGS=-D_GLIBCXX_TEST_DEBUG_STRING     libstdc++: Add __gnu_debug::basic_string<>::compare overloads     Rather than adding those implementations we are ading a:     using _Base::compare;     so that any compare method not implemented at __gnu_debug::basic_string     level are injected from the base class.     Also review how __gnu_debug::basic_string is tested. Now require to define     _GLIBCXX_TEST_DEBUG_STRING when running 'make check-debug'.     libstdc++-v3/ChangeLog             * include/debug/string: Add using _Base::compare.             (__gnu_debug::basic_string<>::compare(const basic_string<>&)): Remove.             (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&)):             Remove.             (__gnu_debug::basic_string<>::compare(size_type, size_type, const basic_string<>&,             size_type, size_type)): Remove.             * testsuite/util/testsuite_string.h [_GLIBCXX_TEST_DEBUG_STRING]: Include .             * testsuite/21_strings/basic_string/operations/compare/char/1.cc: Include testsuite_string.h             and use __gnu_test::string.             * testsuite/21_strings/basic_string/operations/compare/char/13650.cc: Likewise.             * testsuite/21_strings/basic_string/operations/compare/char/2.cc: Likewise.             * testsuite/21_strings/basic_string/operations/rfind/char/1.cc: Likewise.             * testsuite/21_strings/basic_string/operations/rfind/char/2.cc: Likewise.             * testsuite/21_strings/basic_string/operations/rfind/char/3.cc: Likewise.             * testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc: Include testsuite_string.h             and use __gnu_test::wstring.             * testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc: Likewise.             * testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc: Likewise. Tested under Linux x86_64. Ok to commit ? François --------------MpAU9X00p8XvsYT5QvLMQYEi Content-Type: text/x-patch; charset=UTF-8; name="debug_string.patch" Content-Disposition: attachment; filename="debug_string.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL3N0cmluZyBiL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2RlYnVnL3N0cmluZwppbmRleCBhNDQ4MmRiNGFmNS4uYzMyZWI0 MWVhY2QgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL3N0cmluZwor KysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9zdHJpbmcKQEAgLTEwMDIsMjIgKzEw MDIsMTEgQEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAgICAgICBzdWJzdHIoc2l6ZV90eXBl IF9fcG9zID0gMCwgc2l6ZV90eXBlIF9fbiA9IF9CYXNlOjpucG9zKSBjb25zdAogICAgICAg eyByZXR1cm4gYmFzaWNfc3RyaW5nKF9CYXNlOjpzdWJzdHIoX19wb3MsIF9fbikpOyB9CiAK LSAgICAgIGludAotICAgICAgY29tcGFyZShjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKSBj b25zdAotICAgICAgeyByZXR1cm4gX0Jhc2U6OmNvbXBhcmUoX19zdHIpOyB9Ci0KLSAgICAg IGludAotICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19uMSwK LQkgICAgICBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKSBjb25zdAotICAgICAgeyByZXR1 cm4gX0Jhc2U6OmNvbXBhcmUoX19wb3MxLCBfX24xLCBfX3N0cik7IH0KLQotICAgICAgaW50 Ci0gICAgICBjb21wYXJlKHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBjb25z dCBiYXNpY19zdHJpbmcmIF9fc3RyLAotCSAgICAgIHNpemVfdHlwZSBfX3BvczIsIHNpemVf dHlwZSBfX24yKSBjb25zdAotICAgICAgeyByZXR1cm4gX0Jhc2U6OmNvbXBhcmUoX19wb3Mx LCBfX24xLCBfX3N0ciwgX19wb3MyLCBfX24yKTsgfQorICAgICAgdXNpbmcgX0Jhc2U6OmNv bXBhcmU7CiAKKyAgICAgIF9HTElCQ1hYMjBfQ09OU1RFWFBSCiAgICAgICBpbnQKLSAgICAg IGNvbXBhcmUoY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0CisgICAgICBjb21wYXJlKGNvbnN0 IF9DaGFyVCogX19zKSBjb25zdCBfR0xJQkNYWF9OT0VYQ0VQVAogICAgICAgewogCV9fZ2xp YmN4eF9jaGVja19zdHJpbmcoX19zKTsKIAlyZXR1cm4gX0Jhc2U6OmNvbXBhcmUoX19zKTsK QEAgLTEwMjUsNiArMTAxNCw3IEBAIG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwogCiAgICAgICAv LyAgX0dMSUJDWFhfUkVTT0xWRV9MSUJfREVGRUNUUwogICAgICAgLy8gIDUuIHN0cmluZzo6 Y29tcGFyZSBzcGVjaWZpY2F0aW9uIHF1ZXN0aW9uYWJsZQorICAgICAgX0dMSUJDWFgyMF9D T05TVEVYUFIKICAgICAgIGludAogICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MxLCBz aXplX3R5cGUgX19uMSwgY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0CiAgICAgICB7CkBAIC0x MDM0LDYgKzEwMjQsNyBAQCBuYW1lc3BhY2UgX19nbnVfZGVidWcKIAogICAgICAgLy8gIF9H TElCQ1hYX1JFU09MVkVfTElCX0RFRkVDVFMKICAgICAgIC8vICA1LiBzdHJpbmc6OmNvbXBh cmUgc3BlY2lmaWNhdGlvbiBxdWVzdGlvbmFibGUKKyAgICAgIF9HTElCQ1hYMjBfQ09OU1RF WFBSCiAgICAgICBpbnQKICAgICAgIGNvbXBhcmUoc2l6ZV90eXBlIF9fcG9zMSwgc2l6ZV90 eXBlIF9fbjEsY29uc3QgX0NoYXJUKiBfX3MsCiAJICAgICAgc2l6ZV90eXBlIF9fbjIpIGNv bnN0CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFz aWNfc3RyaW5nL29wZXJhdGlvbnMvY29tcGFyZS9jaGFyLzEuY2MgYi9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvY29tcGFyZS9j aGFyLzEuY2MKaW5kZXggMGJlZjBkMmRkM2QuLmMwNGI4M2M0ODk2IDEwMDY0NAotLS0gYS9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlv bnMvY29tcGFyZS9jaGFyLzEuY2MKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9z dHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2NvbXBhcmUvY2hhci8xLmNjCkBAIC0y OSw3ICsyOSw3IEBACiAvLyBOQiBjb21wYXJlIHNob3VsZCBiZSB0aG91Z2h0IG9mIGFzIGEg bGV4b2dyYXBoaWNhbCBjb21wYXJlLCBpZSBob3cKIC8vIHRoaW5ncyB3b3VsZCBiZSBzb3J0 ZWQgaW4gYSBkaWN0aW9uYXJ5LgogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHRl c3RzdWl0ZV9zdHJpbmcuaD4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPHRlc3Rz dWl0ZV9ob29rcy5oPgogCkBAIC02Nyw3ICs2Nyw3IEBAIHRlc3RfdmFsdWUoaW50IHJlc3Vs dCwgd2FudF92YWx1ZSBleHBlY3RlZCkKIGludCAKIHRlc3QwMSgpCiB7Ci0gIHVzaW5nIG5h bWVzcGFjZSBzdGQ7CisgIHVzaW5nIG5hbWVzcGFjZSBfX2dudV90ZXN0OwogCiAgIHN0cmlu ZyAJc3RyXzAoImNvc3RhIHJpY2EiKTsKICAgc3RyaW5nIAlzdHJfMSgiY29zdGEgbWFyYmVs bGEiKTsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9i YXNpY19zdHJpbmcvb3BlcmF0aW9ucy9jb21wYXJlL2NoYXIvMTM2NTAuY2MgYi9saWJzdGRj KystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvY29t cGFyZS9jaGFyLzEzNjUwLmNjCmluZGV4IDk2ZmQyZjE0YjMzLi5jZTk1NjIzNWY4MyAxMDA2 NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmlu Zy9vcGVyYXRpb25zL2NvbXBhcmUvY2hhci8xMzY1MC5jYworKysgYi9saWJzdGRjKystdjMv dGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvY29tcGFyZS9j aGFyLzEzNjUwLmNjCkBAIC0xOSwxMyArMTksMTMgQEAKIAogLy8gMjEuMy42LjggYmFzaWNf c3RyaW5nOjpjb21wYXJlIFtsaWIuc3RyaW5nOjpjb21wYXJlXQogCi0jaW5jbHVkZSA8c3Ry aW5nPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV9zdHJpbmcuaD4KICNpbmNsdWRlIDx0ZXN0c3Vp dGVfaG9va3MuaD4KIAogLy8gbGlic3RkYysrLzEzNjUwCiB2b2lkIHRlc3QwMSgpCiB7Ci0g IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CisgIHVzaW5nIG5hbWVzcGFjZSBfX2dudV90ZXN0Owog CiAgIGNvbnN0IGNoYXIgbGl0XzAxW10gPSB7ICd3JywgJ2UnLCAnXDAnLCAncicsICdkJyB9 OwogICBjb25zdCBjaGFyIGxpdF8wMltdID0geyAndycsICdlJywgJ2knLCAnXDAnLCAnZCcg fTsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNp Y19zdHJpbmcvb3BlcmF0aW9ucy9jb21wYXJlL2NoYXIvMi5jYyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9jb21wYXJlL2No YXIvMi5jYwppbmRleCAxN2U4NzUyNmMyNi4uZmNhMTU0MzU1ZmYgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9u cy9jb21wYXJlL2NoYXIvMi5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0 cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvY29tcGFyZS9jaGFyLzIuY2MKQEAgLTE5 LDE0ICsxOSwxNCBAQAogCiAvLyBbc3RyaW5nOjpjb21wYXJlXQogCi0jaW5jbHVkZSA8c3Ry aW5nPgorI2luY2x1ZGUgPHRlc3RzdWl0ZV9zdHJpbmcuaD4KICNpbmNsdWRlIDx0ZXN0c3Vp dGVfaG9va3MuaD4KIAogdm9pZAogdGVzdDAzKCkKIHsKICAgc3RkOjpzdHJpbmdfdmlldyBz dHIxKCJmb29iYXIiKTsKLSAgc3RkOjpzdHJpbmcgc3RyMigiZm9vYmFyIik7CisgIF9fZ251 X3Rlc3Q6OnN0cmluZyBzdHIyKCJmb29iYXIiKTsKIAogICBhdXRvIHggPSBzdHIyLmNvbXBh cmUoc3RyMSk7CiAgIFZFUklGWSAoeCA9PSAwKTsKQEAgLTUyLDcgKzUyLDcgQEAgdGVzdDAz KCkKIHZvaWQKIHRlc3QwNCgpCiB7Ci0gIGNvbnN0IHN0ZDo6c3RyaW5nIHN0cigiYSIpOwor ICBjb25zdCBfX2dudV90ZXN0OjpzdHJpbmcgc3RyKCJhIik7CiAgIGNoYXIgYyA9ICdhJzsK ICAgaW50IHJlcyA9IHN0ci5jb21wYXJlKDAsIDEsICZjLCAxKTsKICAgVkVSSUZZICggIXJl cyApOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jh c2ljX3N0cmluZy9vcGVyYXRpb25zL2NvbXBhcmUvd2NoYXJfdC8xLmNjIGIvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2NvbXBh cmUvd2NoYXJfdC8xLmNjCmluZGV4IDk3YTg3M2E1NWNmLi5hYTVjMTY4MDA0NSAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9v cGVyYXRpb25zL2NvbXBhcmUvd2NoYXJfdC8xLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9jb21wYXJlL3djaGFy X3QvMS5jYwpAQCAtMjksNyArMjksNyBAQAogLy8gTkIgY29tcGFyZSBzaG91bGQgYmUgdGhv dWdodCBvZiBhcyBhIGxleG9ncmFwaGljYWwgY29tcGFyZSwgaWUgaG93CiAvLyB0aGluZ3Mg d291bGQgYmUgc29ydGVkIGluIGEgZGljdGlvbmFyeS4KIAotI2luY2x1ZGUgPHN0cmluZz4K KyNpbmNsdWRlIDx0ZXN0c3VpdGVfc3RyaW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hv b2tzLmg+CiAKIGVudW0gd2FudF92YWx1ZSB7bHQ9MCwgej0xLCBndD0yfTsKQEAgLTY3LDcg KzY3LDcgQEAgdGVzdF92YWx1ZShpbnQgcmVzdWx0LCB3YW50X3ZhbHVlIGV4cGVjdGVkKQog aW50IAogdGVzdDAxKCkKIHsKLSAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKyAgdXNpbmcgbmFt ZXNwYWNlIF9fZ251X3Rlc3Q7CiAKICAgd3N0cmluZyAJc3RyXzAoTCJjb3N0YSByaWNhIik7 CiAgIHdzdHJpbmcgCXN0cl8xKEwiY29zdGEgbWFyYmVsbGEiKTsKZGlmZiAtLWdpdCBhL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9u cy9jb21wYXJlL3djaGFyX3QvMTM2NTAuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIx X3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvY29tcGFyZS93Y2hhcl90LzEzNjUw LmNjCmluZGV4IDE4MjVjNmIzYjMwLi5mM2RkNGViYWY0MyAxMDA2NDQKLS0tIGEvbGlic3Rk YysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2Nv bXBhcmUvd2NoYXJfdC8xMzY1MC5jYworKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIx X3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvY29tcGFyZS93Y2hhcl90LzEzNjUw LmNjCkBAIC0xOSwxMyArMTksMTMgQEAKIAogLy8gMjEuMy42LjggYmFzaWNfc3RyaW5nOjpj b21wYXJlIFtsaWIuc3RyaW5nOjpjb21wYXJlXQogCi0jaW5jbHVkZSA8c3RyaW5nPgorI2lu Y2x1ZGUgPHRlc3RzdWl0ZV9zdHJpbmcuaD4KICNpbmNsdWRlIDx0ZXN0c3VpdGVfaG9va3Mu aD4KIAogLy8gbGlic3RkYysrLzEzNjUwCiB2b2lkIHRlc3QwMSgpCiB7Ci0gIHVzaW5nIG5h bWVzcGFjZSBzdGQ7CisgIHVzaW5nIG5hbWVzcGFjZSBfX2dudV90ZXN0OwogCiAgIGNvbnN0 IHdjaGFyX3QgbGl0XzAxW10gPSB7IEwndycsIEwnZScsIEwnXDAnLCBMJ3InLCBMJ2QnIH07 CiAgIGNvbnN0IHdjaGFyX3QgbGl0XzAyW10gPSB7IEwndycsIEwnZScsIEwnaScsIEwnXDAn LCBMJ2QnIH07CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmlu Z3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvY29tcGFyZS93Y2hhcl90LzIuY2MgYi9saWJz dGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMv Y29tcGFyZS93Y2hhcl90LzIuY2MKaW5kZXggZGQ3MDNjMTk4NjguLmM2ZDIxOWE0MmVjIDEw MDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3Ry aW5nL29wZXJhdGlvbnMvY29tcGFyZS93Y2hhcl90LzIuY2MKKysrIGIvbGlic3RkYysrLXYz L3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL2NvbXBhcmUv d2NoYXJfdC8yLmNjCkBAIC0xOSwxNCArMTksMTQgQEAKIAogLy8gW3N0cmluZzo6Y29tcGFy ZV0KIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0c3VpdGVfc3RyaW5nLmg+ CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIHZvaWQKIHRlc3QwMygpCiB7CiAg IHN0ZDo6d3N0cmluZ192aWV3IHN0cjEoTCJmb29iYXIiKTsKLSAgc3RkOjp3c3RyaW5nIHN0 cjIoTCJmb29iYXIiKTsKKyAgX19nbnVfdGVzdDo6d3N0cmluZyBzdHIyKEwiZm9vYmFyIik7 CiAKICAgYXV0byB4ID0gc3RyMi5jb21wYXJlKHN0cjEpOwogICBWRVJJRlkgKHggPT0gMCk7 CkBAIC01Miw3ICs1Miw3IEBAIHRlc3QwMygpCiB2b2lkCiB0ZXN0MDQoKQogewotICBjb25z dCBzdGQ6OndzdHJpbmcgc3RyKEwiYSIpOworICBjb25zdCBfX2dudV90ZXN0Ojp3c3RyaW5n IHN0cihMImEiKTsKIAogICB3Y2hhcl90IGMgPSBMJ2EnOwogICBpbnQgcmVzID0gc3RyLmNv bXBhcmUoMCwgMSwgJmMsIDEpOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL3JmaW5kL2NoYXIvMS5jYyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0 aW9ucy9yZmluZC9jaGFyLzEuY2MKaW5kZXggNzM4NDNiMDNhOWEuLjc2ZmNiMDc5MTE3IDEw MDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3Ry aW5nL29wZXJhdGlvbnMvcmZpbmQvY2hhci8xLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9yZmluZC9jaGFyLzEu Y2MKQEAgLTE3LDIzICsxNywyMyBAQAogLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKIC8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0c3VpdGVfc3Ry aW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIC8vIDIxLjMuNi4yIGJh c2ljX3N0cmluZyByZmluZAogdm9pZCB0ZXN0MDEodm9pZCkKIHsKLSAgdHlwZWRlZiBzdGQ6 OnN0cmluZzo6c2l6ZV90eXBlIGNzaXplX3R5cGU7Ci0gIHR5cGVkZWYgc3RkOjpzdHJpbmc6 OmNvbnN0X3JlZmVyZW5jZSBjcmVmOwotICB0eXBlZGVmIHN0ZDo6c3RyaW5nOjpyZWZlcmVu Y2UgcmVmOwotICBjc2l6ZV90eXBlIG5wb3MgPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgdHlw ZWRlZiBfX2dudV90ZXN0OjpzdHJpbmc6OnNpemVfdHlwZSBjc2l6ZV90eXBlOworICB0eXBl ZGVmIF9fZ251X3Rlc3Q6OnN0cmluZzo6Y29uc3RfcmVmZXJlbmNlIGNyZWY7CisgIHR5cGVk ZWYgX19nbnVfdGVzdDo6c3RyaW5nOjpyZWZlcmVuY2UgcmVmOworICBjc2l6ZV90eXBlIG5w b3MgPSBfX2dudV90ZXN0OjpzdHJpbmc6Om5wb3M7CiAgIGNzaXplX3R5cGUgY3N6MDEsIGNz ejAyOwogCiAgIGNvbnN0IGNoYXIgc3RyX2xpdDAxW10gPSAibWF2ZSI7Ci0gIGNvbnN0IHN0 ZDo6c3RyaW5nIHN0cjAxKCJtYXZlcmlja3MsIHNhbnRhIGNydXoiKTsKLSAgc3RkOjpzdHJp bmcgc3RyMDIoc3RyX2xpdDAxKTsKLSAgc3RkOjpzdHJpbmcgc3RyMDMoInMsIHMiKTsKLSAg c3RkOjpzdHJpbmcgc3RyMDQ7CisgIGNvbnN0IF9fZ251X3Rlc3Q6OnN0cmluZyBzdHIwMSgi bWF2ZXJpY2tzLCBzYW50YSBjcnV6Iik7CisgIF9fZ251X3Rlc3Q6OnN0cmluZyBzdHIwMihz dHJfbGl0MDEpOworICBfX2dudV90ZXN0OjpzdHJpbmcgc3RyMDMoInMsIHMiKTsKKyAgX19n bnVfdGVzdDo6c3RyaW5nIHN0cjA0OwogCiAgIC8vIHNpemVfdHlwZSByZmluZChjb25zdCBz dHJpbmcmLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3Q7CiAgIGNzejAxID0gc3RyMDEucmZp bmQoc3RyMDEpOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJp bmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25zL3JmaW5kL2NoYXIvMi5jYyBiL2xpYnN0ZGMr Ky12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9yZmlu ZC9jaGFyLzIuY2MKaW5kZXggNTg3OTY1NTA1ZDUuLjlmZWNmY2Y4MGYxIDEwMDY0NAotLS0g YS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIxX3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJh dGlvbnMvcmZpbmQvY2hhci8yLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFf c3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0aW9ucy9yZmluZC9jaGFyLzIuY2MKQEAgLTE3 LDE0ICsxNywxNCBAQAogLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ SU5HMy4gIElmIG5vdCBzZWUKIC8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K IAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx0ZXN0c3VpdGVfc3RyaW5nLmg+CiAj aW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CiAKIC8vIDIxLjMuNi40IGJhc2ljX3N0cmlu Zzo6ZmluZF9sYXN0X29mCiB2b2lkIHRlc3QwMigpCiB7Ci0gIHN0ZDo6c3RyaW5nIHooImFi Iik7Ci0gIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zOworICBfX2dudV90ZXN0OjpzdHJp bmcgeigiYWIiKTsKKyAgX19nbnVfdGVzdDo6c3RyaW5nOjpzaXplX3R5cGUgcG9zOwogICBw b3MgPSB6LmZpbmRfbGFzdF9vZigiYWIiKTsKICAgVkVSSUZZKCBwb3MgPT0gMSApOwogICBw b3MgPSB6LmZpbmRfbGFzdF9vZigiWGEiKTsKQEAgLTMyLDEzICszMiwxMyBAQCB2b2lkIHRl c3QwMigpCiAgIHBvcyA9IHouZmluZF9sYXN0X29mKCJYYiIpOwogICBWRVJJRlkoIHBvcyA9 PSAxICk7CiAgIHBvcyA9IHouZmluZF9sYXN0X29mKCJYWVoiKTsKLSAgVkVSSUZZKCBwb3Mg PT0gc3RkOjpzdHJpbmc6Om5wb3MgKTsKKyAgVkVSSUZZKCBwb3MgPT0gX19nbnVfdGVzdDo6 c3RyaW5nOjpucG9zICk7CiAgIHBvcyA9IHouZmluZF9sYXN0X29mKCdhJyk7CiAgIFZFUklG WSggcG9zID09IDAgKTsKICAgcG9zID0gei5maW5kX2xhc3Rfb2YoJ2InKTsKICAgVkVSSUZZ KCBwb3MgPT0gMSApOwogICBwb3MgPSB6LmZpbmRfbGFzdF9vZignWCcpOwotICBWRVJJRlko IHBvcyA9PSBzdGQ6OnN0cmluZzo6bnBvcyApOworICBWRVJJRlkoIHBvcyA9PSBfX2dudV90 ZXN0OjpzdHJpbmc6Om5wb3MgKTsKIH0KIAogaW50IG1haW4oKQpkaWZmIC0tZ2l0IGEvbGli c3RkYysrLXYzL3Rlc3RzdWl0ZS8yMV9zdHJpbmdzL2Jhc2ljX3N0cmluZy9vcGVyYXRpb25z L3JmaW5kL2NoYXIvMy5jYyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9i YXNpY19zdHJpbmcvb3BlcmF0aW9ucy9yZmluZC9jaGFyLzMuY2MKaW5kZXggMWZmOWM5NGJh NWIuLjY5NDcxZTY3YmYxIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIx X3N0cmluZ3MvYmFzaWNfc3RyaW5nL29wZXJhdGlvbnMvcmZpbmQvY2hhci8zLmNjCisrKyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjFfc3RyaW5ncy9iYXNpY19zdHJpbmcvb3BlcmF0 aW9ucy9yZmluZC9jaGFyLzMuY2MKQEAgLTE3LDIzICsxNywyMyBAQAogLy8gd2l0aCB0aGlz IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKIC8vIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNs dWRlIDx0ZXN0c3VpdGVfc3RyaW5nLmg+CiAjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+ CiAKIC8vIDIxLjMuNi42IGJhc2ljX3N0cmluZzo6ZmluZF9sYXN0X25vdF9vZgogdm9pZCB0 ZXN0MDMoKQogewotICB0eXBlZGVmIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY3NpemVfdHlw ZTsKLSAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBwb3M7Ci0gIGNzaXplX3R5cGUgbnBvcyA9 IHN0ZDo6c3RyaW5nOjpucG9zOworICB0eXBlZGVmIF9fZ251X3Rlc3Q6OnN0cmluZzo6c2l6 ZV90eXBlIGNzaXplX3R5cGU7CisgIF9fZ251X3Rlc3Q6OnN0cmluZzo6c2l6ZV90eXBlIHBv czsKKyAgY3NpemVfdHlwZSBucG9zID0gX19nbnVfdGVzdDo6c3RyaW5nOjpucG9zOwogCi0g IHN0ZDo6c3RyaW5nIHg7CisgIF9fZ251X3Rlc3Q6OnN0cmluZyB4OwogICBwb3MgPSB4LmZp bmRfbGFzdF9ub3Rfb2YoJ1gnKTsKICAgVkVSSUZZKCBwb3MgPT0gbnBvcyApOwogICBwb3Mg PSB4LmZpbmRfbGFzdF9ub3Rfb2YoIlhZWiIpOwogICBWRVJJRlkoIHBvcyA9PSBucG9zICk7 CiAKLSAgc3RkOjpzdHJpbmcgeSgiYSIpOworICBfX2dudV90ZXN0OjpzdHJpbmcgeSgiYSIp OwogICBwb3MgPSB5LmZpbmRfbGFzdF9ub3Rfb2YoJ1gnKTsKICAgVkVSSUZZKCBwb3MgPT0g MCApOwogICBwb3MgPSB5LmZpbmRfbGFzdF9ub3Rfb2YoJ2EnKTsKQEAgLTQzLDcgKzQzLDcg QEAgdm9pZCB0ZXN0MDMoKQogICBwb3MgPSB5LmZpbmRfbGFzdF9ub3Rfb2YoImEiKTsKICAg VkVSSUZZKCBwb3MgPT0gbnBvcyApOwogCi0gIHN0ZDo6c3RyaW5nIHooImFiIik7CisgIF9f Z251X3Rlc3Q6OnN0cmluZyB6KCJhYiIpOwogICBwb3MgPSB6LmZpbmRfbGFzdF9ub3Rfb2Yo J1gnKTsKICAgVkVSSUZZKCBwb3MgPT0gMSApOwogICBwb3MgPSB6LmZpbmRfbGFzdF9ub3Rf b2YoIlhZWiIpOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS91dGlsL3Rl c3RzdWl0ZV9zdHJpbmcuaCBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvdXRpbC90ZXN0c3Vp dGVfc3RyaW5nLmgKaW5kZXggNzEyMWZmOGVjNmQuLjdlNjFkOTg0YmRiIDEwMDY0NAotLS0g YS9saWJzdGRjKystdjMvdGVzdHN1aXRlL3V0aWwvdGVzdHN1aXRlX3N0cmluZy5oCisrKyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvdXRpbC90ZXN0c3VpdGVfc3RyaW5nLmgKQEAgLTEs NyArMSw3IEBACiAjaWZuZGVmIF9HTElCQ1hYX1RFU1RTVUlURV9TVFJJTkdfSAogI2RlZmlu ZSBfR0xJQkNYWF9URVNUU1VJVEVfU1RSSU5HX0gKIAotI2lmZGVmIF9HTElCQ1hYX0RFQlVH CisjaWYgZGVmaW5lZChfR0xJQkNYWF9ERUJVRykgJiYgZGVmaW5lZChfR0xJQkNYWF9URVNU X0RFQlVHX1NUUklORykKICMgaW5jbHVkZSA8ZGVidWcvc3RyaW5nPgogbmFtZXNwYWNlIF9f Z251X3Rlc3QKIHsK --------------MpAU9X00p8XvsYT5QvLMQYEi--