From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by sourceware.org (Postfix) with ESMTPS id 631D33858D37; Mon, 21 Aug 2023 20:21:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 631D33858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-3feddbb670cso25220435e9.3; Mon, 21 Aug 2023 13:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692649259; x=1693254059; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=SFjvipmlFXHIJhUAw0OBYm9bkOIWuAEGqowgLG5Cqfo=; b=N/baG+TF5eCJHemhJYGanHbDypJ4gG7TkyG9ZJZ4YukSew3zTN7Rfay4UF7eC4kfx5 KsWtsbklTorEvqKfrv6UMwYvGzLgj+sxRkcKMrzea2f1rPRec8K1lThIe9XlKx4rd+Qf RkUIpbjtYgtuDwFYjRJk8bBYQppoj2nmyjkC7DHtb53cpsBgIWy30V6J9171rI0Z1wkA G2xKXoSMv/f9xd8y96dG3VDO7tHFmzI1274IbcJyQk20y5RXkyASbBgjD+ZJDUExKpUV vAweTEP6uEr3ueuw0BzfKlZ2MxPWdLw5V8URKpeqF6Qnl9ogarDAbIQbXRsgIg1amMjn ovEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692649259; x=1693254059; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SFjvipmlFXHIJhUAw0OBYm9bkOIWuAEGqowgLG5Cqfo=; b=JNsuJ3yfMJ3Rk3bbPlimipAsba/0qOH3z9WNG8pR2Hum3F5rbtmvHQTspthUmqghTA i9DkiOTN4B5zoUjalvH2c4x2wIWCj/QoZ2It5LdlmCeiSOlTMspv3zXH/a5Jr5N+jJcT WKRqQeqgxBiRIEdwlOvgnrlWH5tTiszsEg1a+NqX7lEJLIWeqFembfGVE+lWuBLp0F7a sH+pnohB5NvdAE5wIKyr6zsQ38P7Z7uKKiWXuo8yJI9eTvYQ0Hjl530WxvkHW0CbpFNw uabEF/yVbHV53yV/UP36dLCYKmbOp+9STtmsxN9eYqSf4H3vDXfMPvXTAa/i5KBEDdX8 HyNg== X-Gm-Message-State: AOJu0YzFAJvycuSw4olaS19iGSqx10Q4DItl3WNen81tXa+wibi1BMTA JJRzcoMrV76rLSa0EaQXmCI= X-Google-Smtp-Source: AGHT+IGKwJTzPulOFkNlQyEO3e3aoekAXhPSZcz/5ixQLbwz492DyW5EQDoqXIsNF1agahxgoX9u7A== X-Received: by 2002:a05:600c:c5:b0:3fe:dcd0:2e32 with SMTP id u5-20020a05600c00c500b003fedcd02e32mr5795859wmm.19.1692649258733; Mon, 21 Aug 2023 13:20:58 -0700 (PDT) Received: from ?IPV6:2a01:e0a:1dc:b1c0:fcea:ac9e:22e:a0ab? ([2a01:e0a:1dc:b1c0:fcea:ac9e:22e:a0ab]) by smtp.gmail.com with ESMTPSA id w1-20020a05600c014100b003fee53feab5sm9482353wmm.10.2023.08.21.13.20.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 21 Aug 2023 13:20:58 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------YrPjmlwZHiWLYv68gSx1djI3" Message-ID: Date: Mon, 21 Aug 2023 22:20:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH] Fix tests sensitive to internal library allocations To: Jonathan Wakely Cc: libstdc++ , gcc-patches References: <70988952-dab7-3ba6-4694-2d90c035f80f@gmail.com> Content-Language: en-US From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= In-Reply-To: X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,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 List-Id: This is a multi-part message in MIME format. --------------YrPjmlwZHiWLYv68gSx1djI3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Here is the updated and tested patch. On 21/08/2023 20:07, Jonathan Wakely wrote: > On Mon, 21 Aug 2023 at 18:05, François Dumont via Libstdc++ > wrote: >> Hi >> >> Here is a propocal to fix tests sensitive to libstdc++ internal allocations. > Surely the enter() and exit() calls should be a constructor and destructor? > > The constructor could use count() to get the count, and then restore > it in the destructor. Something like: > > --- a/libstdc++-v3/testsuite/util/replacement_memory_operators.h > +++ b/libstdc++-v3/testsuite/util/replacement_memory_operators.h > @@ -75,12 +75,30 @@ namespace __gnu_test > counter& cntr = get(); > cntr._M_increments = cntr._M_decrements = 0; > } > + > + struct scope > + { > + scope() : _M_count(counter::count()) { } > + ~scope() { counter::get()._M_count = _M_count; } > + > + private: > + std::size_t _M_count; > + > +#if __cplusplus >= 201103L > + scope(const scope&) = delete; > + scope& operator=(const scope&) = delete; > +#else > + scope(const scope&); > + scope& operator=(const scope&); > +#endif > + }; > }; > > template > bool > check_new(Alloc a = Alloc()) > { > + __gnu_test::counter::scope s; > __gnu_test::counter::exceptions(false); > __gnu_test::counter::reset(); > (void) a.allocate(10); > > > > > > >> Tested by restoring allocation in tzdb.cc. >> >> As announced I'm also adding a test to detect such allocations. If it is >> ok let me know if you prefer to see it in a different place. > The test is a good idea. I think 17_intro/no_library_allocation.cc > would be a better place for it. > >> libstdc++: Fix tests relying on operator new/delete overload >> >> Fix tests that are checking for an allocation plan. They are failing if >> an allocation is taking place outside the test. >> >> libstdc++-v3/ChangeLog >> >> * testsuite/util/replacement_memory_operators.h >> (counter::_M_pre_enter_count): New. >> (counter::enter, counter::exit): New static methods to call >> on main() enter/exit. >> * testsuite/23_containers/unordered_map/96088.cc (main): >> Call __gnu_test::counter::enter/exit. >> * testsuite/23_containers/unordered_multimap/96088.cc >> (main): Likewise. >> * testsuite/23_containers/unordered_multiset/96088.cc >> (main): Likewise. >> * testsuite/23_containers/unordered_set/96088.cc (main): >> Likewise. >> * testsuite/ext/malloc_allocator/deallocate_local.cc >> (main): Likewise. >> * testsuite/ext/new_allocator/deallocate_local.cc (main): >> Likewise. >> * testsuite/ext/throw_allocator/deallocate_local.cc (main): >> Likewise. >> * testsuite/ext/pool_allocator/allocate_chunk.cc (started): >> New global. >> (operator new(size_t)): Check started. >> (main): Set/Unset started. >> * testsuite/ext/no_library_allocation.cc: New test case. >> >> Ok to commit ? >> >> François --------------YrPjmlwZHiWLYv68gSx1djI3 Content-Type: text/x-patch; charset=UTF-8; name="alloc_aware_tests.patch" Content-Disposition: attachment; filename="alloc_aware_tests.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMTdfaW50cm8vbm9fbGlicmFy eV9hbGxvY2F0aW9uLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8xN19pbnRyby9ub19s aWJyYXJ5X2FsbG9jYXRpb24uY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjI3OGQ0NzU3YzkzCi0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS8xN19pbnRyby9ub19saWJyYXJ5X2FsbG9jYXRpb24uY2MKQEAgLTAsMCArMSw4 IEBACisjaW5jbHVkZSA8dGVzdHN1aXRlX2hvb2tzLmg+CisjaW5jbHVkZSA8cmVwbGFjZW1l bnRfbWVtb3J5X29wZXJhdG9ycy5oPgorCitpbnQgbWFpbigpCit7CisgIFZFUklGWSggX19n bnVfdGVzdDo6Y291bnRlcjo6Y291bnQoKSA9PSAwICk7CisgIHJldHVybiAwOworfQpkaWZm IC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vub3JkZXJl ZF9tYXAvOTYwODguY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRhaW5lcnMv dW5vcmRlcmVkX21hcC85NjA4OC5jYwppbmRleCBjNmQ1MGMyMGZiZi4uY2RmMDBjOTNkODAg MTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9y ZGVyZWRfbWFwLzk2MDg4LmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29u dGFpbmVycy91bm9yZGVyZWRfbWFwLzk2MDg4LmNjCkBAIC0yNjgsNiArMjY4LDcgQEAgdGVz dDAzKCkKIGludAogbWFpbigpCiB7CisgIF9fZ251X3Rlc3Q6OmNvdW50ZXI6OnNjb3BlIHM7 CiAgIHRlc3QwMSgpOwogICB0ZXN0MDIoKTsKICAgdGVzdDExKCk7CmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRhaW5lcnMvdW5vcmRlcmVkX211bHRpbWFw Lzk2MDg4LmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vub3Jk ZXJlZF9tdWx0aW1hcC85NjA4OC5jYwppbmRleCAyMTRiYzkxYTU1OS4uZDhiOWE0MGMxNzQg MTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9y ZGVyZWRfbXVsdGltYXAvOTYwODguY2MKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8y M19jb250YWluZXJzL3Vub3JkZXJlZF9tdWx0aW1hcC85NjA4OC5jYwpAQCAtNjEsNiArNjEs NyBAQCB0ZXN0MDIoKQogaW50CiBtYWluKCkKIHsKKyAgX19nbnVfdGVzdDo6Y291bnRlcjo6 c2NvcGUgczsKICAgdGVzdDAxKCk7CiAgIHRlc3QwMigpOwogICByZXR1cm4gMDsKZGlmZiAt LWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy91bm9yZGVyZWRf bXVsdGlzZXQvOTYwODguY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRhaW5l cnMvdW5vcmRlcmVkX211bHRpc2V0Lzk2MDg4LmNjCmluZGV4IDgzOGNlOGQ1YmM1Li5kYjE3 Y2RhMGRkZCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWlu ZXJzL3Vub3JkZXJlZF9tdWx0aXNldC85NjA4OC5jYworKysgYi9saWJzdGRjKystdjMvdGVz dHN1aXRlLzIzX2NvbnRhaW5lcnMvdW5vcmRlcmVkX211bHRpc2V0Lzk2MDg4LmNjCkBAIC02 MSw2ICs2MSw3IEBAIHRlc3QwMigpCiBpbnQKIG1haW4oKQogeworICBfX2dudV90ZXN0Ojpj b3VudGVyOjpzY29wZSBzOwogICB0ZXN0MDEoKTsKICAgdGVzdDAyKCk7CiAgIHJldHVybiAw OwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3Vu b3JkZXJlZF9zZXQvOTYwODguY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRh aW5lcnMvdW5vcmRlcmVkX3NldC85NjA4OC5jYwppbmRleCAwZjdkY2UyYjM4Yy4uODMxZjJh YTEyMTAgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVy cy91bm9yZGVyZWRfc2V0Lzk2MDg4LmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUv MjNfY29udGFpbmVycy91bm9yZGVyZWRfc2V0Lzk2MDg4LmNjCkBAIC0yNjksNiArMjY5LDcg QEAgdGVzdDAzKCkKIGludAogbWFpbigpCiB7CisgIF9fZ251X3Rlc3Q6OmNvdW50ZXI6OnNj b3BlIHM7CiAgIHRlc3QwMSgpOwogICB0ZXN0MDIoKTsKICAgdGVzdDExKCk7CmRpZmYgLS1n aXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4dC9tYWxsb2NfYWxsb2NhdG9yL2RlYWxs b2NhdGVfbG9jYWwuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4dC9tYWxsb2NfYWxs b2NhdG9yL2RlYWxsb2NhdGVfbG9jYWwuY2MKaW5kZXggNzliNTgzYmQ3MTYuLjI5ZWI0MDMy YWQ5IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4dC9tYWxsb2NfYWxs b2NhdG9yL2RlYWxsb2NhdGVfbG9jYWwuY2MKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0 ZS9leHQvbWFsbG9jX2FsbG9jYXRvci9kZWFsbG9jYXRlX2xvY2FsLmNjCkBAIC0yNyw2ICsy Nyw3IEBAIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90LCB0cmFpdHNfdCwgYWxs b2NhdG9yX3Q+IHN0cmluZ190OwogCiBpbnQgbWFpbigpCiB7CisgIF9fZ251X3Rlc3Q6OmNv dW50ZXI6OnNjb3BlIHM7CiAgIHsKICAgICBzdHJpbmdfdCBzOwogICAgIHMgKz0gImJheW91 IGJlbmQiOwpAQCAtMzQsNSArMzUsNiBAQCBpbnQgbWFpbigpCiAKICAgaWYgKF9fZ251X3Rl c3Q6OmNvdW50ZXI6OmNvdW50KCkgIT0gMCkKICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJy b3IoImNvdW50IG5vdCB6ZXJvIik7CisKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9s aWJzdGRjKystdjMvdGVzdHN1aXRlL2V4dC9uZXdfYWxsb2NhdG9yL2RlYWxsb2NhdGVfbG9j YWwuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4dC9uZXdfYWxsb2NhdG9yL2RlYWxs b2NhdGVfbG9jYWwuY2MKaW5kZXggZmNkZTQ2ZTZlMTAuLmU0YTk0NjA0ZjQzIDEwMDY0NAot LS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4dC9uZXdfYWxsb2NhdG9yL2RlYWxsb2Nh dGVfbG9jYWwuY2MKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9leHQvbmV3X2FsbG9j YXRvci9kZWFsbG9jYXRlX2xvY2FsLmNjCkBAIC0yNyw2ICsyNyw3IEBAIHR5cGVkZWYgc3Rk OjpiYXNpY19zdHJpbmc8Y2hhcl90LCB0cmFpdHNfdCwgYWxsb2NhdG9yX3Q+IHN0cmluZ190 OwogCiBpbnQgbWFpbigpCiB7CisgIF9fZ251X3Rlc3Q6OmNvdW50ZXI6OnNjb3BlIHM7CiAg IHsKICAgICBzdHJpbmdfdCBzOwogICAgIHMgKz0gImJheW91IGJlbmQiOwpAQCAtMzQsNSAr MzUsNiBAQCBpbnQgbWFpbigpCiAKICAgaWYgKF9fZ251X3Rlc3Q6OmNvdW50ZXI6OmNvdW50 KCkgIT0gMCkKICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoImNvdW50IG5vdCB6ZXJv Iik7CisKICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1 aXRlL2V4dC9wb29sX2FsbG9jYXRvci9hbGxvY2F0ZV9jaHVuay5jYyBiL2xpYnN0ZGMrKy12 My90ZXN0c3VpdGUvZXh0L3Bvb2xfYWxsb2NhdG9yL2FsbG9jYXRlX2NodW5rLmNjCmluZGV4 IDE3ZjhlM2M3ZGNiLi5iMTFiNDUwYmY5ZSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rl c3RzdWl0ZS9leHQvcG9vbF9hbGxvY2F0b3IvYWxsb2NhdGVfY2h1bmsuY2MKKysrIGIvbGli c3RkYysrLXYzL3Rlc3RzdWl0ZS9leHQvcG9vbF9hbGxvY2F0b3IvYWxsb2NhdGVfY2h1bmsu Y2MKQEAgLTMyLDE2ICszMiwyOSBAQCBzdHJ1Y3QgYmlnCiAgIGNoYXIgY1s2NF07CiB9Owog Citib29sIHN0YXJ0ZWQgPSBmYWxzZTsKKwogdm9pZCoKIG9wZXJhdG9yIG5ldyhzaXplX3Qg bikgVEhST1coc3RkOjpiYWRfYWxsb2MpCiB7Ci0gIHN0YXRpYyBib29sIGZpcnN0ID0gdHJ1 ZTsKLSAgaWYgKCFmaXJzdCkKLSAgICB0aHJvdyBzdGQ6OmJhZF9hbGxvYygpOwotICBmaXJz dCA9IGZhbHNlOworICBpZiAoc3RhcnRlZCkKKyAgICB7CisgICAgICBzdGF0aWMgYm9vbCBm aXJzdCA9IHRydWU7CisgICAgICBpZiAoIWZpcnN0KQorCXRocm93IHN0ZDo6YmFkX2FsbG9j KCk7CisgICAgICBmaXJzdCA9IGZhbHNlOworICAgIH0KKwogICByZXR1cm4gc3RkOjptYWxs b2Mobik7CiB9CiAKK3ZvaWQKK29wZXJhdG9yIGRlbGV0ZSh2b2lkKiBwKSB0aHJvdygpCit7 CisgIGlmIChwKQorICAgIHN0ZDo6ZnJlZShwKTsKK30KKwogLy8gaHR0cDovL2djYy5nbnUu b3JnL21sL2xpYnN0ZGMrKy8yMDA0LTEwL21zZzAwMDk4Lmh0bWwKIHZvaWQgdGVzdDAxKCkK IHsKQEAgLTU5LDUgKzcyLDcgQEAgdm9pZCB0ZXN0MDEoKQogCiBpbnQgbWFpbigpCiB7Cisg IHN0YXJ0ZWQgPSB0cnVlOwogICB0ZXN0MDEoKTsKKyAgc3RhcnRlZCA9IGZhbHNlOwogfQpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9leHQvdGhyb3dfYWxsb2NhdG9y L2RlYWxsb2NhdGVfbG9jYWwuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2V4dC90aHJv d19hbGxvY2F0b3IvZGVhbGxvY2F0ZV9sb2NhbC5jYwppbmRleCBjNmZkMzUzOGI4Mi4uMmE2 NzVlOGI2YjQgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvZXh0L3Rocm93 X2FsbG9jYXRvci9kZWFsbG9jYXRlX2xvY2FsLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvZXh0L3Rocm93X2FsbG9jYXRvci9kZWFsbG9jYXRlX2xvY2FsLmNjCkBAIC0zMCw2 ICszMCw3IEBAIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90LCB0cmFpdHNfdCwg YWxsb2NhdG9yX3Q+IHN0cmluZ190OwogCiBpbnQgbWFpbigpCiB7CisgIF9fZ251X3Rlc3Q6 OmNvdW50ZXI6OnNjb3BlIHM7CiAgIHsKICAgICBzdHJpbmdfdCBzOwogICAgIHMgKz0gImJh eW91IGJlbmQiOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS91dGlsL3Jl cGxhY2VtZW50X21lbW9yeV9vcGVyYXRvcnMuaCBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUv dXRpbC9yZXBsYWNlbWVudF9tZW1vcnlfb3BlcmF0b3JzLmgKaW5kZXggNmIxYjNhODIzNjQu LjZmMTlmYmI4ZjZmIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlL3V0aWwv cmVwbGFjZW1lbnRfbWVtb3J5X29wZXJhdG9ycy5oCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvdXRpbC9yZXBsYWNlbWVudF9tZW1vcnlfb3BlcmF0b3JzLmgKQEAgLTc1LDEyICs3 NSwzMiBAQCBuYW1lc3BhY2UgX19nbnVfdGVzdAogICAgICAgY291bnRlciYgY250ciA9IGdl dCgpOwogICAgICAgY250ci5fTV9pbmNyZW1lbnRzID0gY250ci5fTV9kZWNyZW1lbnRzID0g MDsKICAgICB9CisKKyAgICBzdHJ1Y3Qgc2NvcGUKKyAgICB7CisgICAgICBzY29wZSgpIDog X01fY291bnQoY291bnRlcjo6Y291bnQoKSkKKyAgICAgIHsgY291bnRlcjo6Z2V0KCkuX01f Y291bnQgPSAwOyB9CisgICAgICB+c2NvcGUoKQorICAgICAgeyBjb3VudGVyOjpnZXQoKS5f TV9jb3VudCA9IF9NX2NvdW50OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgc3RkOjpzaXpl X3QgX01fY291bnQ7CisKKyNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCisgICAgICBzY29w ZShjb25zdCBzY29wZSYpID0gZGVsZXRlOworICAgICAgc2NvcGUmIG9wZXJhdG9yPShjb25z dCBzY29wZSYpID0gZGVsZXRlOworI2Vsc2UKKyAgICAgIHNjb3BlKGNvbnN0IHNjb3BlJik7 CisgICAgICBzY29wZSYgb3BlcmF0b3I9KGNvbnN0IHNjb3BlJik7CisjZW5kaWYKKyAgICB9 OwogICB9OwogCiAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCBib29sIHVzZXNfZ2xvYmFs X25ldz4KICAgICBib29sCiAgICAgY2hlY2tfbmV3KEFsbG9jIGEgPSBBbGxvYygpKQogICAg IHsKKyAgICAgIF9fZ251X3Rlc3Q6OmNvdW50ZXI6OnNjb3BlIHM7CiAgICAgICBfX2dudV90 ZXN0Ojpjb3VudGVyOjpleGNlcHRpb25zKGZhbHNlKTsKICAgICAgICh2b2lkKSBhLmFsbG9j YXRlKDEwKTsKICAgICAgIGNvbnN0IGJvb2wgX19iKChfX2dudV90ZXN0Ojpjb3VudGVyOjpj b3VudCgpID4gMCkgPT0gdXNlc19nbG9iYWxfbmV3KTsK --------------YrPjmlwZHiWLYv68gSx1djI3--