From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 8230C3858014 for ; Thu, 9 Dec 2021 23:30:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8230C3858014 Received: from mail-yb1-f197.google.com (mail-yb1-f197.google.com [209.85.219.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-275-ECGZLUGfM-SHXqOFzQpq1w-1; Thu, 09 Dec 2021 18:30:23 -0500 X-MC-Unique: ECGZLUGfM-SHXqOFzQpq1w-1 Received: by mail-yb1-f197.google.com with SMTP id h5-20020a255f45000000b005ffd939127bso13163407ybm.10 for ; Thu, 09 Dec 2021 15:30:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nYBAYddlMGAOS7xD5y+mq+x68urLYH4qUK6Dk1HDm44=; b=xWvsA+ybb4XLqqZwIMvtwQucmhBFK3buXKQuCtkk2hiwJ6n/YjwYTnyTMU7B6EW44m EY8H1eVGlMHnhFAZIyOCORshNMFpo4oKJCyX4bzHbxNtQFRbFc2l6rzebc/GmiZs0XTA Lc4xF7I19Lu4I2OIOBACV5GMXolSeikofuSNfuO+3o1VxZwKN9fiYHlpat4TYzInnXim 1EvjLpfJxMWaOwOYei4tHNmyrqUFVCjM0rTfxPH3JtyrOvLuaHB/A2zvhyNEKRSoL0Tf y6yHiUTFWfcqqhCegsZRXsRuS5UwTXQt08VlXDmSA2vRtASDxeEMgX6LsFIPhPZYaIjq jJYg== X-Gm-Message-State: AOAM5308ERfOjAzvY5kPNTTPLpoBSyRc6ag2xMhn9T0U/SxnMwUpxek/ Fes6H0nlF2lfew1802lhLzXUonHJ5REraQFChBwsEZkzqZT9H+1ZRQEQK6s5oEIWAgz0AobtC3y 69Ajn0DKrSULgKKv8srMKiFX23iCT/Zw= X-Received: by 2002:a05:6902:1107:: with SMTP id o7mr10259737ybu.120.1639092623295; Thu, 09 Dec 2021 15:30:23 -0800 (PST) X-Google-Smtp-Source: ABdhPJxPoP4XSD75DhyRZWndSuLM/sZMHtM6wgkssLsiQpUjR+q5fTyyT0O0ue6PHJfzHhhJdUcRI2j8rXepZwAZtZE= X-Received: by 2002:a05:6902:1107:: with SMTP id o7mr10259694ybu.120.1639092623037; Thu, 09 Dec 2021 15:30:23 -0800 (PST) MIME-Version: 1.0 References: <20211207205803.1142706-1-jwakely@redhat.com> <871r2onmfg.fsf@oldenburg.str.redhat.com> <87tufkm6bb.fsf@oldenburg.str.redhat.com> In-Reply-To: From: Jonathan Wakely Date: Thu, 9 Dec 2021 23:30:11 +0000 Message-ID: Subject: Re: [PATCH] libstdc++: Allow std::condition_variable waits to be cancelled [PR103382] To: Jonathan Wakely Cc: Florian Weimer , "Jonathan Wakely via Libstdc++" , gcc-patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="0000000000008cfb6005d2befdcb" X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_STOCKGEN, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, URI_HEX autolearn=unavailable autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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, 09 Dec 2021 23:30:30 -0000 --0000000000008cfb6005d2befdcb Content-Type: text/plain; charset="UTF-8" On Wed, 8 Dec 2021 at 17:26, Jonathan Wakely wrote: > > On Wed, 8 Dec 2021 at 00:36, Jonathan Wakely wrote: > > > > On Tue, 7 Dec 2021 at 21:52, Florian Weimer wrote: > > > > > > * Jonathan Wakely: > > > > > > > On Tue, 7 Dec 2021, 21:20 Florian Weimer via Libstdc++, > > > > wrote: > > > > > > > > * Jonathan Wakely via Libstdc: > > > > > > > > > If necessary we could keep the terminate-on-cancellation behaviour as > > > > > _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 > > > > > and export the new behaviour as @@GLIBCXX_3.4.30, although this patch > > > > > doesn't do that. > > > > > > > > Note that if this fix escapes into the wild and then you have to make > > > > the symbol version change, you will break newer applications. In a few > > > > cases in glibc, we proactively added aliases at a different symbol > > > > version, but with the same implementation (at first). > > > > > > > > To be safe, we probably should preserve the old behaviour for the old > > > > version of the symbol. If we decide that the new behaviour is always > > > > preferable, we could change that later by making the old symbol an > > > > alias for the new. If we don't decide that, we'll be glad we made it a > > > > separate symbol. > > > > > > On the other hand, with separate versions, it's possible to reintroduce > > > the old behavior at a later date, as a bugfix. It's not strictly > > > necessary to do that work upfront. It's just nice to have this option. > > > > Ah yes, a new symbol version gives us more flexibility in every direction. > > > > > > I'll see if I can get it working with two versioned symbols. We don't > > > > actually do that in libstdc++ currently, we only have a single version > > > > of every symbol. > > > > > > Ping me if you want to discuss options. 8-> > > > > Thanks. I'll try it and let you know how I get on. > > After resolving a PEBKAC issue, here's an incremental diff that > preserves the old behaviour for the existing @GLIBCXX_3.4.11 symbol, > but adds a new @@GLIBCXX_3.4.30 symbol that supports cancellation via > __forced_unwind. Pushed to trunk now, as attached. --0000000000008cfb6005d2befdcb Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kwzlcx2l0 Y29tbWl0IDllMThhMjUzMzFmYTI1YzM5MDcyNDlmZWRlNjVhMDJjNjgxN2IwNmUKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBUdWUgRGVjIDcgMTU6 MTE6MTUgMjAyMQoKICAgIGxpYnN0ZGMrKzogQWxsb3cgc3RkOjpjb25kaXRpb25fdmFyaWFibGUg d2FpdHMgdG8gYmUgY2FuY2VsbGVkIFtQUjEwMzM4Ml0KICAgIAogICAgc3RkOjpjb25kaXRpb25f dmFyaWFibGU6OndhaXQodW5pcXVlX2xvY2s8bXV0ZXg+JikgaXMgaW5jb3JyZWN0bHkgbWFya2Vk CiAgICBub2V4Y2VwdCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgX19mb3JjZWRfdW53aW5kIGV4Y2Vw dGlvbiB1c2VkIGJ5IE5QVEwKICAgIGNhbmNlbGxhdGlvbiB3aWxsIHRlcm1pbmF0ZSB0aGUgcHJv Y2Vzcy4gSXQgc2hvdWxkIGFsbG93IGV4Y2VwdGlvbnMgdG8KICAgIHBhc3MgdGhyb3VnaCwgc28g dGhhdCBhIHRocmVhZCBjYW4gYmUgY2xlYW5seSBjYW5jZWxsZWQgd2hlbiB3YWl0aW5nIG9uCiAg ICBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KICAgIAogICAgVGhlIG5ldyBiZWhhdmlvdXIgaXMgZXhw b3J0ZWQgYXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgc3ltYm9sLCB0byBhdm9pZAogICAgYW4gQUJJ IGJyZWFrIGZvciBleGlzdGluZyBjb2RlIGxpbmtlZCB0byB0aGUgbm9uLXRocm93aW5nIGRlZmlu aXRpb24gb2YKICAgIHRoZSBmdW5jdGlvbi4gQ29kZSBsaW5rZWQgYWdhaW5zdCBvbGRlciByZWxl YXNlcyB3aWxsIGhhdmUgYSByZWZlcmVuY2UKICAgIHRvIHRoZSBAR0xJQkNYWF8zLjQuMTEgdmVy c2lvbiwgYW5kY29kZSBjb21waWxlZCBhZ2FpbnN0IHRoZSBuZXcKICAgIGxpYnN0ZGMrKyB3aWxs IGdldCBhIHJlZmVyZW5jZSB0byB0aGUgQEBHTElCQ1hYXzMuNC4zMCB2ZXJzaW9uLgogICAgCiAg ICBsaWJzdGRjKystdjMvQ2hhbmdlTG9nOgogICAgCiAgICAgICAgICAgIFBSIGxpYnN0ZGMrKy8x MDMzODIKICAgICAgICAgICAgKiBjb25maWcvYWJpL3ByZS9nbnUudmVyIChHTElCQ1hYXzMuNC4x MSk6IERvIG5vdCBleHBvcnQgb2xkCiAgICAgICAgICAgIHN5bWJvbCBpZiAuc3ltdmVyIHJlbmFt aW5nIGlzIHN1cHBvcnRlZC4KICAgICAgICAgICAgKEdMSUJDWFhfMy40LjMwKTogRXhwb3J0IG5l dyBzeW1ib2wgaWYgLnN5bXZlciByZW5hbWluZyBpcwogICAgICAgICAgICBzdXBwb3J0ZWQuCiAg ICAgICAgICAgICogZG9jL3htbC9tYW51YWwvZXZvbHV0aW9uLnhtbDogRG9jdW1lbnQgY2hhbmdl LgogICAgICAgICAgICAqIGRvYy9odG1sL21hbnVhbC9hcGkuaHRtbDogUmVnZW5lcmF0ZS4KICAg ICAgICAgICAgKiBpbmNsdWRlL2JpdHMvc3RkX211dGV4LmggKF9fY29uZHZhcjo6d2FpdCwgX19j b25kdmFyOjp3YWl0X3VudGlsKToKICAgICAgICAgICAgUmVtb3ZlIG5vZXhjZXB0LgogICAgICAg ICAgICAqIGluY2x1ZGUvc3RkL2NvbmRpdGlvbl92YXJpYWJsZSAoY29uZGl0aW9uX3ZhcmlhYmxl Ojp3YWl0KToKICAgICAgICAgICAgTGlrZXdpc2UuCiAgICAgICAgICAgICogc3JjL2MrKzExL2Nv bmRpdGlvbl92YXJpYWJsZS5jYyAoY29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0KToKICAgICAgICAg ICAgTGlrZXdpc2UuCiAgICAgICAgICAgICogc3JjL2MrKzExL2NvbXBhdGliaWxpdHktY29uZHZh ci5jYyAoX19ub3Rocm93X3dhaXRfY3Y6OndhaXQpOgogICAgICAgICAgICBEZWZpbmUgbm90aHJv dyB3cmFwcGVyIGFyb3VuZCBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZTo6d2FpdCBhbmQKICAgICAg ICAgICAgZXhwb3J0IHRoZSBvbGQgc3ltYm9sIGFzIGFuIGFsaWFzIHRvIGl0LgogICAgICAgICAg ICAqIHRlc3RzdWl0ZS8zMF90aHJlYWRzL2NvbmRpdGlvbl92YXJpYWJsZS9tZW1iZXJzLzEwMzM4 Mi5jYzogTmV3IHRlc3QuCgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9hYmkvcHJl L2dudS52ZXIgYi9saWJzdGRjKystdjMvY29uZmlnL2FiaS9wcmUvZ251LnZlcgppbmRleCA4ZjNj N2IzODI3ZS4uYjc0NzM1MWExYjkgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvYWJp L3ByZS9nbnUudmVyCisrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvYWJpL3ByZS9nbnUudmVyCkBA IC0xMjg1LDcgKzEyODUsNiBAQCBHTElCQ1hYXzMuNC4xMSB7CiAgICAgIyBjb25kaXRpb25fdmFy aWFibGUKICAgICBfWk5TdDE4Y29uZGl0aW9uX3ZhcmlhYmxlMTBub3RpZnlfYWxsRXY7CiAgICAg X1pOU3QxOGNvbmRpdGlvbl92YXJpYWJsZTEwbm90aWZ5X29uZUV2OwotICAgIF9aTlN0MThjb25k aXRpb25fdmFyaWFibGU0d2FpdEVSU3QxMXVuaXF1ZV9sb2NrSVN0NW11dGV4RTsKICAgICBfWk5T dDE4Y29uZGl0aW9uX3ZhcmlhYmxlQzFFdjsKICAgICBfWk5TdDE4Y29uZGl0aW9uX3ZhcmlhYmxl QzJFdjsKICAgICBfWk5TdDE4Y29uZGl0aW9uX3ZhcmlhYmxlRDFFdjsKQEAgLTEyOTUsNiArMTI5 NCwxMiBAQCBHTElCQ1hYXzMuNC4xMSB7CiAgICAgX1pOU3QyMmNvbmRpdGlvbl92YXJpYWJsZV9h bnlEMUV2OwogICAgIF9aTlN0MjJjb25kaXRpb25fdmFyaWFibGVfYW55RDJFdjsKIAorI2lmbmRl ZiBIQVZFX1NZTVZFUl9TWU1CT0xfUkVOQU1JTkdfUlVOVElNRV9TVVBQT1JUCisgICAgIyBUaGUg b3JpZ2luYWwgZGVmaW5pdGlvbiBvZiB0aGlzIHN5bWJvbCBnZXRzIHZlcnNpb25lZCBhcyBAR0xJ QkNYWF8zLjQuMTEKKyAgICAjIGlmICIuc3ltdmVyIiBpcyBzdXBwb3J0ZWQsIG9yIGFzIEBAR0xJ QkNYWF8zLjQuMTEgb3RoZXJ3aXNlLgorICAgIF9aTlN0MThjb25kaXRpb25fdmFyaWFibGU0d2Fp dEVSU3QxMXVuaXF1ZV9sb2NrSVN0NW11dGV4RTsKKyNlbmRpZgorCiAgICAgIyB0aHJlYWQKICAg ICBfWk5TdDZ0aHJlYWQ0am9pbkV2OwogICAgIF9aTlN0NnRocmVhZDZkZXRhY2hFdjsKQEAgLTI0 MDEsNiArMjQwNiwxMSBAQCBHTElCQ1hYXzMuNC4zMCB7CiAKICAgICBfWlN0MjFfX2dsaWJjeHhf YXNzZXJ0X2ZhaWwqOwogCisjaWZkZWYgSEFWRV9TWU1WRVJfU1lNQk9MX1JFTkFNSU5HX1JVTlRJ TUVfU1VQUE9SVAorICAgICMgVGhlIG5ldyBkZWZpbml0aW9uIG9mIHRoaXMgc3ltYm9sIGdldHMg dmVyc2lvbmVkIGFzIEBAR0xJQkNYWF8zLjQuMzAKKyAgICBfWk5TdDE4Y29uZGl0aW9uX3Zhcmlh YmxlNHdhaXRFUlN0MTF1bmlxdWVfbG9ja0lTdDVtdXRleEU7CisjZW5kaWYKKwogfSBHTElCQ1hY XzMuNC4yOTsKIAogIyBTeW1ib2xzIGluIHRoZSBzdXBwb3J0IGxpYnJhcnkgKGxpYnN1cGMrKykg aGF2ZSB0aGVpciBvd24gdGFnLgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2RvYy94bWwvbWFu dWFsL2V2b2x1dGlvbi54bWwgYi9saWJzdGRjKystdjMvZG9jL3htbC9tYW51YWwvZXZvbHV0aW9u LnhtbAppbmRleCBhMTY5MTAyZWY0My4uMzRlNDRlZTkzZTQgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMr Ky12My9kb2MveG1sL21hbnVhbC9ldm9sdXRpb24ueG1sCisrKyBiL2xpYnN0ZGMrKy12My9kb2Mv eG1sL21hbnVhbC9ldm9sdXRpb24ueG1sCkBAIC0xMDQxLDYgKzEwNDEsMTMgQEAgbm8gbG9uZ2Vy IGRlcml2ZXMgZnJvbSA8Y2xhc3NuYW1lPl9fZ251X2N4eDo6bmV3X2FsbG9jYXRvcjwvY2xhc3Nu YW1lPjsKIHRoZXkgYm90aCBkZXJpdmUgZnJvbSA8Y2xhc3NuYW1lPnN0ZDo6X19uZXdfYWxsb2Nh dG9yPC9jbGFzc25hbWU+IGluc3RlYWQuCiA8L3BhcmE+CiAKKzxwYXJhPgorPGZ1bmN0aW9uPnN0 ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0PC9mdW5jdGlvbj4gY2hhbmdlZCB0byBiZQorPGNv ZGU+bm9leGNlcHQoZmFsc2UpPC9jb2RlPiB0byBhbGxvdyB0aHJlYWQgY2FuY2VsbGF0aW9uIGV4 Y2VwdGlvbnMgdG8KK2JlIHRocm93biBmcm9tIDxmdW5jdGlvbj5wdGhyZWFkX2NvbmRfd2FpdDwv ZnVuY3Rpb24+IHdpdGhvdXQgYWJvcnRpbmcKK3RoZSBwcm9jZXNzLgorPC9wYXJhPgorCiA8L3Nl Y3Rpb24+CiAKIDwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Jp dHMvc3RkX211dGV4LmggYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3N0ZF9tdXRleC5oCmlu ZGV4IDM1N2M2ODkxNDM4Li42NjE4YTU0Mzk2ZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2lu Y2x1ZGUvYml0cy9zdGRfbXV0ZXguaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3N0 ZF9tdXRleC5oCkBAIC0xNDksNyArMTQ5LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZF UlNJT04KIAogICAgIC8vIEV4cGVjdHM6IENhbGxpbmcgdGhyZWFkIGhhcyBsb2NrZWQgX19tLgog ICAgIHZvaWQKLSAgICB3YWl0KG11dGV4JiBfX20pIG5vZXhjZXB0CisgICAgd2FpdChtdXRleCYg X19tKQogICAgIHsKICAgICAgIGludCBfX2UgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpCiAJ PSBfX2d0aHJlYWRfY29uZF93YWl0KCZfTV9jb25kLCBfX20ubmF0aXZlX2hhbmRsZSgpKTsKQEAg LTE1NywxNCArMTU3LDE0IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiAgICAg fQogCiAgICAgdm9pZAotICAgIHdhaXRfdW50aWwobXV0ZXgmIF9fbSwgdGltZXNwZWMmIF9fYWJz X3RpbWUpIG5vZXhjZXB0CisgICAgd2FpdF91bnRpbChtdXRleCYgX19tLCB0aW1lc3BlYyYgX19h YnNfdGltZSkKICAgICB7CiAgICAgICBfX2d0aHJlYWRfY29uZF90aW1lZHdhaXQoJl9NX2NvbmQs IF9fbS5uYXRpdmVfaGFuZGxlKCksICZfX2Fic190aW1lKTsKICAgICB9CiAKICNpZmRlZiBfR0xJ QkNYWF9VU0VfUFRIUkVBRF9DT05EX0NMT0NLV0FJVAogICAgIHZvaWQKLSAgICB3YWl0X3VudGls KG11dGV4JiBfX20sIGNsb2NraWRfdCBfX2Nsb2NrLCB0aW1lc3BlYyYgX19hYnNfdGltZSkgbm9l eGNlcHQKKyAgICB3YWl0X3VudGlsKG11dGV4JiBfX20sIGNsb2NraWRfdCBfX2Nsb2NrLCB0aW1l c3BlYyYgX19hYnNfdGltZSkKICAgICB7CiAgICAgICBwdGhyZWFkX2NvbmRfY2xvY2t3YWl0KCZf TV9jb25kLCBfX20ubmF0aXZlX2hhbmRsZSgpLCBfX2Nsb2NrLAogCQkJICAgICAmX19hYnNfdGlt ZSk7CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9zdGQvY29uZGl0aW9uX3Zhcmlh YmxlIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL2NvbmRpdGlvbl92YXJpYWJsZQppbmRleCA0 ZmNlYzZhYTczZC4uMzkzMGNmNDg3ZTkgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRl L3N0ZC9jb25kaXRpb25fdmFyaWFibGUKKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL2Nv bmRpdGlvbl92YXJpYWJsZQpAQCAtOTIsNyArOTIsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BB Q0VfVkVSU0lPTgogICAgIG5vdGlmeV9hbGwoKSBub2V4Y2VwdDsKIAogICAgIHZvaWQKLSAgICB3 YWl0KHVuaXF1ZV9sb2NrPG11dGV4PiYgX19sb2NrKSBub2V4Y2VwdDsKKyAgICB3YWl0KHVuaXF1 ZV9sb2NrPG11dGV4PiYgX19sb2NrKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9QcmVkaWNh dGU+CiAgICAgICB2b2lkCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2MrKzExL2NvbXBh dGliaWxpdHktY29uZHZhci5jYyBiL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvY29tcGF0aWJpbGl0 eS1jb25kdmFyLmNjCmluZGV4IDU3NWQ3ODA1NWNiLi4wN2MzOWQ0OGY1YSAxMDA2NDQKLS0tIGEv bGlic3RkYysrLXYzL3NyYy9jKysxMS9jb21wYXRpYmlsaXR5LWNvbmR2YXIuY2MKKysrIGIvbGli c3RkYysrLXYzL3NyYy9jKysxMS9jb21wYXRpYmlsaXR5LWNvbmR2YXIuY2MKQEAgLTU0LDQgKzU0 LDM1IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCiBfR0xJQkNYWF9FTkRfTkFN RVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlIHN0ZAogCisjaWYgISBfR0xJQkNYWF9JTkxJ TkVfVkVSU0lPTgorLy8gWFhYIEdMSUJDWFhfQUJJIERlcHJlY2F0ZWQKKy8vIGdjYy0xMi4xCisv LyBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZTo6d2FpdCBjaGFuZ2VkIHRvIG5vZXhjZXB0KGZhbHNl KQorI2lmIGRlZmluZWQoX0dMSUJDWFhfU1lNVkVSX0dOVSkgJiYgZGVmaW5lZChfR0xJQkNYWF9T SEFSRUQpIFwKKyAgICAmJiBkZWZpbmVkKF9HTElCQ1hYX0hBVkVfQVNfU1lNVkVSX0RJUkVDVElW RSkgXAorICAgICYmIGRlZmluZWQoX0dMSUJDWFhfSEFWRV9TWU1WRVJfU1lNQk9MX1JFTkFNSU5H X1JVTlRJTUVfU1VQUE9SVCkKK25hbWVzcGFjZSBfX2dudV9jeHggX0dMSUJDWFhfVklTSUJJTElU WShkZWZhdWx0KQoreworc3RydWN0IF9fbm90aHJvd193YWl0X2N2IDogc3RkOjpjb25kaXRpb25f dmFyaWFibGUKK3sKKyAgdm9pZCB3YWl0KHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4mKSBu b2V4Y2VwdDsKK307CisKK19fYXR0cmlidXRlX18oKHVzZWQpKQordm9pZAorX19ub3Rocm93X3dh aXRfY3Y6OndhaXQoc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiYgbG9jaykgbm9leGNlcHQK K3sKKyAgdGhpcy0+Y29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0KGxvY2spOworfQorfSAvLyBuYW1l c3BhY2UgX19nbnVfY3h4CisKKy8vIEV4cG9ydCBhIG5vZXhjZXB0IHdyYXBwZXIgYXJvdW5kIHN0 ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0CisvLyB3aXRoIHRoZSBvcmlnaW5hbCBAR0xJQkNY WF8zLjQuMTEgc3ltYm9sIHZlcnNpb24uCithc20oCisgICIuc3ltdmVyIF9aTjlfX2dudV9jeHgx N19fbm90aHJvd193YWl0X2N2NHdhaXRFUlN0MTF1bmlxdWVfbG9ja0lTdDVtdXRleEUsIgorICAi X1pOU3QxOGNvbmRpdGlvbl92YXJpYWJsZTR3YWl0RVJTdDExdW5pcXVlX2xvY2tJU3Q1bXV0ZXhF QEdMSUJDWFhfMy40LjExIgorKTsKKyNlbmRpZgorI2VuZGlmCisKICNlbmRpZiAvLyBfR0xJQkNY WF9IQVNfR1RIUkVBRFMgJiYgX0dMSUJDWFhfVVNFX0M5OV9TVERJTlRfVFIxCmRpZmYgLS1naXQg YS9saWJzdGRjKystdjMvc3JjL2MrKzExL2NvbmRpdGlvbl92YXJpYWJsZS5jYyBiL2xpYnN0ZGMr Ky12My9zcmMvYysrMTEvY29uZGl0aW9uX3ZhcmlhYmxlLmNjCmluZGV4IGNhNzkwMmUwMzczLi4y ZDdiOGExOWI5ZCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb25kaXRpb25f dmFyaWFibGUuY2MKKysrIGIvbGlic3RkYysrLXYzL3NyYy9jKysxMS9jb25kaXRpb25fdmFyaWFi bGUuY2MKQEAgLTM2LDcgKzM2LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04K ICAgY29uZGl0aW9uX3ZhcmlhYmxlOjp+Y29uZGl0aW9uX3ZhcmlhYmxlKCkgbm9leGNlcHQgPSBk ZWZhdWx0OwogCiAgIHZvaWQKLSAgY29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0KHVuaXF1ZV9sb2Nr PG11dGV4PiYgX19sb2NrKSBub2V4Y2VwdAorICBjb25kaXRpb25fdmFyaWFibGU6OndhaXQodW5p cXVlX2xvY2s8bXV0ZXg+JiBfX2xvY2spCiAgIHsKICAgICBfTV9jb25kLndhaXQoKl9fbG9jay5t dXRleCgpKTsKICAgfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8zMF90aHJl YWRzL2NvbmRpdGlvbl92YXJpYWJsZS9tZW1iZXJzLzEwMzM4Mi5jYyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMzBfdGhyZWFkcy9jb25kaXRpb25fdmFyaWFibGUvbWVtYmVycy8xMDMzODIuY2MK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY3Mzk2ZWJmMzIzCi0tLSAv ZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8zMF90aHJlYWRzL2NvbmRpdGlv bl92YXJpYWJsZS9tZW1iZXJzLzEwMzM4Mi5jYwpAQCAtMCwwICsxLDY2IEBACisvLyB7IGRnLW9w dGlvbnMgIi1wdGhyZWFkIiB9CisvLyB7IGRnLWRvIHJ1biB7IHRhcmdldCB7ICotKi1saW51eCog Ki0qLWdudSogfSB9IH0KKy8vIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGMrKzExIH0K Ky8vIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHB0aHJlYWQgfQorLy8geyBkZy1yZXF1 aXJlLWd0aHJlYWRzICIiIH0KKworI2luY2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJsZT4KKyNpbmNs dWRlIDxjaHJvbm8+CisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dGhyZWFkPgorCisvLyBQ UiBsaWJzdGRjKysvMTAzMzgyCisKK3RlbXBsYXRlPHR5cGVuYW1lIEY+Cit2b2lkCit0ZXN0X2Nh bmNlbChGIHdhaXQpCit7CisgIHN0ZDo6bXV0ZXggbTsKKyAgc3RkOjpjb25kaXRpb25fdmFyaWFi bGUgY3Y7CisgIGJvb2wgd2FpdGluZyA9IGZhbHNlOworCisgIHN0ZDo6dGhyZWFkIHQoWyZdIHsK KyAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2sobSk7CisgICAgd2FpdGluZyA9 IHRydWU7CisgICAgd2FpdChjdiwgbG9jayk7IC8vIF9fZm9yY2VkX3Vud2luZCBleGNlcHRpb24g c2hvdWxkIG5vdCB0ZXJtaW5hdGUgcHJvY2Vzcy4KKyAgfSk7CisKKyAgLy8gRW5zdXJlIHRoZSBj b25kaXRpb24gdmFyaWFibGUgaXMgd2FpdGluZyBiZWZvcmUgd2UgY2FuY2VsLgorICAvLyBUaGlz IHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYmVjYXVzZSBwdGhyZWFkX211dGV4X2xvY2sgaXMgbm90 CisgIC8vIGEgY2FuY2VsbGF0aW9uIHBvaW50LCBidXQgbm8gaGFybSBpbiBtYWtpbmcgc3VyZSB3 ZSB0ZXN0IHdoYXQKKyAgLy8gd2UgaW50ZW5kIHRvIHRlc3Q6IHRoYXQgY2FuY2VsIGR1cmluZyBh IHdhaXQgZG9lc24ndCBhYm9ydC4KKyAgd2hpbGUgKHRydWUpCisgIHsKKyAgICBzdGQ6OnVuaXF1 ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2sobSk7CisgICAgaWYgKHdhaXRpbmcpCisgICAgICBicmVh azsKKyAgfQorCisgIHB0aHJlYWRfY2FuY2VsKHQubmF0aXZlX2hhbmRsZSgpKTsKKyAgdC5qb2lu KCk7Cit9CisKK2ludCBtYWluKCkKK3sKKyAgdGVzdF9jYW5jZWwoCisgICAgICBbXShzdGQ6OmNv bmRpdGlvbl92YXJpYWJsZSYgY3YsIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4mIGwpIHsK Kwljdi53YWl0KGwpOworICAgICAgfSk7CisKKyAgdGVzdF9jYW5jZWwoCisgICAgICBbXShzdGQ6 OmNvbmRpdGlvbl92YXJpYWJsZSYgY3YsIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4mIGwp IHsKKwljdi53YWl0KGwsIFtdeyByZXR1cm4gZmFsc2U7IH0pOworICAgICAgfSk7CisKKyAgdXNp bmcgbWlucyA9IHN0ZDo6Y2hyb25vOjptaW51dGVzOworCisgIHRlc3RfY2FuY2VsKAorICAgICAg W10oc3RkOjpjb25kaXRpb25fdmFyaWFibGUmIGN2LCBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0 ZXg+JiBsKSB7CisJY3Yud2FpdF9mb3IobCwgbWlucygxKSk7CisgICAgICB9KTsKKworICB0ZXN0 X2NhbmNlbCgKKyAgICAgIFtdKHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlJiBjdiwgc3RkOjp1bmlx dWVfbG9jazxzdGQ6Om11dGV4PiYgbCkgeworCWN2LndhaXRfdW50aWwobCwgc3RkOjpjaHJvbm86 OnN5c3RlbV9jbG9jazo6bm93KCkgKyBtaW5zKDEpKTsKKyAgICAgIH0pOworfQo= --0000000000008cfb6005d2befdcb--