From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id 3DB603858C55; Sat, 1 Oct 2022 07:20:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3DB603858C55 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-x330.google.com with SMTP id ay36so4152324wmb.0; Sat, 01 Oct 2022 00:20:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date; bh=UpWJdlEkCqT8m06EP495KrbGkrcg/N5oAtOonWTh8IU=; b=nGBWbOS8jYQQYSnS19y6cFn4WHiyDGHmpBVkX7hhpqYH5N27qi/2brEQG4yJ0GvxPL BrZjOcHlacZHWbkEyL9yN/LDOnPUPdEpK2xMeOH4Iw8vY2Fon/2phP2fZvhNM9TaTE+6 LpCuvhoK3M9/1x/aiqssZiRp1TwF0DFceL8xPs0Sg3tRdRngrW8rHhOvyUWOTaHy3Sra mUo1uD9pFYr+PrH/navtshLxDleOakO8hwz2Hra/GFZ4bmAdSfwERUk3Kr0BFeJal5+W m7565JaCbfn0tZl3Z29njbiBmxxEjNRzsAQTGmlwq1yCs7Ax63nfAXEs+sqYeBkDqfqT jIOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date; bh=UpWJdlEkCqT8m06EP495KrbGkrcg/N5oAtOonWTh8IU=; b=2nVchAFvxLjUsbOgG3CWS3OPH99ClrOuM+04VvjZVx+fvU6PVTuoT+sCdIJaUo7WOb FE579b3n0funidE+ASxAtB5aWLjWQ9ZtMWL/f+Z6f31JvAckqOPbZ4yVyFn0lxN40VX9 pESpa6W4St4jUaKdEOlU0+iVS76IgRsp7aNKDpJ8MyBFOiDuCJ/letRp5Ufyr9yByKYG idiTxLdgD379ZA3oadGIT3uUAp1O7FjqtEXzeVZX4wICFIwO3dEBxE7Z2k7Esk/S7y7p 0DA0jHylLRmKa7M3PTE+PyPagsyDtkAA31p7IHnBBNHtueul7j3EGRaAUzxVZD8c7U0y PGfw== X-Gm-Message-State: ACrzQf2URXQ6pHDG7PC4h3CPFF/DnCQtw8zYi+uRD29AUi5fGHrGl682 tPtUb9vDHqIq15f+NdtCd/TrEEIykjA= X-Google-Smtp-Source: AMsMyM4HZSTtnWaXjlYngFDvZXEbgl9WJxoD4TwtPwOrOt+fOsGmJOxUw9KGHmd7tiqdnclxrkQ6Pg== X-Received: by 2002:a7b:c050:0:b0:3b4:fae1:6bce with SMTP id u16-20020a7bc050000000b003b4fae16bcemr935402wmc.131.1664608833263; Sat, 01 Oct 2022 00:20:33 -0700 (PDT) Received: from ?IPV6:2a01:e0a:1dc:b1c0:f94a:162b:fca9:da11? ([2a01:e0a:1dc:b1c0:f94a:162b:fca9:da11]) by smtp.googlemail.com with ESMTPSA id w17-20020adfd4d1000000b0022b11a27e39sm4388282wrk.1.2022.10.01.00.20.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 01 Oct 2022 00:20:32 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------AsERRtxKZoOR5KsTxSzQdPtt" Message-ID: <1d7b853e-0180-718c-1947-2517272f44e8@gmail.com> Date: Sat, 1 Oct 2022 09:20:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH] Fix gdb printers for std::string Content-Language: fr From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= To: "libstdc++@gcc.gnu.org" Cc: gcc-patches References: In-Reply-To: X-Spam-Status: No, score=-11.4 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,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. --------------AsERRtxKZoOR5KsTxSzQdPtt Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit I had forgotten to re-run tests after I removed the #define _GLIBCXX_USE_CXX11_ABI 0. The comment was misleading, it could also impact output of std::list. I am also restoring the correct std::string alias for std::__cxx11::basic_string, even if with my workaround it doesn't really matter as the one for std::basic_string will be used. I also restored the printer for std::__cxx11::string typedef. Is it intentional to keep this ?     libstdc++: Fix gdb pretty printers when dealing with std::string     Since revision 33b43b0d8cd2de722d177ef823930500948a7487 std::string and other     similar typedef are ambiguous from a gdb point of view because it matches both     std::basic_string and std::__cxx11::basic_string symbols. For those     typedef add a workaround to accept the substitution as long as the same regardless     of __cxx11 namespace.     Also avoid to register printers for types in std::__cxx11::__8:: namespace, there is     no such symbols.     libstdc++-v3/ChangeLog:             * libstdc++-v3/python/libstdcxx/v6/printers.py (Printer.add_version): Do not add             version namespace for __cxx11 symbols.             (add_one_template_type_printer): Likewise.             (add_one_type_printer): Likewise.             (FilteringTypePrinter._recognizer.recognize): Add a workaround for std::string & al             ambiguous typedef matching both std:: and std::__cxx11:: symbols.             (register_type_printers): Refine type registration to limit false positive in             FilteringTypePrinter._recognize.recognize requiring to look for the type in gdb.             * libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc: Remove obsolete             \#define _GLIBCXX_USE_CXX11_ABI 0.             * libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc: Likewise. Adapt test             to accept std::__cxx11::list.             * libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.             * libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.             * libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc: Likewise and remove             xfail for c++20 and debug mode.             * libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise. Ok to commit ? François On 28/09/22 22:42, François Dumont wrote: > Sometimes substitution of basic_string by one of the std::string > typeedef fails. Here is the fix. > >     libstdc++: Fix gdb pretty printers when dealing with std::string > >     Since revision 33b43b0d8cd2de722d177ef823930500948a7487 > std::string and other >     similar typedef are ambiguous from a gdb point of view because it > matches both >     std::basic_string and std::__cxx11::basic_string > symbols. For those >     typedef add a workaround to accept the substitution as long as the > same regardless >     of __cxx11 namespace. > >     Also avoid to register printers for types in std::__cxx11::__8:: > namespace, there is >     no such symbols. > >     libstdc++-v3/ChangeLog: > >             * libstdc++-v3/python/libstdcxx/v6/printers.py > (Printer.add_version): Do not add >             version namespace for __cxx11 symbols. >             (add_one_template_type_printer): Likewise. >             (add_one_type_printer): Likewise. >             (FilteringTypePrinter._recognizer.recognize): Add a > workaround for std::string & al >             ambiguous typedef matching both std:: and std::__cxx11:: > symbols. >             (register_type_printers): Refine type registration to > limit false positive in >             FilteringTypePrinter._recognize.recognize requiring to > look for the type in gdb. >             * > libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc: Remove obsolete >             \#define _GLIBCXX_USE_CXX11_ABI 0. >             * > libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc: Likewise. >             * > libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc: Likewise. >             * > libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc: Likewise. >             * > libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc: Likewise and > remove >             xfail for c++20 and debug mode. >             * > libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise. > > Tested under x86_64 linux w/o _GLIBCXX_INLINE_VERSION and w/o > _GLIBCXX_DEBUG. > > I also tested it with my patch to use cxx11 abi in > _GLIBCXX_INLINE_VERSION mode. > > Ok to commit ? > > François --------------AsERRtxKZoOR5KsTxSzQdPtt Content-Type: text/x-patch; charset=UTF-8; name="gdb_printers.patch" Content-Disposition: attachment; filename="gdb_printers.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ByaW50ZXJz LnB5IGIvbGlic3RkYysrLXYzL3B5dGhvbi9saWJzdGRjeHgvdjYvcHJpbnRlcnMucHkKaW5k ZXggMjQ1YjZlM2RiY2QuLjBmOTY2ZmM3OWE3IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv cHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQorKysgYi9saWJzdGRjKystdjMvcHl0 aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQpAQCAtMTg1Nyw3ICsxODU3LDcgQEAgY2xh c3MgUHJpbnRlcihvYmplY3QpOgogICAgICMgQWRkIGEgbmFtZSB1c2luZyBfR0xJQkNYWF9C RUdJTl9OQU1FU1BBQ0VfVkVSU0lPTi4KICAgICBkZWYgYWRkX3ZlcnNpb24oc2VsZiwgYmFz ZSwgbmFtZSwgZnVuY3Rpb24pOgogICAgICAgICBzZWxmLmFkZChiYXNlICsgbmFtZSwgZnVu Y3Rpb24pCi0gICAgICAgIGlmIF92ZXJzaW9uZWRfbmFtZXNwYWNlOgorICAgICAgICBpZiBf dmVyc2lvbmVkX25hbWVzcGFjZSBhbmQgbm90ICdfX2N4eDExJyBpbiBiYXNlOgogICAgICAg ICAgICAgdmJhc2UgPSByZS5zdWIoJ14oc3RkfF9fZ251X2N4eCk6OicsIHInXGc8MD4lcycg JSBfdmVyc2lvbmVkX25hbWVzcGFjZSwgYmFzZSkKICAgICAgICAgICAgIHNlbGYuYWRkKHZi YXNlICsgbmFtZSwgZnVuY3Rpb24pCiAKQEAgLTIwMjYsNyArMjAyNiw3IEBAIGRlZiBhZGRf b25lX3RlbXBsYXRlX3R5cGVfcHJpbnRlcihvYmosIG5hbWUsIGRlZmFyZ3MpOgogICAgIHBy aW50ZXIgPSBUZW1wbGF0ZVR5cGVQcmludGVyKCdzdGQ6Ol9fZGVidWc6OicrbmFtZSwgZGVm YXJncykKICAgICBnZGIudHlwZXMucmVnaXN0ZXJfdHlwZV9wcmludGVyKG9iaiwgcHJpbnRl cikKIAotICAgIGlmIF92ZXJzaW9uZWRfbmFtZXNwYWNlOgorICAgIGlmIF92ZXJzaW9uZWRf bmFtZXNwYWNlIGFuZCBub3QgJ19fY3h4MTEnIGluIG5hbWU6CiAgICAgICAgICMgQWRkIHNl Y29uZCB0eXBlIHByaW50ZXIgZm9yIHNhbWUgdHlwZSBpbiB2ZXJzaW9uZWQgbmFtZXNwYWNl OgogICAgICAgICBucyA9ICdzdGQ6OicgKyBfdmVyc2lvbmVkX25hbWVzcGFjZQogICAgICAg ICAjIFBSIDg2MTEyIENhbm5vdCB1c2UgZGljdCBjb21wcmVoZW5zaW9uIGhlcmU6CkBAIC0y MDg0LDYgKzIwODQsMjEgQEAgY2xhc3MgRmlsdGVyaW5nVHlwZVByaW50ZXIob2JqZWN0KToK ICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgaWYgc2VsZi50eXBlX29i aiA9PSB0eXBlX29iajoKICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaXBfaW5saW5lX25h bWVzcGFjZXMoc2VsZi5uYW1lKQorCisgICAgICAgICAgICBpZiBzZWxmLnR5cGVfb2JqIGlz IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgIyBX b3JrYXJvdW5kIGFtYmlndW91cyB0eXBlZGVmcyBtYXRjaGluZyBib3RoIHN0ZDo6IGFuZCBz dGQ6Ol9fY3h4MTE6OiBzeW1ib2xzLgorICAgICAgICAgICAgYW1iaWd1b3VzID0gRmFsc2UK KyAgICAgICAgICAgIGZvciBjaCBpbiAoJycsICd3JywgJ3U4JywgJ3UxNicsICd1MzInKToK KyAgICAgICAgICAgICAgICBpZiBzZWxmLm5hbWUgPT0gJ3N0ZDo6JyArIGNoICsgJ3N0cmlu Zyc6CisgICAgICAgICAgICAgICAgICAgIGFtYmlndW91cyA9IFRydWUKKyAgICAgICAgICAg ICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgYW1iaWd1b3VzOgorICAgICAgICAg ICAgICAgIGlmIHNlbGYudHlwZV9vYmoudGFnLnJlcGxhY2UoJ19fY3h4MTE6OicsICcnKSA9 PSB0eXBlX29iai50YWcucmVwbGFjZSgnX19jeHgxMTo6JywgJycpOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gc3RyaXBfaW5saW5lX25hbWVzcGFjZXMoc2VsZi5uYW1lKQorCiAg ICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIGluc3RhbnRpYXRlKHNlbGYpOgpA QCAtMjA5Myw3ICsyMTA4LDcgQEAgY2xhc3MgRmlsdGVyaW5nVHlwZVByaW50ZXIob2JqZWN0 KToKIGRlZiBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmosIG1hdGNoLCBuYW1lKToKICAgICBw cmludGVyID0gRmlsdGVyaW5nVHlwZVByaW50ZXIoJ3N0ZDo6JyArIG1hdGNoLCAnc3RkOjon ICsgbmFtZSkKICAgICBnZGIudHlwZXMucmVnaXN0ZXJfdHlwZV9wcmludGVyKG9iaiwgcHJp bnRlcikKLSAgICBpZiBfdmVyc2lvbmVkX25hbWVzcGFjZToKKyAgICBpZiBfdmVyc2lvbmVk X25hbWVzcGFjZSBhbmQgbm90ICdfX2N4eDExJyBpbiBtYXRjaDoKICAgICAgICAgbnMgPSAn c3RkOjonICsgX3ZlcnNpb25lZF9uYW1lc3BhY2UKICAgICAgICAgcHJpbnRlciA9IEZpbHRl cmluZ1R5cGVQcmludGVyKG5zICsgbWF0Y2gsIG5zICsgbmFtZSkKICAgICAgICAgZ2RiLnR5 cGVzLnJlZ2lzdGVyX3R5cGVfcHJpbnRlcihvYmosIHByaW50ZXIpCkBAIC0yMTA1LDI5ICsy MTIwLDI5IEBAIGRlZiByZWdpc3Rlcl90eXBlX3ByaW50ZXJzKG9iaik6CiAgICAgICAgIHJl dHVybgogCiAgICAgIyBBZGQgdHlwZSBwcmludGVycyBmb3IgdHlwZWRlZnMgc3RkOjpzdHJp bmcsIHN0ZDo6d3N0cmluZyBldGMuCi0gICAgZm9yIGNoIGluICgnJywgJ3cnLCAndTgnLCAn dTE2JywgJ3UzMicpOgotICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmosICdiYXNp Y19zdHJpbmcnLCBjaCArICdzdHJpbmcnKQotICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRl cihvYmosICdfX2N4eDExOjpiYXNpY19zdHJpbmcnLCBjaCArICdzdHJpbmcnKQorICAgIGZv ciBjaCBpbiAoKCdjaGFyJywgJycpLCAoJ3djaGFyX3QnLCAndycpLCAoJ2NoYXI4X3QnLCAn dTgnKSwgKCdjaGFyMTZfdCcsICd1MTYnKSwgKCdjaGFyMzJfdCcsICd1MzInKSk6CisgICAg ICAgIGFkZF9vbmVfdHlwZV9wcmludGVyKG9iaiwgJ2Jhc2ljX3N0cmluZzwnICsgY2hbMF0s IGNoWzFdICsgJ3N0cmluZycpCisgICAgICAgIGFkZF9vbmVfdHlwZV9wcmludGVyKG9iaiwg J19fY3h4MTE6OmJhc2ljX3N0cmluZzwnICsgY2hbMF0sIGNoWzFdICsgJ3N0cmluZycpCiAg ICAgICAgICMgVHlwZWRlZnMgZm9yIF9fY3h4MTE6OmJhc2ljX3N0cmluZyB1c2VkIHRvIGJl IGluIG5hbWVzcGFjZSBfX2N4eDExOgotICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihv YmosICdfX2N4eDExOjpiYXNpY19zdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnX19jeHgxMTo6JyArIGNoICsgJ3N0cmluZycpCi0gICAgICAgIGFkZF9vbmVfdHlw ZV9wcmludGVyKG9iaiwgJ2Jhc2ljX3N0cmluZ192aWV3JywgY2ggKyAnc3RyaW5nX3ZpZXcn KQorICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmosICdfX2N4eDExOjpiYXNpY19z dHJpbmc8JyArIGNoWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19jeHgx MTo6JyArIGNoWzFdICsgJ3N0cmluZycpCisgICAgICAgIGFkZF9vbmVfdHlwZV9wcmludGVy KG9iaiwgJ2Jhc2ljX3N0cmluZ192aWV3PCcgKyBjaFswXSwgY2hbMV0gKyAnc3RyaW5nX3Zp ZXcnKQogCiAgICAgIyBBZGQgdHlwZSBwcmludGVycyBmb3IgdHlwZWRlZnMgc3RkOjppc3Ry ZWFtLCBzdGQ6Ondpc3RyZWFtIGV0Yy4KLSAgICBmb3IgY2ggaW4gKCcnLCAndycpOgorICAg IGZvciBjaCBpbiAoKCdjaGFyJywgJycpLCAoJ3djaGFyX3QnLCAndycpKToKICAgICAgICAg Zm9yIHggaW4gKCdpb3MnLCAnc3RyZWFtYnVmJywgJ2lzdHJlYW0nLCAnb3N0cmVhbScsICdp b3N0cmVhbScsCiAgICAgICAgICAgICAgICAgICAnZmlsZWJ1ZicsICdpZnN0cmVhbScsICdv ZnN0cmVhbScsICdmc3RyZWFtJyk6Ci0gICAgICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRl cihvYmosICdiYXNpY18nICsgeCwgY2ggKyB4KQorICAgICAgICAgICAgYWRkX29uZV90eXBl X3ByaW50ZXIob2JqLCAnYmFzaWNfJyArIHggKyAnPCcgKyBjaFswXSwgY2hbMV0gKyB4KQog ICAgICAgICBmb3IgeCBpbiAoJ3N0cmluZ2J1ZicsICdpc3RyaW5nc3RyZWFtJywgJ29zdHJp bmdzdHJlYW0nLAogICAgICAgICAgICAgICAgICAgJ3N0cmluZ3N0cmVhbScpOgotICAgICAg ICAgICAgYWRkX29uZV90eXBlX3ByaW50ZXIob2JqLCAnYmFzaWNfJyArIHgsIGNoICsgeCkK KyAgICAgICAgICAgIGFkZF9vbmVfdHlwZV9wcmludGVyKG9iaiwgJ2Jhc2ljXycgKyB4LCBj aFsxXSArIHgpCiAgICAgICAgICAgICAjIDxzc3RyZWFtPiB0eXBlcyBhcmUgaW4gX19jeHgx MSBuYW1lc3BhY2UsIGJ1dCB0eXBlZGVmcyBhcmVuJ3Q6Ci0gICAgICAgICAgICBhZGRfb25l X3R5cGVfcHJpbnRlcihvYmosICdfX2N4eDExOjpiYXNpY18nICsgeCwgY2ggKyB4KQorICAg ICAgICAgICAgYWRkX29uZV90eXBlX3ByaW50ZXIob2JqLCAnX19jeHgxMTo6YmFzaWNfJyAr IHggKyAnPCcgKyBjaFswXSwgY2hbMV0gKyB4KQogCiAgICAgIyBBZGQgdHlwZSBwcmludGVy cyBmb3IgdHlwZWRlZnMgcmVnZXgsIHdyZWdleCwgY21hdGNoLCB3Y21hdGNoIGV0Yy4KICAg ICBmb3IgYWJpIGluICgnJywgJ19fY3h4MTE6OicpOgotICAgICAgICBmb3IgY2ggaW4gKCcn LCAndycpOgotICAgICAgICAgICAgYWRkX29uZV90eXBlX3ByaW50ZXIob2JqLCBhYmkgKyAn YmFzaWNfcmVnZXgnLCBhYmkgKyBjaCArICdyZWdleCcpCisgICAgICAgIGZvciBjaCBpbiAo KCdjaGFyJywgJycpLCAoJ3djaGFyX3QnLCAndycpKToKKyAgICAgICAgICAgIGFkZF9vbmVf dHlwZV9wcmludGVyKG9iaiwgYWJpICsgJ2Jhc2ljX3JlZ2V4PCcgKyBjaFswXSwgYWJpICsg Y2hbMV0gKyAncmVnZXgnKQogICAgICAgICBmb3IgY2ggaW4gKCdjJywgJ3MnLCAnd2MnLCAn d3MnKToKICAgICAgICAgICAgIGFkZF9vbmVfdHlwZV9wcmludGVyKG9iaiwgYWJpICsgJ21h dGNoX3Jlc3VsdHMnLCBhYmkgKyBjaCArICdtYXRjaCcpCiAgICAgICAgICAgICBmb3IgeCBp biAoJ3N1Yl9tYXRjaCcsICdyZWdleF9pdGVyYXRvcicsICdyZWdleF90b2tlbl9pdGVyYXRv cicpOgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9saWJzdGRjKystcHJl dHR5cHJpbnRlcnMvODAyNzYuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMr Ky1wcmV0dHlwcmludGVycy84MDI3Ni5jYwppbmRleCA0YWJlN2QzODRlOC4uZDEwMTZiNThk NzkgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvbGlic3RkYysrLXByZXR0 eXByaW50ZXJzLzgwMjc2LmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvbGlic3Rk YysrLXByZXR0eXByaW50ZXJzLzgwMjc2LmNjCkBAIC0xOCw5ICsxOCw2IEBACiAvLyB3aXRo IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogLy8g PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi0vLyBUeXBlIHByaW50ZXJzIG9u bHkgcmVjb2duaXplIHRoZSBvbGQgc3RkOjpzdHJpbmcgZm9yIG5vdy4KLSNkZWZpbmUgX0dM SUJDWFhfVVNFX0NYWDExX0FCSSAwCi0KICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRl IDxsaXN0PgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTQ2LDcgKzQzLDcgQEAgbWFpbigpCiAg IC8vIHsgZGctZmluYWwgeyB3aGF0aXMtcmVnZXhwLXRlc3QgcDEgInN0ZDo6dW5pcXVlX3B0 cjxzdGQ6OihfX2RlYnVnOjopP3ZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8c3RkOjooX19kZWJ1 Zzo6KT92ZWN0b3I8aW50PlxcKj4+PiIgfSB9CiAgIC8vIHsgZGctZmluYWwgeyB3aGF0aXMt cmVnZXhwLXRlc3QgcDIgInN0ZDo6dW5pcXVlX3B0cjxzdGQ6OihfX2RlYnVnOjopP3ZlY3Rv cjxzdGQ6OnVuaXF1ZV9wdHI8c3RkOjooX19kZWJ1Zzo6KT9zZXQ8aW50PlxcKj4+XFxcW1xc XF0+IiB9IH0KICAgLy8geyBkZy1maW5hbCB7IHdoYXRpcy1yZWdleHAtdGVzdCBwMyAic3Rk Ojp1bmlxdWVfcHRyPHN0ZDo6KF9fZGVidWc6Oik/c2V0PHN0ZDo6dW5pcXVlX3B0cjxzdGQ6 OihfX2RlYnVnOjopP3ZlY3RvcjxpbnQ+XFwqPj5cXFxbMTBcXFxdPiIgfSB9Ci0gIC8vIHsg ZGctZmluYWwgeyB3aGF0aXMtcmVnZXhwLXRlc3QgcDQgInN0ZDo6dW5pcXVlX3B0cjxzdGQ6 OihfX2RlYnVnOjopP3ZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8c3RkOjooX19kZWJ1Zzo6KT9s aXN0PHN0ZDo6c3RyaW5nPlxcXFtcXFxdPj5cXFxbOTlcXFxdPiIgeyB4ZmFpbCB7IGMrKzIw IHx8IGRlYnVnX21vZGUgfSB9IH0gfQorICAvLyB7IGRnLWZpbmFsIHsgd2hhdGlzLXJlZ2V4 cC10ZXN0IHA0ICJzdGQ6OnVuaXF1ZV9wdHI8c3RkOjooX19kZWJ1Zzo6KT92ZWN0b3I8c3Rk Ojp1bmlxdWVfcHRyPHN0ZDo6KF9fZGVidWc6Oik/bGlzdDxzdGQ6OnN0cmluZz5cXFxbXFxc XT4+XFxcWzk5XFxcXT4iIH0gfQogCiAgIHBsYWNlaG9sZGVyKCZwMSk7CQkvLyBNYXJrIFNQ T1QKICAgcGxhY2Vob2xkZXIoJnAyKTsKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvbGlic3RkYysrLXByZXR0eXByaW50ZXJzL2N4eDE3LmNjIGIvbGlic3RkYysrLXYz L3Rlc3RzdWl0ZS9saWJzdGRjKystcHJldHR5cHJpbnRlcnMvY3h4MTcuY2MKaW5kZXggZTUy ZmZiYmNjMTUuLmNmNjk5ZDIyZTc4IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1 aXRlL2xpYnN0ZGMrKy1wcmV0dHlwcmludGVycy9jeHgxNy5jYworKysgYi9saWJzdGRjKyst djMvdGVzdHN1aXRlL2xpYnN0ZGMrKy1wcmV0dHlwcmludGVycy9jeHgxNy5jYwpAQCAtMTgs OSArMTgsNiBAQAogLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H My4gIElmIG5vdCBzZWUKIC8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAot Ly8gVHlwZSBwcmludGVycyBvbmx5IHJlY29nbml6ZSB0aGUgb2xkIHN0ZDo6c3RyaW5nIGZv ciBub3cuCi0jZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgMAotCiAjaW5jbHVkZSA8 ZmlsZXN5c3RlbT4KICNpbmNsdWRlIDxhbnk+CiAjaW5jbHVkZSA8b3B0aW9uYWw+CmRpZmYg LS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMrKy1wcmV0dHlwcmludGVy cy9saWJmdW5kdHMuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMrKy1wcmV0 dHlwcmludGVycy9saWJmdW5kdHMuY2MKaW5kZXggZTgxMzA4ZDRmN2UuLmIyZjQ2NGQwODk0 IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMrKy1wcmV0dHlw cmludGVycy9saWJmdW5kdHMuY2MKKysrIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9saWJz dGRjKystcHJldHR5cHJpbnRlcnMvbGliZnVuZHRzLmNjCkBAIC0xOCw5ICsxOCw2IEBACiAv LyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNl ZQogLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi0vLyBUeXBlIHByaW50 ZXJzIG9ubHkgcmVjb2duaXplIHRoZSBvbGQgc3RkOjpzdHJpbmcgZm9yIG5vdy4KLSNkZWZp bmUgX0dMSUJDWFhfVVNFX0NYWDExX0FCSSAwCi0KICNpbmNsdWRlIDxleHBlcmltZW50YWwv YW55PgogI2luY2x1ZGUgPGV4cGVyaW1lbnRhbC9vcHRpb25hbD4KICNpbmNsdWRlIDxleHBl cmltZW50YWwvc3RyaW5nX3ZpZXc+CkBAIC01MCw3ICs0Nyw3IEBAIG1haW4oKQogICBvbSA9 IHN0ZDo6bWFwPGludCwgZG91YmxlPnsgezEsIDIufSwgezMsIDQufSwgezUsIDYufSB9Owog Ly8geyBkZy1maW5hbCB7IHJlZ2V4cC10ZXN0IG9tIHtzdGQ6OmV4cGVyaW1lbnRhbDo6b3B0 aW9uYWw8c3RkOjooX19kZWJ1Zzo6KT9tYXA8aW50LCBkb3VibGU+PiBjb250YWluaW5nIHN0 ZDo6KF9fZGVidWc6Oik/bWFwIHdpdGggMyBlbGVtZW50cyA9IHtcWzFcXSA9IDIsIFxbM1xd ID0gNCwgXFs1XF0gPSA2fX0gfSB9CiAgIG9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBvc3sgInN0 cmluZ3kiIH07Ci0vLyB7IGRnLWZpbmFsIHsgbm90ZS10ZXN0IG9zIHtzdGQ6OmV4cGVyaW1l bnRhbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+ID0ge1tjb250YWluZWQgdmFsdWVdID0gInN0 cmluZ3kifX0geyB4ZmFpbCB7IGMrKzIwIHx8IGRlYnVnX21vZGUgfSB9IH0gfQorLy8geyBk Zy1maW5hbCB7IG5vdGUtdGVzdCBvcyB7c3RkOjpleHBlcmltZW50YWw6Om9wdGlvbmFsPHN0 ZDo6c3RyaW5nPiA9IHtbY29udGFpbmVkIHZhbHVlXSA9ICJzdHJpbmd5In19IH0gfQogCiAg IGFueSBhOwogLy8geyBkZy1maW5hbCB7IG5vdGUtdGVzdCBhIHtzdGQ6OmV4cGVyaW1lbnRh bDo6YW55IFtubyBjb250YWluZWQgdmFsdWVdfSB9IH0KQEAgLTYxLDcgKzU4LDcgQEAgbWFp bigpCiAgIGFueSBhcCA9ICh2b2lkKiludWxscHRyOwogLy8geyBkZy1maW5hbCB7IG5vdGUt dGVzdCBhcCB7c3RkOjpleHBlcmltZW50YWw6OmFueSBjb250YWluaW5nIHZvaWQgKiA9IHtb Y29udGFpbmVkIHZhbHVlXSA9IDB4MH19IH0gfQogICBhbnkgYXMgPSAqb3M7Ci0vLyB7IGRn LWZpbmFsIHsgbm90ZS10ZXN0IGFzIHtzdGQ6OmV4cGVyaW1lbnRhbDo6YW55IGNvbnRhaW5p bmcgc3RkOjpzdHJpbmcgPSB7W2NvbnRhaW5lZCB2YWx1ZV0gPSAic3RyaW5neSJ9fSB7IHhm YWlsIHsgYysrMjAgfHwgZGVidWdfbW9kZSB9IH0gfSB9CisvLyB7IGRnLWZpbmFsIHsgbm90 ZS10ZXN0IGFzIHtzdGQ6OmV4cGVyaW1lbnRhbDo6YW55IGNvbnRhaW5pbmcgc3RkOjpzdHJp bmcgPSB7W2NvbnRhaW5lZCB2YWx1ZV0gPSAic3RyaW5neSJ9fSB9IH0KICAgYW55IGFzMigi c3RyaW5naWVzdCIpOwogLy8geyBkZy1maW5hbCB7IHJlZ2V4cC10ZXN0IGFzMiB7c3RkOjpl eHBlcmltZW50YWw6OmFueSBjb250YWluaW5nIGNvbnN0IGNoYXIgXCogPSB7XFtjb250YWlu ZWQgdmFsdWVcXSA9IDB4W1s6eGRpZ2l0Ol1dKyAic3RyaW5naWVzdCJ9fSB9IH0KICAgYW55 IGFtID0gKm9tOwpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9saWJzdGRj KystcHJldHR5cHJpbnRlcnMvc2ltcGxlLmNjIGIvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9s aWJzdGRjKystcHJldHR5cHJpbnRlcnMvc2ltcGxlLmNjCmluZGV4IDE2MDlhZTJjOGRiLi40 MWFlYzk1MWM1ZCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS9saWJzdGRj KystcHJldHR5cHJpbnRlcnMvc2ltcGxlLmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3Vp dGUvbGlic3RkYysrLXByZXR0eXByaW50ZXJzL3NpbXBsZS5jYwpAQCAtMjAsOSArMjAsNiBA QAogLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5v dCBzZWUKIC8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotLy8gVHlwZSBw cmludGVycyBvbmx5IHJlY29nbml6ZSB0aGUgb2xkIHN0ZDo6c3RyaW5nIGZvciBub3cuCi0j ZGVmaW5lIF9HTElCQ1hYX1VTRV9DWFgxMV9BQkkgMAotCiAjaW5jbHVkZSA8c3RyaW5nPgog I2luY2x1ZGUgPGRlcXVlPgogI2luY2x1ZGUgPGJpdHNldD4KQEAgLTY1LDcgKzYyLDcgQEAg bWFpbigpCiAgIHN0ZDo6bGlzdDxzdGQ6OnN0cmluZz4gbHN0OwogICBsc3QucHVzaF9iYWNr KCJvbmUiKTsKICAgbHN0LnB1c2hfYmFjaygidHdvIik7Ci0vLyB7IGRnLWZpbmFsIHsgcmVn ZXhwLXRlc3QgbHN0IHtzdGQ6OihfX2RlYnVnOjopP2xpc3QgPSB7XFswXF0gPSAib25lIiwg XFsxXF0gPSAidHdvIn19IH0gfQorLy8geyBkZy1maW5hbCB7IHJlZ2V4cC10ZXN0IGxzdCB7 c3RkOjooX19jeHgxMTo6KT8oX19kZWJ1Zzo6KT9saXN0ID0ge1xbMFxdID0gIm9uZSIsIFxb MVxdID0gInR3byJ9fSB9IH0KIAogICBzdGQ6Omxpc3Q8aW50Pjo6aXRlcmF0b3IgbHN0aXRl cjA7CiAvLyB7IGRnLWZpbmFsIHsgbm90ZS10ZXN0IGxzdGl0ZXIwIHtub24tZGVyZWZlcmVu Y2VhYmxlIGl0ZXJhdG9yIGZvciBzdGQ6Omxpc3R9IH0gfQpkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL3Rlc3RzdWl0ZS9saWJzdGRjKystcHJldHR5cHJpbnRlcnMvc2ltcGxlMTEuY2Mg Yi9saWJzdGRjKystdjMvdGVzdHN1aXRlL2xpYnN0ZGMrKy1wcmV0dHlwcmludGVycy9zaW1w bGUxMS5jYwppbmRleCBhNGI4MmUzMGY5Yy4uNDA3ZmVlNDI2N2MgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My90ZXN0c3VpdGUvbGlic3RkYysrLXByZXR0eXByaW50ZXJzL3NpbXBsZTEx LmNjCisrKyBiL2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvbGlic3RkYysrLXByZXR0eXByaW50 ZXJzL3NpbXBsZTExLmNjCkBAIC0yMCw5ICsyMCw2IEBACiAvLyB3aXRoIHRoaXMgbGlicmFy eTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogLy8gPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgogCi0vLyBUeXBlIHByaW50ZXJzIG9ubHkgcmVjb2duaXpl IHRoZSBvbGQgc3RkOjpzdHJpbmcgZm9yIG5vdy4KLSNkZWZpbmUgX0dMSUJDWFhfVVNFX0NY WDExX0FCSSAwCi0KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8ZGVxdWU+CiAjaW5j bHVkZSA8Yml0c2V0PgpAQCAtNjEsNyArNTgsNyBAQCBtYWluKCkKICAgc3RkOjpsaXN0PHN0 ZDo6c3RyaW5nPiBsc3Q7CiAgIGxzdC5wdXNoX2JhY2soIm9uZSIpOwogICBsc3QucHVzaF9i YWNrKCJ0d28iKTsKLS8vIHsgZGctZmluYWwgeyByZWdleHAtdGVzdCBsc3Qge3N0ZDo6KF9f ZGVidWc6Oik/bGlzdCA9IHtcWzBcXSA9ICJvbmUiLCBcWzFcXSA9ICJ0d28ifX0gfSB9Cisv LyB7IGRnLWZpbmFsIHsgcmVnZXhwLXRlc3QgbHN0IHtzdGQ6OihfX2N4eDExOjopPyhfX2Rl YnVnOjopP2xpc3QgPSB7XFswXF0gPSAib25lIiwgXFsxXF0gPSAidHdvIn19IH0gfQogCiAg IHN0ZDo6bGlzdDxzdGQ6OnN0cmluZz46Oml0ZXJhdG9yIGxzdGl0ZXIgPSBsc3QuYmVnaW4o KTsKICAgdGVtID0gKmxzdGl0ZXI7CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1 aXRlL2xpYnN0ZGMrKy1wcmV0dHlwcmludGVycy93aGF0aXMuY2MgYi9saWJzdGRjKystdjMv dGVzdHN1aXRlL2xpYnN0ZGMrKy1wcmV0dHlwcmludGVycy93aGF0aXMuY2MKaW5kZXggMDQ2 ZDI2ZjAwMjAuLjIzYjk5NDdhNWRlIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVzdHN1 aXRlL2xpYnN0ZGMrKy1wcmV0dHlwcmludGVycy93aGF0aXMuY2MKKysrIGIvbGlic3RkYysr LXYzL3Rlc3RzdWl0ZS9saWJzdGRjKystcHJldHR5cHJpbnRlcnMvd2hhdGlzLmNjCkBAIC0x OCwxMCArMTgsNiBAQAogLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ SU5HMy4gIElmIG5vdCBzZWUKIC8vIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K IAotLy8gR0RCIGNhbid0IGZpbmQgZ2xvYmFsIHZhcmlhYmxlcyB1c2luZyB0aGUgYWJpX3Rh ZyBhdHRyaWJ1dGUuCi0vLyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3df YnVnLmNnaT9pZD0xOTQzNgotI2RlZmluZSBfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJIDAKLQog I2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDxyZWdl eD4K --------------AsERRtxKZoOR5KsTxSzQdPtt--