From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by sourceware.org (Postfix) with ESMTPS id 33F843858C20; Tue, 9 Aug 2022 08:07:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 33F843858C20 Received: by mail-wm1-x32f.google.com with SMTP id v131-20020a1cac89000000b003a4bb3f786bso8584047wme.0; Tue, 09 Aug 2022 01:07:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc; bh=9Ixo5nWetUQb49O+qw4sNNIxhQhs2tVGNkOrKVWoGYM=; b=iEksaAui2+KLlB1vVbmysjatiBzAb8mm0F1GuZUJUG2/ZUMMLw1Xei94C8DmrT0h0G GmXysb1wAVXsNAxeS3Bas6ygSIv82a168SWvOp/E++VG+hJRSLKSRYNG3v8nxo4jor0Q Oj9i7wXfkLYmpIX5vc5yR/4LFFkmroe4/kNhidlYc6NgQH1Ud8lO65UBegSy6n0vwz0z 9zGibgmmAW8L6CmEoFgzB+wQrcXRRVM1Q4lyQ6g4gNmobl5fbmvzrJfl5lRO/wnpJoAq qesKW0r4cwcl9plIUPEzhO471UyLWs0XWzeMZtPmY47IQwl1BWO5rvAbBgFD3kiUbewD jUUw== X-Gm-Message-State: ACgBeo1xtI8W6Bl3JU3f+LJ8ycSDqmP0I4TxxDUDigvjw3oPCpKNfalX LOidlBqOmOCAWLo21FXYVwo= X-Google-Smtp-Source: AA6agR5BQ1Z59iQQhtmSjmkjmqEFs5fRdYILasrWL9UtldXhhSwJsvwg4tYCYEYkgfS7iBiHyx1Wgw== X-Received: by 2002:a1c:2542:0:b0:3a3:2dcd:8736 with SMTP id l63-20020a1c2542000000b003a32dcd8736mr20227943wml.57.1660032428040; Tue, 09 Aug 2022 01:07:08 -0700 (PDT) Received: from ?IPV6:2a01:e0a:1dc:b1c0:8156:9609:52d:5d34? ([2a01:e0a:1dc:b1c0:8156:9609:52d:5d34]) by smtp.googlemail.com with ESMTPSA id i5-20020a05600c2d8500b003a325bd8517sm17622157wmg.5.2022.08.09.01.07.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Aug 2022 01:07:07 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------5JYFHll3zIxK3091wOFh0Xep" Message-ID: Date: Tue, 9 Aug 2022 10:07:06 +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] Add _GLIBCXX_DEBUG backtrace generation Content-Language: fr To: Jonathan Wakely Cc: "libstdc++@gcc.gnu.org" , gcc-patches References: From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= In-Reply-To: X-Spam-Status: No, score=-11.1 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, 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: Tue, 09 Aug 2022 08:07:14 -0000 This is a multi-part message in MIME format. --------------5JYFHll3zIxK3091wOFh0Xep Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 08/08/22 15:29, Jonathan Wakely wrote: > On Wed, 13 Jul 2022 at 18:28, François Dumont via Libstdc++ > wrote: >> libstdc++: [_GLIBCXX_DEBUG] Add backtrace generation on demand >> >> Add _GLIBCXX_DEBUG_BACKTRACE macro to activate backtrace generation >> on _GLIBCXX_DEBUG assertions. Prerequisite is to have configure the lib >> with: >> >> --enable-libstdcxx-backtrace=yes >> >> libstdc++-v3/ChangeLog: >> >> * include/debug/formatter.h >> [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_state): Declare. >> [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_create_state): Declare. >> [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_callback): Define. >> [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_error_callback): Define. >> [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full_func): Define. >> [_GLIBCXX_HAVE_STACKTRACE](__glibcxx_backtrace_full): Declare. >> [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_state): New. >> [_GLIBCXX_HAVE_STACKTRACE](_Error_formatter::_M_backtrace_full): New. >> * src/c++11/debug.cc (pretty_print): Rename into... >> (print_function): ...that. > This does more than just rename it, what are the other changes for? Nothing, I'm starting to remember what you did on this, reverted. > > >> [_GLIBCXX_HAVE_STACKTRACE](print_backtrace): New. >> (_Error_formatter::_M_error()): Adapt. >> * src/libbacktrace/Makefile.am: Add backtrace.c. >> * src/libbacktrace/Makefile.in: Regenerate. >> * src/libbacktrace/backtrace-rename.h (backtrace_full): New. >> * testsuite/23_containers/vector/debug/assign4_neg.cc: Add backtrace >> generation. >> * doc/xml/manual/debug_mode.xml: Document _GLIBCXX_DEBUG_BACKTRACE. >> * doc/xml/manual/using.xml: Likewise. >> >> Tested under Linux x86_64 normal and _GLIBCXX_DEBUG modes. >> >> Ok to commit ? > >> --- a/libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc >> +++ b/libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc >> @@ -16,6 +16,7 @@ >> // . >> // >> // { dg-do run { xfail *-*-* } } >> +// { dg-options "-D_GLIBCXX_DEBUG_BACKTRACE -lstdc++_libbacktrace" } >> >> #include >> #include > This will fail to link if the static lib isn't available. > Good point ! So I am introducing a new test case with the necessary dg directive. It is a 'run' test case even if what is really tested is only the compilation/link part. For the run part someone has to look at the log file. François --------------5JYFHll3zIxK3091wOFh0Xep Content-Type: text/x-patch; charset=UTF-8; name="debug_backtrace.patch" Content-Disposition: attachment; filename="debug_backtrace.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9kb2MveG1sL21hbnVhbC9kZWJ1Z19tb2RlLnht bCBiL2xpYnN0ZGMrKy12My9kb2MveG1sL21hbnVhbC9kZWJ1Z19tb2RlLnhtbAppbmRleCA5 ODhjNGE5MzYwMS4uZGFkYzBjZDFiYjQgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9kb2Mv eG1sL21hbnVhbC9kZWJ1Z19tb2RlLnhtbAorKysgYi9saWJzdGRjKystdjMvZG9jL3htbC9t YW51YWwvZGVidWdfbW9kZS54bWwKQEAgLTE2MSw2ICsxNjEsMTIgQEAgd2hpY2ggYWx3YXlz IHdvcmtzIGNvcnJlY3RseS4KICAgPGNvZGU+R0xJQkNYWF9ERUJVR19NRVNTQUdFX0xFTkdU SDwvY29kZT4gY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBhCiAgIGRpZmZlcmVudCBsZW5ndGgu PC9wYXJhPgogCis8cGFyYT5Ob3RlIHRoYXQgbGlic3RkYysrIGlzIGFibGUgdG8gcHJvZHVj ZSBiYWNrdHJhY2VzIG9uIGVycm9yLgorICBJdCByZXF1aXJlcyB0aGF0IHlvdSBjb25maWd1 cmUgbGlic3RkYysrIGJ1aWxkIHdpdGgKKyAgPG9wdGlvbj4tLWVuYWJsZS1saWJzdGRjeHgt YmFja3RyYWNlPXllczwvb3B0aW9uPi4KKyAgVXNlIDxjb2RlPi1EX0dMSUJDWFhfREVCVUdf QkFDS1RSQUNFPC9jb2RlPiB0byBhY3RpdmF0ZSBpdC4KKyAgWW91J2xsIHRoZW4gaGF2ZSB0 byBsaW5rIHdpdGggbGlic3RkYysrX2xpYmJhY2t0cmFjZSBzdGF0aWMgbGlicmFyeQorICAo PG9wdGlvbj4tbHN0ZGMrK19saWJiYWNrdHJhY2U8L29wdGlvbj4pIHRvIGJ1aWxkIHlvdXIg YXBwbGljYXRpb24uPC9wYXJhPgogPC9zZWN0aW9uPgogCiA8c2VjdGlvbiB4bWw6aWQ9ImRl YnVnX21vZGUudXNpbmcuc3BlY2lmaWMiIHhyZWZsYWJlbD0iVXNpbmcgU3BlY2lmaWMiPjxp bmZvPjx0aXRsZT5Vc2luZyBhIFNwZWNpZmljIERlYnVnIENvbnRhaW5lcjwvdGl0bGU+PC9p bmZvPgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2RvYy94bWwvbWFudWFsL3VzaW5nLnht bCBiL2xpYnN0ZGMrKy12My9kb2MveG1sL21hbnVhbC91c2luZy54bWwKaW5kZXggMzZiODY3 MDJkMjIuLjI2ZjE0ZmFlMTk0IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvZG9jL3htbC9t YW51YWwvdXNpbmcueG1sCisrKyBiL2xpYnN0ZGMrKy12My9kb2MveG1sL21hbnVhbC91c2lu Zy54bWwKQEAgLTExMjksNiArMTEyOSwxNSBAQCBnKysgLVdpbnZhbGlkLXBjaCAtSS4gLWlu Y2x1ZGUgc3RkYysrLmggLUggLWcgLU8yIGhlbGxvLmNjIC1vIHRlc3QuZXhlCiAJZXh0ZW5z aW9ucyBhbmQgbGlic3RkYysrLXNwZWNpZmljIGJlaGF2aW9yIGludG8gZXJyb3JzLgogICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisgICAgPHZhcmxp c3RlbnRyeT48dGVybT48Y29kZT5fR0xJQkNYWF9ERUJVR19CQUNLVFJBQ0U8L2NvZGU+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorCVVuZGVmaW5lZCBieSBkZWZh dWx0LiBDb25zaWRlcmVkIG9ubHkgaWYgbGlic3RkYysrIGhhcyBiZWVuIGNvbmZpZ3VyZWQg d2l0aAorCTxvcHRpb24+LS1lbmFibGUtbGlic3RkY3h4LWJhY2t0cmFjZT15ZXM8L29wdGlv bj4gYW5kIGlmIDxjb2RlPl9HTElCQ1hYX0RFQlVHPC9jb2RlPgorCWlzIGRlZmluZWQuIFdo ZW4gZGVmaW5lZCBkaXNwbGF5IGJhY2t0cmFjZXMgb24KKwk8bGluayBsaW5rZW5kPSJtYW51 YWwuZXh0LmRlYnVnX21vZGUiPmRlYnVnIG1vZGU8L2xpbms+IGFzc2VydGlvbnMuCisgICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KICAgICA8dmFybGlz dGVudHJ5Pjx0ZXJtPjxjb2RlPl9HTElCQ1hYX1BBUkFMTEVMPC9jb2RlPjwvdGVybT4KICAg ICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT5VbmRlZmluZWQgYnkgZGVmYXVsdC4gV2hlbiBk ZWZpbmVkLCBjb21waWxlcyB1c2VyIGNvZGUKQEAgLTE2MzUsNiArMTY0NCw3IEBAIEEgcXVp Y2sgcmVhZCBvZiB0aGUgcmVsZXZhbnQgcGFydCBvZiB0aGUgR0NDCiAgICAgICBoZWFkZXIg d2lsbCByZW1haW4gY29tcGF0aWJsZSBiZXR3ZWVuIGRpZmZlcmVudCBHQ0MgcmVsZWFzZXMu CiAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKwogICA8L3NlY3Rpb24+CiAKICAgPHNl Y3Rpb24geG1sOmlkPSJtYW51YWwuaW50cm8udXNpbmcuY29uY3VycmVuY3kiIHhyZWZsYWJl bD0iQ29uY3VycmVuY3kiPjxpbmZvPjx0aXRsZT5Db25jdXJyZW5jeTwvdGl0bGU+PC9pbmZv PgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvZm9ybWF0dGVyLmgg Yi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9mb3JtYXR0ZXIuaAppbmRleCA3NDhkNGZi ZmVhNC4uYjRiNzIzODNlMjIgMTAwNjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Rl YnVnL2Zvcm1hdHRlci5oCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL2Zvcm1h dHRlci5oCkBAIC0zMSw2ICszMSwzNyBAQAogCiAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcu aD4KIAorI2lmIF9HTElCQ1hYX0hBVkVfU1RBQ0tUUkFDRQorc3RydWN0IF9fZ2xpYmN4eF9i YWNrdHJhY2Vfc3RhdGU7CisKK2V4dGVybiAiQyIKK3sKKyAgX19nbGliY3h4X2JhY2t0cmFj ZV9zdGF0ZSoKKyAgX19nbGliY3h4X2JhY2t0cmFjZV9jcmVhdGVfc3RhdGUoY29uc3QgY2hh ciosIGludCwKKwkJCQkgICB2b2lkKCopKHZvaWQqLCBjb25zdCBjaGFyKiwgaW50KSwKKwkJ CQkgICB2b2lkKik7CisKKyAgdHlwZWRlZiBpbnQgKCpfX2dsaWJjeHhfYmFja3RyYWNlX2Z1 bGxfY2FsbGJhY2spICgKKyAgICB2b2lkKiwgX19VSU5UUFRSX1RZUEVfXywgY29uc3QgY2hh ciAqLCBpbnQsIGNvbnN0IGNoYXIqKTsKKworICB0eXBlZGVmIHZvaWQgKCpfX2dsaWJjeHhf YmFja3RyYWNlX2Vycm9yX2NhbGxiYWNrKSAoCisgICAgdm9pZCosIGNvbnN0IGNoYXIqLCBp bnQpOworCisgIHR5cGVkZWYgaW50ICgqX19nbGliY3h4X2JhY2t0cmFjZV9mdWxsX2Z1bmMp ICgKKyAgICBfX2dsaWJjeHhfYmFja3RyYWNlX3N0YXRlKiwgaW50LAorICAgIF9fZ2xpYmN4 eF9iYWNrdHJhY2VfZnVsbF9jYWxsYmFjaywKKyAgICBfX2dsaWJjeHhfYmFja3RyYWNlX2Vy cm9yX2NhbGxiYWNrLAorICAgIHZvaWQqKTsKKworICBpbnQKKyAgX19nbGliY3h4X2JhY2t0 cmFjZV9mdWxsKAorICAgIF9fZ2xpYmN4eF9iYWNrdHJhY2Vfc3RhdGUqLCBpbnQsCisgICAg X19nbGliY3h4X2JhY2t0cmFjZV9mdWxsX2NhbGxiYWNrLAorICAgIF9fZ2xpYmN4eF9iYWNr dHJhY2VfZXJyb3JfY2FsbGJhY2ssCisgICAgdm9pZCopOworfQorI2VuZGlmCisKICNpZiBf X2NwcF9ydHRpCiAjIGluY2x1ZGUgPHR5cGVpbmZvPgogIyBkZWZpbmUgX0dMSUJDWFhfVFlQ RUlEKF9UeXBlKSAmdHlwZWlkKF9UeXBlKQpAQCAtNTc2LDYgKzYwNywxNSBAQCBuYW1lc3Bh Y2UgX19nbnVfZGVidWcKIAkJICAgICBjb25zdCBjaGFyKiBfX2Z1bmN0aW9uKQogICAgIDog X01fZmlsZShfX2ZpbGUpLCBfTV9saW5lKF9fbGluZSksIF9NX251bV9wYXJhbWV0ZXJzKDAp LCBfTV90ZXh0KDApCiAgICAgLCBfTV9mdW5jdGlvbihfX2Z1bmN0aW9uKQorI2lmIF9HTElC Q1hYX0hBVkVfU1RBQ0tUUkFDRQorIyBpZmRlZiBfR0xJQkNYWF9ERUJVR19CQUNLVFJBQ0UK KyAgICAsIF9NX2JhY2t0cmFjZV9zdGF0ZSgKKyAgICAgIF9fZ2xpYmN4eF9iYWNrdHJhY2Vf Y3JlYXRlX3N0YXRlKG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxwdHIpKQorICAgICwgX01f YmFja3RyYWNlX2Z1bGwoJl9fZ2xpYmN4eF9iYWNrdHJhY2VfZnVsbCkKKyMgZWxzZQorICAg ICwgX01fYmFja3RyYWNlX3N0YXRlKCkKKyMgZW5kaWYKKyNlbmRpZgogICAgIHsgfQogCiAj aWYgIV9HTElCQ1hYX0lOTElORV9WRVJTSU9OCkBAIC01OTEsNiArNjMxLDEwIEBAIG5hbWVz cGFjZSBfX2dudV9kZWJ1ZwogICAgIHVuc2lnbmVkIGludAlfTV9udW1fcGFyYW1ldGVyczsK ICAgICBjb25zdCBjaGFyKgkJX01fdGV4dDsKICAgICBjb25zdCBjaGFyKgkJX01fZnVuY3Rp b247CisjaWYgX0dMSUJDWFhfSEFWRV9TVEFDS1RSQUNFCisgICAgX19nbGliY3h4X2JhY2t0 cmFjZV9zdGF0ZSoJCV9NX2JhY2t0cmFjZV9zdGF0ZTsKKyAgICBfX2dsaWJjeHhfYmFja3Ry YWNlX2Z1bGxfZnVuYwlfTV9iYWNrdHJhY2VfZnVsbDsKKyNlbmRpZgogCiAgIHB1YmxpYzoK ICAgICBzdGF0aWMgX0Vycm9yX2Zvcm1hdHRlciYKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12 My9zcmMvYysrMTEvZGVidWcuY2MgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2RlYnVnLmNj CmluZGV4IDhlZDYxYTY5OTEzLi4yNTEyOWZlOTRkYyAxMDA2NDQKLS0tIGEvbGlic3RkYysr LXYzL3NyYy9jKysxMS9kZWJ1Zy5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Rl YnVnLmNjCkBAIC02MTEsMTAgKzYxMSwxMiBAQCBuYW1lc3BhY2UKICAgdm9pZAogICBwcmlu dF9yYXcoUHJpbnRDb250ZXh0JiBjdHgsIGNvbnN0IGNoYXIqIHN0ciwgcHRyZGlmZl90IG5i YyA9IC0xKQogICB7Ci0gICAgaWYgKG5iYyA+PSAwKQotICAgICAgY3R4Ll9NX2NvbHVtbiAr PSBmcHJpbnRmKHN0ZGVyciwgIiUuKnMiLCAoaW50KW5iYywgc3RyKTsKLSAgICBlbHNlCi0g ICAgICBjdHguX01fY29sdW1uICs9IGZwcmludGYoc3RkZXJyLCAiJXMiLCBzdHIpOworICAg IGlmIChuYmMgIT0gMCkKKyAgICAgIHsKKwljdHguX01fY29sdW1uICs9IChuYmMgPiAwKQor CSAgPyBmcHJpbnRmKHN0ZGVyciwgIiUuKnMiLCAoaW50KW5iYywgc3RyKQorCSAgOiBmcHJp bnRmKHN0ZGVyciwgIiVzIiwgc3RyKTsKKyAgICAgIH0KICAgfQogCiAgIHZvaWQKQEAgLTY2 OCw3ICs2NzAsNyBAQCBuYW1lc3BhY2UKICAgfQogCiAgIHZvaWQKLSAgcHJldHR5X3ByaW50 KFByaW50Q29udGV4dCYgY3R4LCBjb25zdCBjaGFyKiBzdHIsIF9QcmludF9mdW5jX3QgcHJp bnRfZnVuYykKKyAgcHJpbnRfZnVuY3Rpb24oUHJpbnRDb250ZXh0JiBjdHgsIGNvbnN0IGNo YXIqIHN0ciwgX1ByaW50X2Z1bmNfdCBwcmludF9mdW5jKQogICB7CiAgICAgY29uc3QgY2hh ciBjeHgxOTk4W10gPSAiY3h4MTk5ODo6IjsKICAgICBmb3IgKDs7KQpAQCAtNjgwLDcgKzY4 Miw3IEBAIG5hbWVzcGFjZQogCiAJICAgIHBvcyArPSAyOyAvLyBhZHZhbmNlIHBhc3QgIl9f IgogCSAgICBpZiAobWVtY21wKHBvcywgY3h4MTk5OCwgOSkgPT0gMCkKLQkgICAgICBwb3Mg Kz0gOTsgLy8gYWR2YW5jZSBwYXJ0ICJjeHgxOTk4OjoiCisJICAgICAgcG9zICs9IDk7IC8v IGFkdmFuY2UgcGFzdCAiY3h4MTk5ODo6IgogCiAJICAgIHN0ciA9IHBvczsKIAkgIH0KQEAg LTcwNiw3ICs3MDgsNyBAQCBuYW1lc3BhY2UKIAkgIGNoYXIqIGRlbWFuZ2xlZF9uYW1lID0K IAkgICAgX19jeHhhYml2MTo6X19jeGFfZGVtYW5nbGUoaW5mby0+bmFtZSgpLCBOVUxMLCBO VUxMLCAmc3RhdHVzKTsKIAkgIGlmIChzdGF0dXMgPT0gMCkKLQkgICAgcHJldHR5X3ByaW50 KGN0eCwgZGVtYW5nbGVkX25hbWUsICZwcmludF93b3JkKTsKKwkgICAgcHJpbnRfZnVuY3Rp b24oY3R4LCBkZW1hbmdsZWRfbmFtZSwgJnByaW50X3dvcmQpOwogCSAgZWxzZQogCSAgICBw cmludF93b3JkKGN0eCwgaW5mby0+bmFtZSgpKTsKIAkgIGZyZWUoZGVtYW5nbGVkX25hbWUp OwpAQCAtNzM3LDcgKzczOSw3IEBAIG5hbWVzcGFjZQogICBwcmludF9uYW1lZF9uYW1lKFBy aW50Q29udGV4dCYgY3R4LCBjb25zdCBfUGFyYW1ldGVyOjpfTmFtZWQmIG5hbWVkKQogICB7 CiAgICAgYXNzZXJ0KG5hbWVkLl9NX25hbWUpOwotICAgIHByZXR0eV9wcmludChjdHgsIG5h bWVkLl9NX25hbWUsIHByaW50X3dvcmQpOworICAgIHByaW50X2Z1bmN0aW9uKGN0eCwgbmFt ZWQuX01fbmFtZSwgcHJpbnRfd29yZCk7CiAgIH0KIAogICB0ZW1wbGF0ZTx0eXBlbmFtZSBf SXRlcmF0b3I+CkBAIC0xMDkzLDYgKzEwOTUsNTggQEAgbmFtZXNwYWNlCiAgIHZvaWQKICAg cHJpbnRfc3RyaW5nKFByaW50Q29udGV4dCYgY3R4LCBjb25zdCBjaGFyKiBzdHIsIHB0cmRp ZmZfdCBuYmMpCiAgIHsgcHJpbnRfc3RyaW5nKGN0eCwgc3RyLCBuYmMsIG51bGxwdHIsIDAp OyB9CisKKyNpZiBfR0xJQkNYWF9IQVZFX1NUQUNLVFJBQ0UKKyAgaW50CisgIHByaW50X2Jh Y2t0cmFjZSh2b2lkKiBkYXRhLCBfX1VJTlRQVFJfVFlQRV9fIHBjLCBjb25zdCBjaGFyKiBm aWxlbmFtZSwKKwkJICBpbnQgbGluZW5vLCBjb25zdCBjaGFyKiBmdW5jdGlvbikKKyAgewor ICAgIGNvbnN0IGludCBidWZzaXplID0gNjQ7CisgICAgY2hhciBidWZbYnVmc2l6ZV07CisK KyAgICBQcmludENvbnRleHQmIGN0eCA9ICpzdGF0aWNfY2FzdDxQcmludENvbnRleHQqPihk YXRhKTsKKworICAgIGludCB3cml0dGVuID0gX19idWlsdGluX3NwcmludGYoYnVmLCAiJXAg IiwgKHZvaWQqKXBjKTsKKyAgICBwcmludF93b3JkKGN0eCwgYnVmLCB3cml0dGVuKTsKKwor ICAgIGludCByZXQgPSAwOworICAgIGlmIChmdW5jdGlvbikKKyAgICAgIHsKKwlpbnQgc3Rh dHVzOworCWNoYXIqIGRlbWFuZ2xlZF9uYW1lID0KKwkgIF9fY3h4YWJpdjE6Ol9fY3hhX2Rl bWFuZ2xlKGZ1bmN0aW9uLCBOVUxMLCBOVUxMLCAmc3RhdHVzKTsKKwlpZiAoc3RhdHVzID09 IDApCisJICBwcmludF9mdW5jdGlvbihjdHgsIGRlbWFuZ2xlZF9uYW1lLCAmcHJpbnRfcmF3 KTsKKwllbHNlCisJICBwcmludF93b3JkKGN0eCwgZnVuY3Rpb24pOworCisJZnJlZShkZW1h bmdsZWRfbmFtZSk7CisJcmV0ID0gc3Ryc3RyKGZ1bmN0aW9uLCAibWFpbiIpID8gMSA6IDA7 CisgICAgICB9CisKKyAgICBwcmludF9saXRlcmFsKGN0eCwgIlxuIik7CisKKyAgICBpZiAo ZmlsZW5hbWUpCisgICAgICB7CisJYm9vbCB3b3Jkd3JhcCA9IGZhbHNlOworCXN3YXAod29y ZHdyYXAsIGN0eC5fTV93b3Jkd3JhcCk7CisJcHJpbnRfd29yZChjdHgsIGZpbGVuYW1lKTsK KworCWlmIChsaW5lbm8pCisJICB7CisJICAgIHdyaXR0ZW4gPSBfX2J1aWx0aW5fc3ByaW50 ZihidWYsICI6JXVcbiIsIGxpbmVubyk7CisJICAgIHByaW50X3dvcmQoY3R4LCBidWYsIHdy aXR0ZW4pOworCSAgfQorCWVsc2UKKwkgIHByaW50X2xpdGVyYWwoY3R4LCAiXG4iKTsKKwlz d2FwKHdvcmR3cmFwLCBjdHguX01fd29yZHdyYXApOworICAgICAgfQorICAgIGVsc2UKKyAg ICAgIHByaW50X2xpdGVyYWwoY3R4LCAiPz8/OjBcbiIpOworCisgICAgcmV0dXJuIHJldDsK KyAgfQorI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwpAQCAtMTEzMywxMiAr MTE4NywyMyBAQCBuYW1lc3BhY2UgX19nbnVfZGVidWcKICAgICBpZiAoX01fZnVuY3Rpb24p CiAgICAgICB7CiAJcHJpbnRfbGl0ZXJhbChjdHgsICJJbiBmdW5jdGlvbjpcbiIpOwotCXBy ZXR0eV9wcmludChjdHgsIF9NX2Z1bmN0aW9uLCAmcHJpbnRfc3RyaW5nKTsKKwlwcmludF9m dW5jdGlvbihjdHgsIF9NX2Z1bmN0aW9uLCAmcHJpbnRfc3RyaW5nKTsKIAlwcmludF9saXRl cmFsKGN0eCwgIlxuIik7CiAJY3R4Ll9NX2ZpcnN0X2xpbmUgPSB0cnVlOwogCXByaW50X2xp dGVyYWwoY3R4LCAiXG4iKTsKICAgICAgIH0KIAorI2lmIF9HTElCQ1hYX0hBVkVfU1RBQ0tU UkFDRQorICAgIGlmIChfTV9iYWNrdHJhY2Vfc3RhdGUpCisgICAgICB7CisJcHJpbnRfbGl0 ZXJhbChjdHgsICJCYWNrdHJhY2U6XG4iKTsKKwlfTV9iYWNrdHJhY2VfZnVsbCgKKwkgIF9N X2JhY2t0cmFjZV9zdGF0ZSwgMSwgcHJpbnRfYmFja3RyYWNlLCBudWxscHRyLCAmY3R4KTsK KwljdHguX01fZmlyc3RfbGluZSA9IHRydWU7CisJcHJpbnRfbGl0ZXJhbChjdHgsICJcbiIp OworICAgICAgfQorI2VuZGlmCisKICAgICBwcmludF9saXRlcmFsKGN0eCwgIkVycm9yOiAi KTsKIAogICAgIC8vIFByaW50IHRoZSBlcnJvciBtZXNzYWdlCmRpZmYgLS1naXQgYS9saWJz dGRjKystdjMvc3JjL2xpYmJhY2t0cmFjZS9NYWtlZmlsZS5hbSBiL2xpYnN0ZGMrKy12My9z cmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmFtCmluZGV4IDBmMTE0MzUwN2YzLi41MmQ4Zjgx Yjk3YiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9saWJiYWNrdHJhY2UvTWFrZWZp bGUuYW0KKysrIGIvbGlic3RkYysrLXYzL3NyYy9saWJiYWNrdHJhY2UvTWFrZWZpbGUuYW0K QEAgLTYwLDYgKzYwLDcgQEAgbGlic3RkY19fX2xpYmJhY2t0cmFjZV9sYV9TSE9SVE5BTUUg PSAkKG9ial9wcmVmaXgpCiAKIGxpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfU09VUkNFUyA9 IFwKIAlhdG9taWMuYyBcCisJYmFja3RyYWNlLmMgXAogCWR3YXJmLmMgXAogCWZpbGVsaW5l LmMgXAogCXBvc2l4LmMgXApkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9saWJiYWNr dHJhY2UvTWFrZWZpbGUuaW4gYi9saWJzdGRjKystdjMvc3JjL2xpYmJhY2t0cmFjZS9NYWtl ZmlsZS5pbgppbmRleCA3NTQ1ODk0ZDU5YS4uNWM2YjRkZDFhMGMgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9zcmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmluCisrKyBiL2xpYnN0ZGMr Ky12My9zcmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmluCkBAIC0xODEsMTAgKzE4MSwxMCBA QCBhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCiBhbV9faW5zdGFsbGRpcnMg PSAiJChERVNURElSKSQodG9vbGV4ZWNsaWJkaXIpIgogTFRMSUJSQVJJRVMgPSAkKHRvb2xl eGVjbGliX0xUTElCUkFSSUVTKQogYW1fbGlic3RkY19fX2xpYmJhY2t0cmFjZV9sYV9PQkpF Q1RTID0gJChvYmpfcHJlZml4KS1hdG9taWMubG8gXAotCSQob2JqX3ByZWZpeCktZHdhcmYu bG8gJChvYmpfcHJlZml4KS1maWxlbGluZS5sbyBcCi0JJChvYmpfcHJlZml4KS1wb3NpeC5s byAkKG9ial9wcmVmaXgpLXNvcnQubG8gXAotCSQob2JqX3ByZWZpeCktc2ltcGxlLmxvICQo b2JqX3ByZWZpeCktc3RhdGUubG8gXAotCSQob2JqX3ByZWZpeCktY3AtZGVtYW5nbGUubG8K KwkkKG9ial9wcmVmaXgpLWJhY2t0cmFjZS5sbyAkKG9ial9wcmVmaXgpLWR3YXJmLmxvIFwK KwkkKG9ial9wcmVmaXgpLWZpbGVsaW5lLmxvICQob2JqX3ByZWZpeCktcG9zaXgubG8gXAor CSQob2JqX3ByZWZpeCktc29ydC5sbyAkKG9ial9wcmVmaXgpLXNpbXBsZS5sbyBcCisJJChv YmpfcHJlZml4KS1zdGF0ZS5sbyAkKG9ial9wcmVmaXgpLWNwLWRlbWFuZ2xlLmxvCiBsaWJz dGRjX19fbGliYmFja3RyYWNlX2xhX09CSkVDVFMgPSAgXAogCSQoYW1fbGlic3RkY19fX2xp YmJhY2t0cmFjZV9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQpA QCAtNTA3LDYgKzUwNyw3IEBAIG9ial9wcmVmaXggPSBzdGRfc3RhY2t0cmFjZQogbGlic3Rk Y19fX2xpYmJhY2t0cmFjZV9sYV9TSE9SVE5BTUUgPSAkKG9ial9wcmVmaXgpCiBsaWJzdGRj X19fbGliYmFja3RyYWNlX2xhX1NPVVJDRVMgPSBcCiAJYXRvbWljLmMgXAorCWJhY2t0cmFj ZS5jIFwKIAlkd2FyZi5jIFwKIAlmaWxlbGluZS5jIFwKIAlwb3NpeC5jIFwKQEAgLTY0Nyw2 ICs2NDgsOSBAQCBkaXN0Y2xlYW4tY29tcGlsZToKICQob2JqX3ByZWZpeCktYXRvbWljLmxv OiBhdG9taWMuYwogCSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0Mg JChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKEND KSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJzdGRjX19f bGliYmFja3RyYWNlX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChD RkxBR1MpIC1jIC1vICQob2JqX3ByZWZpeCktYXRvbWljLmxvIGB0ZXN0IC1mICdhdG9taWMu YycgfHwgZWNobyAnJChzcmNkaXIpLydgYXRvbWljLmMKIAorJChvYmpfcHJlZml4KS1iYWNr dHJhY2UubG86IGJhY2t0cmFjZS5jCisJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0 KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1j b21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAk KGxpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1f Q0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gJChvYmpfcHJlZml4KS1iYWNrdHJhY2UubG8gYHRl c3QgLWYgJ2JhY2t0cmFjZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BiYWNrdHJhY2UuYwor CiAkKG9ial9wcmVmaXgpLWR3YXJmLmxvOiBkd2FyZi5jCiAJJChBTV9WX0NDKSQoTElCVE9P TCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxB R1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAk KElOQ0xVREVTKSAkKGxpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfQ1BQRkxBR1MpICQoQ1BQ RkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gJChvYmpfcHJlZml4KS1kd2Fy Zi5sbyBgdGVzdCAtZiAnZHdhcmYuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZHdhcmYuYwog CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvc3JjL2xpYmJhY2t0cmFjZS9iYWNrdHJhY2Ut cmVuYW1lLmggYi9saWJzdGRjKystdjMvc3JjL2xpYmJhY2t0cmFjZS9iYWNrdHJhY2UtcmVu YW1lLmgKaW5kZXggN2E1OWYxNjZlNjIuLjc5YmRlZjYzMDlmIDEwMDY0NAotLS0gYS9saWJz dGRjKystdjMvc3JjL2xpYmJhY2t0cmFjZS9iYWNrdHJhY2UtcmVuYW1lLmgKKysrIGIvbGli c3RkYysrLXYzL3NyYy9saWJiYWNrdHJhY2UvYmFja3RyYWNlLXJlbmFtZS5oCkBAIC00LDYg KzQsNyBAQAogI2RlZmluZSBiYWNrdHJhY2VfY3JlYXRlX3N0YXRlIF9fZ2xpYmN4eF9iYWNr dHJhY2VfY3JlYXRlX3N0YXRlCiAjZGVmaW5lIGJhY2t0cmFjZV9kd2FyZl9hZGQgX19nbGli Y3h4X2JhY2t0cmFjZV9kd2FyZl9hZGQKICNkZWZpbmUgYmFja3RyYWNlX2ZyZWUgX19nbGli Y3h4X2JhY2t0cmFjZV9mcmVlCisjZGVmaW5lIGJhY2t0cmFjZV9mdWxsIF9fZ2xpYmN4eF9i YWNrdHJhY2VfZnVsbAogI2RlZmluZSBiYWNrdHJhY2VfZ2V0X3ZpZXcgX19nbGliY3h4X2Jh Y2t0cmFjZV9nZXRfdmlldwogI2RlZmluZSBiYWNrdHJhY2VfaW5pdGlhbGl6ZSBfX2dsaWJj eHhfYmFja3RyYWNlX2luaXRpYWxpemUKICNkZWZpbmUgYmFja3RyYWNlX29wZW4gX19nbGli Y3h4X2JhY2t0cmFjZV9vcGVuCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvdGVzdHN1aXRl LzIzX2NvbnRhaW5lcnMvdmVjdG9yL2RlYnVnL2Fzc2lnbjRfYmFja3RyYWNlX25lZy5jYyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy92ZWN0b3IvZGVidWcvYXNz aWduNF9iYWNrdHJhY2VfbmVnLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5iMjhjOTE2NDM2NQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My90 ZXN0c3VpdGUvMjNfY29udGFpbmVycy92ZWN0b3IvZGVidWcvYXNzaWduNF9iYWNrdHJhY2Vf bmVnLmNjCkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAyMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0 aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCisvLyBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0 aGUKKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlCisvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorLy8K Ky8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YWxvbmcKKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJ ZiBub3Qgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisvLworLy8g eyBkZy1kbyBydW4geyB4ZmFpbCAqLSotKiB9IH0KKy8vIHsgZGctb3B0aW9ucyAiLURfR0xJ QkNYWF9ERUJVR19CQUNLVFJBQ0UgLWxzdGRjKytfbGliYmFja3RyYWNlIiB9CisvLyB7IGRn LXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBzdGFja3RyYWNlIH0KKworI2luY2x1ZGUgPGRl YnVnL3ZlY3Rvcj4KKyNpbmNsdWRlIDxkZWJ1Zy9jaGVja3MuaD4KKwordm9pZCB0ZXN0MDEo KQoreworICBfX2dudV90ZXN0OjpjaGVja19hc3NpZ24xPF9fZ251X2RlYnVnOjp2ZWN0b3I8 aW50PiA+KCk7Cit9CisKK2ludCBtYWluKCkKK3sKKyAgdGVzdDAxKCk7CisgIHJldHVybiAw OworfQo= --------------5JYFHll3zIxK3091wOFh0Xep--