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.133.124]) by sourceware.org (Postfix) with ESMTP id DD49C3896C32 for ; Mon, 9 Aug 2021 14:42:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DD49C3896C32 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-158-hm3IYAHbMvyUTYTTUd1QiQ-1; Mon, 09 Aug 2021 10:42:22 -0400 X-MC-Unique: hm3IYAHbMvyUTYTTUd1QiQ-1 Received: by mail-wr1-f71.google.com with SMTP id o10-20020a5d684a0000b0290154758805bcso5394105wrw.3 for ; Mon, 09 Aug 2021 07:42:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=fG68yFjw3dJ8In0FWtMoyGoa0VMi4KmOaj/b9Ymv25g=; b=B+G5bl2fVDq80d9wY2d3ZRRAd0mTF+vujx9zwOMKmDZwGhUXGmqjC7WbAYrjUZLmNH 5h52ws4NzsdPbQUy0fnuH7BMyrREfP7h7hGGH3djfNV21E6GNIyCypwKzMcRxNghUG1W RgEw4f4Z3jZ3bxUafu75M28u+Yj0JmCJQKyTbQnNTlI9VpjZ6FUie5Uvmk8R2i4xjPhl CFhBNjRqPyh+vax+WAs0+lZoq7OFx+NlI1EMQ66WTs+kQpf8c282+DJ5/o8Sqxl3KV/e obHA7Ncq0k+zL786GQMJY8ASrz8xKCw1Af/tmfmgCiJ5+cRNJvm1on9VC6w0NoTH6mNZ SCpQ== X-Gm-Message-State: AOAM532jZbSH5ZaIbXRD+mZwcb94S8p33/0U0aamXSYbCMdwIBxScpWg HNirsYsOnfOJ3J7rZQF0oaZhPJD75qjPHHmxT16NcZ3QZ8GIJAIOJJ6x2iXHQTVN9FExhQdlfqc Jzgcv6QMm0RefrMQ6BsD4SloqiyrnjR8= X-Received: by 2002:a7b:cd0d:: with SMTP id f13mr1830777wmj.22.1628520141524; Mon, 09 Aug 2021 07:42:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJuQNY6BfMOA6QiJSoXiYXHZt/MIjDEURctpIgXCkmsncouGBq4qOL6cs1dQE6b6w4gIkL7E97k5Y2Fxn68Bw= X-Received: by 2002:a7b:cd0d:: with SMTP id f13mr1830748wmj.22.1628520141135; Mon, 09 Aug 2021 07:42:21 -0700 (PDT) MIME-Version: 1.0 References: <7f94ec40-6cec-59c1-2281-066e1a15c267@redhat.com> <5ecf624e-a191-0cd2-19bb-cae92a88cdbf@gmail.com> In-Reply-To: From: Jonathan Wakely Date: Mon, 9 Aug 2021 15:42:10 +0100 Message-ID: Subject: Re: trunk -D_GLIBCXX_DEBUG #include fails To: =?UTF-8?Q?Fran=C3=A7ois_Dumont?= Cc: "libstdc++" , gcc Patches X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="00000000000085cb7805c92164a3" X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP 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: Mon, 09 Aug 2021 14:42:30 -0000 --00000000000085cb7805c92164a3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, 9 Aug 2021 at 15:27, Jonathan Wakely wrote: > > On Mon, 9 Aug 2021 at 13:05, Fran=C3=A7ois Dumont via Libstdc++ > wrote: > > > > On 09/08/21 12:05 pm, Jonathan Wakely via Libstdc++ wrote: > > > On Mon, 9 Aug 2021 at 10:51, Stephan Bergmann via Libstdc++ > > > wrote: > > >> Not sure why I started to experience this now with a recent > > >> GCC/libstdc++ trunk build: > > >> > > >>> $ cat test.cc > > >>> #include > > >>> $ gcc/trunk/inst/bin/g++ -D_GLIBCXX_DEBUG -fsyntax-only test.cc > > >>> In file included from /home/sbergman/gcc/trunk/inst/include/c++/12.= 0.0/bits/regex_automaton.h:401, > > >>> from /home/sbergman/gcc/trunk/inst/include/c++/12= .0.0/regex:60, > > >>> from test.cc:1: > > >>> /home/sbergman/gcc/trunk/inst/include/c++/12.0.0/bits/regex_automat= on.tcc: In member function =E2=80=98std::__detail::_StateSeq<_TraitsT> std:= :__detail::_StateSeq<_TraitsT>::_M_clone()=E2=80=99: > > >>> /home/sbergman/gcc/trunk/inst/include/c++/12.0.0/bits/regex_automat= on.tcc:197:12: error: =E2=80=98map=E2=80=99 is not a member of =E2=80=98std= =E2=80=99 > > >>> 197 | std::map<_StateIdT, _StateIdT> __m; > > >>> | ^~~ > > >> [...] > > >>> In file included from /home/sbergman/gcc/trunk/inst/include/c++/12.= 0.0/regex:62, > > >>> from test.cc:1: > > >>> /home/sbergman/gcc/trunk/inst/include/c++/12.0.0/bits/regex_compile= r.h: At global scope: > > >>> /home/sbergman/gcc/trunk/inst/include/c++/12.0.0/bits/regex_compile= r.h:541:12: error: =E2=80=98vector=E2=80=99 in namespace =E2=80=98std=E2=80= =99 does not name a template type > > >>> 541 | std::vector<_CharT> _M_char_se= t; > > >>> | ^~~~~~ > > >> [...] > > >> > > >> where neither the use of std::map in bits/regex_automaton.tcc nor th= e > > >> use of std::vector in bits/regex_compiler.h are in _GLIBCXX_DEBUG-on= ly > > >> code (but compiling without -D_GLIBCXX_DEBUG succeeded). > > > With that flag the container implementations are defined in namespace > > > __gnu_cxx1998, and std::map is supposed to refer to __gnu_debug::map. > > > But the debug map is declared in a header which isn't included by > > > since I replaced with . > > > > > > > > > > > >> Anyway, what would apparently fix it for me is > > >> > > >>> diff --git a/libstdc++-v3/include/std/regex b/libstdc++-v3/include/= std/regex > > >>> index 04fb8b2d971..29fd2956fd0 100644 > > >>> --- a/libstdc++-v3/include/std/regex > > >>> +++ b/libstdc++-v3/include/std/regex > > >>> @@ -42,6 +42,11 @@ > > >>> #include > > >>> #include > > >>> > > >>> +#if defined _GLIBCXX_DEBUG > > >>> +#include > > >>> +#include > > >>> +#endif > > >>> + > > > I think we can do this instead: > > > > > > --- a/libstdc++-v3/include/std/regex > > > +++ b/libstdc++-v3/include/std/regex > > > @@ -63,6 +63,11 @@ > > > #include > > > #include > > > > > > +#ifdef _GLIBCXX_DEBUG > > > +# include > > > +# include > > > +#endif > > > + > > > #if __cplusplus >=3D 201703L && _GLIBCXX_USE_CXX11_ABI > > > namespace std _GLIBCXX_VISIBILITY(default) > > > { > > > > > > > > > I'll test it, thanks for the report. > > > > > We are confident about the usage of those containers in the regex > > implementation, aren't we ? > > > > You can normally avoid the includes if you use for example > > _GLIBCXX_STD_C::map rather than std::map. > > Yes, I have a patch to do that. This is what I'm testing. --00000000000085cb7805c92164a3 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_ks4qtebn0 Y29tbWl0IDI4ZWFlMGE3NmE1MWJjMzkyMDJhNWYwMzhlNjMyN2M2NDA4NzJmZDIKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBNb24gQXVnIDkgMTE6 NDk6MDkgMjAyMQoKICAgIGxpYnN0ZGMrKzogSW5jbHVkZSBkZWJ1ZyBtb2RlIG1hcCBhbmQgdmVj dG9yIGluIDxyZWdleD4KICAgIAogICAgVGhlIHN0ZDo6cmVnZXggY29kZSB1c2VzIHN0ZDo6bWFw IGFuZCBzdGQ6OnZlY3Rvciwgd2hpY2ggbWVhbnMgdGhhdCB3aGVuCiAgICBfR0xJQkNYWF9ERUJV RyBpcyBkZWZpbmVkIGl0IHVzZXMgdGhlIGRlYnVnIHZlcnNpb25zIG9mIHRob3NlCiAgICBjb250 YWluZXJzLiBUaGF0IG5vIGxvbmdlciBjb21waWxlcywgYmVjYXVzZSBJIGNoYW5nZWQgPHJlZ2V4 PiB0bwogICAgaW5jbHVkZSA8Yml0cy9zdGxfbWFwLmg+IGFuZCA8Yml0cy9zdGxfdmVjdG9yLmg+ IGluc3RlYWQgb2YgPG1hcD4gYW5kCiAgICA8dmVjdG9yPiwgc28gdGhlIGRlYnVnIHZlcnNpb25z IGFyZW4ndCBkZWZpbmVkLCBhbmQgc3RkOjptYXAgZG9lc24ndAogICAgY29tcGlsZS4KICAgIAog ICAgVXNpbmcgc3RkOjptYXAgYW5kIHN0ZDo6dmVjdG9yIGlzIHByb2JhYmx5IGEgbWlzdGFrZSwg YW5kIHdlIHNob3VsZAogICAgcXVhbGlmeSB0aGVtIHdpdGggX0dMSUJDWFhfU1REX0MgaW5zdGVh ZCBzbyB0aGF0IHRoZSBkZWJ1ZyB2ZXJzaW9ucwogICAgYXJlbid0IHVzZWQuIFdlIGRvIG5vdCBu ZWVkIHRoZSBvdmVyaGVhZCBvZiBjaGVja2luZyBvdXIgb3duIHVzZXMgb2YKICAgIHRob3NlIGNv bnRhaW5lcnMsIHdoaWNoIHNob3VsZCBiZSBjb3JyZWN0IGFueXdheS4gVGhlIGV4Y2VwdGlvbiBp cyB0aGUKICAgIHZlY3RvciBiYXNlIGNsYXNzIG9mIHN0ZDo6bWF0Y2hfcmVzdWx0cywgd2hpY2gg ZXhwb3NlcyBpdGVyYXRvcnMgdG8KICAgIHVzZXJzLCBzbyBjYW4gYmVuZWZpdCBmcm9tIGRlYnVn IG1vZGUgY2hlY2tzIGZvciBpdHMgaXRlcmF0b3JzLiBGb3IKICAgIG90aGVyIGFjY2Vzc2VzIHRv IHRoZSB2ZWN0b3IgZWxlbWVudHMsIG1hdGNoX3Jlc3VsdHMgYWxyZWFkeSBkb2VzIGl0cwogICAg b3duIGNoZWNrcywgc28gY2FuIGFjY2VzcyB0aGUgX0dMSUJDWFhfU1REX0M6OnZlY3RvciBiYXNl IGNsYXNzCiAgICBkaXJlY3RseS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gV2Fr ZWx5IDxqd2FrZWx5QHJlZGhhdC5jb20+CiAgICAKICAgIGxpYnN0ZGMrKy12My9DaGFuZ2VMb2c6 CiAgICAKICAgICAgICAgICAgKiBpbmNsdWRlL2JpdHMvcmVnZXguaCAoYmFzaWNfcmVnZXg6OnRy YW5zZm9ybV9wcmltYXJ5KTogVXNlCiAgICAgICAgICAgIF9HTElCQ1hYX1NURF9DOjp2ZWN0b3Ig Zm9yIGxvY2FsIHZhcmlhYmxlLgogICAgICAgICAgICAqIGluY2x1ZGUvYml0cy9yZWdleC50Y2Mg KF9fcmVnZXhfYWxnb19pbXBsKTogVXNlIHJlZmVyZW5jZSB0bwogICAgICAgICAgICBfR0xJQkNY WF9TVERfQzo6dmVjdG9yIGJhc2UgY2xhc3Mgb2YgbWF0Y2hfcmVzdWx0cy4KICAgICAgICAgICAg KiBpbmNsdWRlL2JpdHMvcmVnZXhfYXV0b21hdG9uLnRjYyAoX1N0YXRlU2VxOl9NX2Nsb25lKTog VXNlCiAgICAgICAgICAgIF9HTElCQ1hYX1NURF9DOjptYXAgYW5kIF9HTElCQ1hYX1NURF9DOjpk ZXF1ZSBmb3IgbG9jYWwKICAgICAgICAgICAgdmFyaWFibGVzLgogICAgICAgICAgICAqIGluY2x1 ZGUvYml0cy9yZWdleF9jb21waWxlci5oIChfQnJhY2tldE1hdGNoZXIpOiBVc2UKICAgICAgICAg ICAgX0dMSUJDWFhfU1REX0M6OnZlY3RvciBmb3IgZGF0YSBtZW1iZXJzLgogICAgICAgICAgICAq IGluY2x1ZGUvYml0cy9yZWdleF9leGVjdXRvci5oIChfRXhlY3V0b3IpOiBMaWtld2lzZS4KICAg ICAgICAgICAgKiBpbmNsdWRlL3N0ZC9yZWdleCBbX0dMSUJDWFhfREVCVUddOiBJbmNsdWRlIDxk ZWJ1Zy92ZWN0b3I+LgoKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvcmVn ZXguaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvcmVnZXguaAppbmRleCBhYzEwZmExODRj Ni4uYjhhMGFkMjUxZDggMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvcmVn ZXguaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3JlZ2V4LmgKQEAgLTI1Nyw3ICsy NTcsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEKIAkgIC8vIGZvciBkZXRhaWxz LgogCSAgdHlwZWRlZiBzdGQ6OmN0eXBlPGNoYXJfdHlwZT4gX19jdHlwZV90eXBlOwogCSAgY29u c3QgX19jdHlwZV90eXBlJiBfX2ZjdHlwKHVzZV9mYWNldDxfX2N0eXBlX3R5cGU+KF9NX2xvY2Fs ZSkpOwotCSAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiBfX3MoX19maXJzdCwgX19sYXN0KTsKKwkg IF9HTElCQ1hYX1NURF9DOjp2ZWN0b3I8Y2hhcl90eXBlPiBfX3MoX19maXJzdCwgX19sYXN0KTsK IAkgIF9fZmN0eXAudG9sb3dlcihfX3MuZGF0YSgpLCBfX3MuZGF0YSgpICsgX19zLnNpemUoKSk7 CiAJICByZXR1cm4gdGhpcy0+dHJhbnNmb3JtKF9fcy5kYXRhKCksIF9fcy5kYXRhKCkgKyBfX3Mu c2l6ZSgpKTsKIAl9CkBAIC0xNjk3LDYgKzE2OTcsOCBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BB Q0VfQ1hYMTEKICAgICAgICAqIFtuKzNdIHN1ZmZpeAogICAgICAgICovCiAgICAgICB0eXBlZGVm IHN0ZDo6dmVjdG9yPHN1Yl9tYXRjaDxfQmlfaXRlcj4sIF9BbGxvYz4gICAgIF9CYXNlX3R5cGU7 CisgICAgICAvLyBJbiBkZWJ1ZyBtb2RlIF9CYXNlX3R5cGUgaXMgdGhlIGRlYnVnIHZlY3Rvciwg dGhpcyBpcyB0aGUgdW5zYWZlIG9uZToKKyAgICAgIHR5cGVkZWYgX0dMSUJDWFhfU1REX0M6OnZl Y3RvcjxzdWJfbWF0Y2g8X0JpX2l0ZXI+LCBfQWxsb2M+IF9VbmNoZWNrZWQ7CiAgICAgICB0eXBl ZGVmIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPF9CaV9pdGVyPiAgIAkgICAJICAgX19pdGVyX3RyYWl0 czsKICAgICAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUJCSAgIG1h dGNoX2ZsYWdfdHlwZTsKIApAQCAtMTc3Myw3ICsxNzc1LDcgQEAgX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX0NYWDExCiAgICAgICAgKiBAcmV0dmFsIHRydWUgICBUaGUgb2JqZWN0IGhhcyBhIGZ1 bGx5LWVzdGFibGlzaGVkIHJlc3VsdCBzdGF0ZS4KICAgICAgICAqIEByZXR2YWwgZmFsc2UgIFRo ZSBvYmplY3QgaXMgbm90IHJlYWR5LgogICAgICAgICovCi0gICAgICBib29sIHJlYWR5KCkgY29u c3Qgbm9leGNlcHQgeyByZXR1cm4gIV9CYXNlX3R5cGU6OmVtcHR5KCk7IH0KKyAgICAgIGJvb2wg cmVhZHkoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiAhX1VuY2hlY2tlZDo6ZW1wdHkoKTsgfQog CiAgICAgICAvKioKICAgICAgICAqIEBuYW1lIDI4LjEwLjIgU2l6ZQpAQCAtMTc5MSwxMSArMTc5 MywxMSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hYMTEKICAgICAgICAqLwogICAgICAg c2l6ZV90eXBlCiAgICAgICBzaXplKCkgY29uc3Qgbm9leGNlcHQKLSAgICAgIHsgcmV0dXJuIF9C YXNlX3R5cGU6OmVtcHR5KCkgPyAwIDogX0Jhc2VfdHlwZTo6c2l6ZSgpIC0gMzsgfQorICAgICAg eyByZXR1cm4gX1VuY2hlY2tlZDo6ZW1wdHkoKSA/IDAgOiBfVW5jaGVja2VkOjpzaXplKCkgLSAz OyB9CiAKICAgICAgIHNpemVfdHlwZQogICAgICAgbWF4X3NpemUoKSBjb25zdCBub2V4Y2VwdAot ICAgICAgeyByZXR1cm4gX0Jhc2VfdHlwZTo6bWF4X3NpemUoKSAtIDM7IH0KKyAgICAgIHsgcmV0 dXJuIF9VbmNoZWNrZWQ6Om1heF9zaXplKCkgLSAzOyB9CiAKICAgICAgIC8qKgogICAgICAgICog QGJyaWVmIEluZGljYXRlcyBpZiB0aGUgJW1hdGNoX3Jlc3VsdHMgY29udGFpbnMgbm8gcmVzdWx0 cy4KQEAgLTE4NjksNyArMTg3MSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9DWFgxMQog ICAgICAgewogCV9fZ2xpYmN4eF9hc3NlcnQoIHJlYWR5KCkgKTsKIAlyZXR1cm4gX19zdWIgPCBz aXplKCkKLQkgICAgICAgPyBfQmFzZV90eXBlOjpvcGVyYXRvcltdKF9fc3ViKQorCSAgICAgICA/ IF9VbmNoZWNrZWQ6Om9wZXJhdG9yW10oX19zdWIpCiAJICAgICAgIDogX01fdW5tYXRjaGVkX3N1 YigpOwogICAgICAgfQogCkBAIC0yMDQ1LDcgKzIwNDcsNyBAQCBfR0xJQkNYWF9CRUdJTl9OQU1F U1BBQ0VfQ1hYMTEKICAgICAgIC8vIChwbHVzIGFkZGl0aW9uYWwgb2JqZWN0cyBmb3IgcHJlZml4 LCBzdWZmaXggYW5kIHVubWF0Y2hlZCBzdWIpLgogICAgICAgdm9pZAogICAgICAgX01fcmVzaXpl KHVuc2lnbmVkIGludCBfX3NpemUpCi0gICAgICB7IF9CYXNlX3R5cGU6OmFzc2lnbihfX3NpemUg KyAzLCBzdWJfbWF0Y2g8X0JpX2l0ZXI+e30pOyB9CisgICAgICB7IF9VbmNoZWNrZWQ6OmFzc2ln bihfX3NpemUgKyAzLCBzdWJfbWF0Y2g8X0JpX2l0ZXI+e30pOyB9CiAKICAgICAgIC8vIFNldCBz dGF0ZSB0byBhIGZhaWxlZCBtYXRjaCBmb3IgdGhlIGdpdmVuIHBhc3QtdGhlLWVuZCBpdGVyYXRv ci4KICAgICAgIHZvaWQKQEAgLTIwNTMsMzIgKzIwNTUsMzIgQEAgX0dMSUJDWFhfQkVHSU5fTkFN RVNQQUNFX0NYWDExCiAgICAgICB7CiAJc3ViX21hdGNoPF9CaV9pdGVyPiBfX3NtOwogCV9fc20u Zmlyc3QgPSBfX3NtLnNlY29uZCA9IF9fZW5kOwotCV9CYXNlX3R5cGU6OmFzc2lnbigzLCBfX3Nt KTsKKwlfVW5jaGVja2VkOjphc3NpZ24oMywgX19zbSk7CiAgICAgICB9CiAKICAgICAgIGNvbnN0 X3JlZmVyZW5jZQogICAgICAgX01fdW5tYXRjaGVkX3N1YigpIGNvbnN0Ci0gICAgICB7IHJldHVy biBfQmFzZV90eXBlOjpvcGVyYXRvcltdKF9CYXNlX3R5cGU6OnNpemUoKSAtIDMpOyB9CisgICAg ICB7IHJldHVybiBfVW5jaGVja2VkOjpvcGVyYXRvcltdKF9VbmNoZWNrZWQ6OnNpemUoKSAtIDMp OyB9CiAKICAgICAgIHN1Yl9tYXRjaDxfQmlfaXRlcj4mCiAgICAgICBfTV91bm1hdGNoZWRfc3Vi KCkKLSAgICAgIHsgcmV0dXJuIF9CYXNlX3R5cGU6Om9wZXJhdG9yW10oX0Jhc2VfdHlwZTo6c2l6 ZSgpIC0gMyk7IH0KKyAgICAgIHsgcmV0dXJuIF9VbmNoZWNrZWQ6Om9wZXJhdG9yW10oX1VuY2hl Y2tlZDo6c2l6ZSgpIC0gMyk7IH0KIAogICAgICAgY29uc3RfcmVmZXJlbmNlCiAgICAgICBfTV9w cmVmaXgoKSBjb25zdAotICAgICAgeyByZXR1cm4gX0Jhc2VfdHlwZTo6b3BlcmF0b3JbXShfQmFz ZV90eXBlOjpzaXplKCkgLSAyKTsgfQorICAgICAgeyByZXR1cm4gX1VuY2hlY2tlZDo6b3BlcmF0 b3JbXShfVW5jaGVja2VkOjpzaXplKCkgLSAyKTsgfQogCiAgICAgICBzdWJfbWF0Y2g8X0JpX2l0 ZXI+JgogICAgICAgX01fcHJlZml4KCkKLSAgICAgIHsgcmV0dXJuIF9CYXNlX3R5cGU6Om9wZXJh dG9yW10oX0Jhc2VfdHlwZTo6c2l6ZSgpIC0gMik7IH0KKyAgICAgIHsgcmV0dXJuIF9VbmNoZWNr ZWQ6Om9wZXJhdG9yW10oX1VuY2hlY2tlZDo6c2l6ZSgpIC0gMik7IH0KIAogICAgICAgY29uc3Rf cmVmZXJlbmNlCiAgICAgICBfTV9zdWZmaXgoKSBjb25zdAotICAgICAgeyByZXR1cm4gX0Jhc2Vf dHlwZTo6b3BlcmF0b3JbXShfQmFzZV90eXBlOjpzaXplKCkgLSAxKTsgfQorICAgICAgeyByZXR1 cm4gX1VuY2hlY2tlZDo6b3BlcmF0b3JbXShfVW5jaGVja2VkOjpzaXplKCkgLSAxKTsgfQogCiAg ICAgICBzdWJfbWF0Y2g8X0JpX2l0ZXI+JgogICAgICAgX01fc3VmZml4KCkKLSAgICAgIHsgcmV0 dXJuIF9CYXNlX3R5cGU6Om9wZXJhdG9yW10oX0Jhc2VfdHlwZTo6c2l6ZSgpIC0gMSk7IH0KKyAg ICAgIHsgcmV0dXJuIF9VbmNoZWNrZWQ6Om9wZXJhdG9yW10oX1VuY2hlY2tlZDo6c2l6ZSgpIC0g MSk7IH0KIAogICAgICAgX0JpX2l0ZXIgX01fYmVnaW47CiAgICAgICAvLy8gQGVuZGNvbmQKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvcmVnZXgudGNjIGIvbGlic3RkYysr LXYzL2luY2x1ZGUvYml0cy9yZWdleC50Y2MKaW5kZXggMzlhZDNmMGE0Y2MuLmM4YmRkMzc3YzE4 IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3JlZ2V4LnRjYworKysgYi9s aWJzdGRjKystdjMvaW5jbHVkZS9iaXRzL3JlZ2V4LnRjYwpAQCAtNTYsNyArNTYsNyBAQCBuYW1l c3BhY2UgX19kZXRhaWwKICAgICAgIGlmIChfX3JlLl9NX2F1dG9tYXRvbiA9PSBudWxscHRyKQog CXJldHVybiBmYWxzZTsKIAotICAgICAgdHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxfQmlJdGVyLCBf QWxsb2M+OjpfQmFzZV90eXBlJiBfX3JlcyA9IF9fbTsKKyAgICAgIHR5cGVuYW1lIG1hdGNoX3Jl c3VsdHM8X0JpSXRlciwgX0FsbG9jPjo6X1VuY2hlY2tlZCYgX19yZXMgPSBfX207CiAgICAgICBf X20uX01fYmVnaW4gPSBfX3M7CiAgICAgICBfX20uX01fcmVzaXplKF9fcmUuX01fYXV0b21hdG9u LT5fTV9zdWJfY291bnQoKSk7CiAKQEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIF9fZGV0YWls CiAJICAgICAgJiYgIV9fcmUuX01fYXV0b21hdG9uLT5fTV9oYXNfYmFja3JlZikpCiAJewogCSAg X0V4ZWN1dG9yPF9CaUl0ZXIsIF9BbGxvYywgX1RyYWl0c1QsIGZhbHNlPgotCSAgICBfX2V4ZWN1 dG9yKF9fcywgX19lLCBfX20sIF9fcmUsIF9fZmxhZ3MpOworCSAgICBfX2V4ZWN1dG9yKF9fcywg X19lLCBfX3JlcywgX19yZSwgX19mbGFncyk7CiAJICBpZiAoX19tYXRjaF9tb2RlKQogCSAgICBf X3JldCA9IF9fZXhlY3V0b3IuX01fbWF0Y2goKTsKIAkgIGVsc2UKQEAgLTc1LDcgKzc1LDcgQEAg bmFtZXNwYWNlIF9fZGV0YWlsCiAgICAgICBlbHNlCiAJewogCSAgX0V4ZWN1dG9yPF9CaUl0ZXIs IF9BbGxvYywgX1RyYWl0c1QsIHRydWU+Ci0JICAgIF9fZXhlY3V0b3IoX19zLCBfX2UsIF9fbSwg X19yZSwgX19mbGFncyk7CisJICAgIF9fZXhlY3V0b3IoX19zLCBfX2UsIF9fcmVzLCBfX3JlLCBf X2ZsYWdzKTsKIAkgIGlmIChfX21hdGNoX21vZGUpCiAJICAgIF9fcmV0ID0gX19leGVjdXRvci5f TV9tYXRjaCgpOwogCSAgZWxzZQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0 cy9yZWdleF9hdXRvbWF0b24udGNjIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9yZWdleF9h dXRvbWF0b24udGNjCmluZGV4IDA5NzdmNzc4OTIyLi42OWYzZWU1YmEzYyAxMDA2NDQKLS0tIGEv bGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9yZWdleF9hdXRvbWF0b24udGNjCisrKyBiL2xpYnN0 ZGMrKy12My9pbmNsdWRlL2JpdHMvcmVnZXhfYXV0b21hdG9uLnRjYwpAQCAtMTk0LDggKzE5NCw4 IEBAIG5hbWVzcGFjZSBfX2RldGFpbAogICAgIF9TdGF0ZVNlcTxfVHJhaXRzVD4KICAgICBfU3Rh dGVTZXE8X1RyYWl0c1Q+OjpfTV9jbG9uZSgpCiAgICAgewotICAgICAgc3RkOjptYXA8X1N0YXRl SWRULCBfU3RhdGVJZFQ+IF9fbTsKLSAgICAgIHN0ZDo6c3RhY2s8X1N0YXRlSWRUPiBfX3N0YWNr OworICAgICAgX0dMSUJDWFhfU1REX0M6Om1hcDxfU3RhdGVJZFQsIF9TdGF0ZUlkVD4gX19tOwor ICAgICAgc3RkOjpzdGFjazxfU3RhdGVJZFQsIF9HTElCQ1hYX1NURF9DOjpkZXF1ZTxfU3RhdGVJ ZFQ+PiBfX3N0YWNrOwogICAgICAgX19zdGFjay5wdXNoKF9NX3N0YXJ0KTsKICAgICAgIHdoaWxl ICghX19zdGFjay5lbXB0eSgpKQogCXsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRl L2JpdHMvcmVnZXhfY29tcGlsZXIuaCBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvcmVnZXhf Y29tcGlsZXIuaAppbmRleCBiZjdkY2M1NGRiYS4uNWI0ZjJhZTM1NTggMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvcmVnZXhfY29tcGlsZXIuaAorKysgYi9saWJzdGRjKyst djMvaW5jbHVkZS9iaXRzL3JlZ2V4X2NvbXBpbGVyLmgKQEAgLTUzOCwxMCArNTM4LDEwIEBAIG5h bWVzcGFjZSBfX2RldGFpbAogICAgICAgeyB9CiAKICAgICBwcml2YXRlOgotICAgICAgc3RkOjp2 ZWN0b3I8X0NoYXJUPiAgICAgICAgICAgICAgICAgICAgICAgX01fY2hhcl9zZXQ7Ci0gICAgICBz dGQ6OnZlY3RvcjxfU3RyaW5nVD4gICAgICAgICAgICAgICAgICAgICBfTV9lcXVpdl9zZXQ7Ci0g ICAgICBzdGQ6OnZlY3RvcjxwYWlyPF9TdHJUcmFuc1QsIF9TdHJUcmFuc1Q+PiBfTV9yYW5nZV9z ZXQ7Ci0gICAgICBzdGQ6OnZlY3RvcjxfQ2hhckNsYXNzVD4gICAgICAgICAgICAgICAgICBfTV9u ZWdfY2xhc3Nfc2V0OworICAgICAgX0dMSUJDWFhfU1REX0M6OnZlY3RvcjxfQ2hhclQ+ICAgICAg ICAgICAgX01fY2hhcl9zZXQ7CisgICAgICBfR0xJQkNYWF9TVERfQzo6dmVjdG9yPF9TdHJpbmdU PiAgICAgICAgICBfTV9lcXVpdl9zZXQ7CisgICAgICBfR0xJQkNYWF9TVERfQzo6dmVjdG9yPHBh aXI8X1N0clRyYW5zVCwgX1N0clRyYW5zVD4+IF9NX3JhbmdlX3NldDsKKyAgICAgIF9HTElCQ1hY X1NURF9DOjp2ZWN0b3I8X0NoYXJDbGFzc1Q+ICAgICAgIF9NX25lZ19jbGFzc19zZXQ7CiAgICAg ICBfQ2hhckNsYXNzVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTV9jbGFzc19zZXQ7 CiAgICAgICBfVHJhbnNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTV90cmFu c2xhdG9yOwogICAgICAgY29uc3QgX1RyYWl0c1QmICAgICAgICAgICAgICAgICAgICAgICAgICAg X01fdHJhaXRzOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9yZWdleF9l eGVjdXRvci5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9yZWdleF9leGVjdXRvci5oCmlu ZGV4IDAxNGI0ZTgzMDY0Li4zNDIyODkzMzcxYSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2lu Y2x1ZGUvYml0cy9yZWdleF9leGVjdXRvci5oCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Jp dHMvcmVnZXhfZXhlY3V0b3IuaApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgX19kZXRhaWwK ICAgICBwdWJsaWM6CiAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlJ dGVyPjo6dmFsdWVfdHlwZSBfQ2hhclQ7CiAgICAgICB0eXBlZGVmIGJhc2ljX3JlZ2V4PF9DaGFy VCwgX1RyYWl0c1Q+ICAgICAgICAgICAgICAgICBfUmVnZXhUOwotICAgICAgdHlwZWRlZiBzdGQ6 OnZlY3RvcjxzdWJfbWF0Y2g8X0JpSXRlcj4sIF9BbGxvYz4gICAgICAgX1Jlc3VsdHNWZWM7Cisg ICAgICB0eXBlZGVmIF9HTElCQ1hYX1NURF9DOjp2ZWN0b3I8c3ViX21hdGNoPF9CaUl0ZXI+LCBf QWxsb2M+IF9SZXN1bHRzVmVjOwogICAgICAgdHlwZWRlZiByZWdleF9jb25zdGFudHM6Om1hdGNo X2ZsYWdfdHlwZSAgICAgICAgICAgICAgX0ZsYWdUOwogICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf VHJhaXRzVDo6Y2hhcl9jbGFzc190eXBlICAgICAgICAgICAgX0NsYXNzVDsKICAgICAgIHR5cGVk ZWYgX05GQTxfVHJhaXRzVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ORkFUOwpA QCAtMjE1LDcgKzIxNSw3IEBAIG5hbWVzcGFjZSBfX2RldGFpbAogCSAgX0JpSXRlciogX01fZ2V0 X3NvbF9wb3MoKSB7IHJldHVybiBudWxscHRyOyB9CiAKIAkgIC8vIFNhdmVzIHN0YXRlcyB0aGF0 IG5lZWQgdG8gYmUgY29uc2lkZXJlZCBmb3IgdGhlIG5leHQgY2hhcmFjdGVyLgotCSAgdmVjdG9y PHBhaXI8X1N0YXRlSWRULCBfUmVzdWx0c1ZlYz4+CV9NX21hdGNoX3F1ZXVlOworCSAgX0dMSUJD WFhfU1REX0M6OnZlY3RvcjxwYWlyPF9TdGF0ZUlkVCwgX1Jlc3VsdHNWZWM+PiBfTV9tYXRjaF9x dWV1ZTsKIAkgIC8vIEluZGljYXRlcyB3aGljaCBzdGF0ZXMgYXJlIGFscmVhZHkgdmlzaXRlZC4K IAkgIGJvb2wqICAgICBfTV92aXNpdGVkX3N0YXRlczsKIAkgIC8vIFRvIHJlY29yZCBjdXJyZW50 IHNvbHV0aW9uLgpAQCAtMjQ4LDcgKzI0OCw3IEBAIG5hbWVzcGFjZSBfX2RldGFpbAogICAgICAg Y29uc3QgX1JlZ2V4VCYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01f cmU7CiAgICAgICBjb25zdCBfTkZBVCYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfTV9uZmE7CiAgICAgICBfUmVzdWx0c1ZlYyYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfTV9yZXN1bHRzOwotICAgICAgdmVjdG9yPHBhaXI8X0JpSXRl ciwgaW50Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX01fcmVwX2NvdW50OworICAgICAg X0dMSUJDWFhfU1REX0M6OnZlY3RvcjxwYWlyPF9CaUl0ZXIsIGludD4+ICAgICAgICAgICAgX01f cmVwX2NvdW50OwogICAgICAgX1N0YXRlX2luZm88X19zZWFyY2hfbW9kZSwgX1Jlc3VsdHNWZWM+ CQkgICAgX01fc3RhdGVzOwogICAgICAgX0ZsYWdUICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX01fZmxhZ3M7CiAgICAgICAvLyBEbyB3ZSBoYXZlIGEgc29s dXRpb24gc28gZmFyPwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3JlZ2V4 IGIvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3JlZ2V4CmluZGV4IDA0ZmI4YjJkOTcxLi4yYzk0 ZmEzMDZjMiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvc3RkL3JlZ2V4CisrKyBi L2xpYnN0ZGMrKy12My9pbmNsdWRlL3N0ZC9yZWdleApAQCAtNTUsNiArNTUsOSBAQAogI2luY2x1 ZGUgPGJpdHMvc3RsX3ZlY3Rvci5oPgogI2luY2x1ZGUgPGJpdHMvc3RsX2J2ZWN0b3IuaD4KICNp bmNsdWRlIDxiaXRzL3ZlY3Rvci50Y2M+CisjaWZkZWYgX0dMSUJDWFhfREVCVUcKKyMgaW5jbHVk ZSA8ZGVidWcvdmVjdG9yPgorI2VuZGlmCiAjaW5jbHVkZSA8Yml0cy9yZWdleF9jb25zdGFudHMu aD4KICNpbmNsdWRlIDxiaXRzL3JlZ2V4X2Vycm9yLmg+CiAjaW5jbHVkZSA8Yml0cy9yZWdleF9h dXRvbWF0b24uaD4K --00000000000085cb7805c92164a3--