From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) by sourceware.org (Postfix) with ESMTPS id 331003857B86; Wed, 31 Aug 2022 05:05:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 331003857B86 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-ej1-x633.google.com with SMTP id cu2so26183741ejb.0; Tue, 30 Aug 2022 22:05:21 -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; bh=t2IWlMYu6A4C0hRI55mD0PK/d4Qt4KUhnb6MiGAsMN4=; b=OtG2ie1ukgI5f9ht6/cee0i5BvLfAiM9D9iGZSDJLG1XSl3unmbp2w0pVCh5jsG5sV GbnzpvwDJXHC4QkvOxCHWuKGncad8I4lwi3Aug/qmlBMi4Nlp+j8i/ZweQu2niibmbIM YqZBJQjVghaJZwcNnkNG3zAOjya7L/2qlNfjmr1MXqqNASi7pV3noUw5zg2rJKiOo4VU IN6B8WhcpwQOZtnv9knmwmLZAC4+aXATNL/DuSPpH1W0m2ArnhFgaKTGuXYv8a06CcvJ /lmowsY2ugDt0CASujf8wni6EVVPYLV5ZJzrm6D1UEO8TrBVU3C6uUEhMeu9oRB2DaHc uWjQ== 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; bh=t2IWlMYu6A4C0hRI55mD0PK/d4Qt4KUhnb6MiGAsMN4=; b=CSXDpcRSf+myd42jAwuOUomte0VqlAbcUFEBezf2WJJLWnR6yE10QWwHhTna2/nkyC mbZS3HrCyHDLtcLahml7OkXI2RdZa5rCYJOieUYH4ciZyTx5xRGyStBOIaXgCxzEmfLP i2kg0IqvslM0zWfZHA7HkSlDUbug32GK+M3DppgAPnuhAJ3r057JDOf7301OgfwN2Tan 9oqoYYJdaAnSxrijE6f5lflFVbCVmvacASTXNB46AlNjbigakuiGTnvQrV8GTcm+a9tn luLUW8OxTSe/WVKCzAvYP4Hqu8X1Ft6xF25sfn7Vn44Jj2fgW7sOVEQBgbspNVn4GjfD DeQA== X-Gm-Message-State: ACgBeo3iLCcQE1PUmoMcmzI2Og24a3ilIXcoeQs7ORTRIsZK7H//R2f7 ZZgL89ThUeNnZD5p3eVJKYo= X-Google-Smtp-Source: AA6agR5MKVs4GtxXLq+buZK9MwL4FNhilkaoJF+5Sbjiw4iShg8SzZP/rQgQ2iCdtjpeOCUwckUwxw== X-Received: by 2002:a17:907:1b22:b0:741:8809:b4e6 with SMTP id mp34-20020a1709071b2200b007418809b4e6mr9237868ejc.84.1661922319829; Tue, 30 Aug 2022 22:05:19 -0700 (PDT) Received: from [10.11.0.126] ([109.190.253.11]) by smtp.googlemail.com with ESMTPSA id n21-20020aa7d055000000b00447b1772a26sm8350351edo.12.2022.08.30.22.05.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Aug 2022 22:05:18 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------HksBoZBhGO0370Xh80VJlB3j" Message-ID: Date: Wed, 31 Aug 2022 07:05:17 +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 From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= To: Jonathan Wakely Cc: "libstdc++@gcc.gnu.org" , gcc-patches References: In-Reply-To: X-Spam-Status: No, score=-8.2 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_BARRACUDACENTRAL,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 List-Id: This is a multi-part message in MIME format. --------------HksBoZBhGO0370Xh80VJlB3j Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit After a second thought here is an even cleaner version. No more function rename, current pretty_print is fine.     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 [_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_backtrace_neg.cc: New test.             * doc/xml/manual/debug_mode.xml: Document _GLIBCXX_DEBUG_BACKTRACE.             * doc/xml/manual/using.xml: Likewise. Ok to commit ? François On 09/08/22 10:07, François Dumont wrote: > 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 --------------HksBoZBhGO0370Xh80VJlB3j 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 bCBiL2xpYnN0ZGMrKy12My9kb2MveG1sL21hbnVhbC91c2luZy54bWwKaW5kZXggMGI5YTBj OTg1MTguLjBhY2RiYTZiM2JkIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvZG9jL3htbC9t YW51YWwvdXNpbmcueG1sCisrKyBiL2xpYnN0ZGMrKy12My9kb2MveG1sL21hbnVhbC91c2lu Zy54bWwKQEAgLTExNDQsNiArMTE0NCwxNSBAQCBnKysgLVdpbnZhbGlkLXBjaCAtSS4gLWlu Y2x1ZGUgc3RkYysrLmggLUggLWcgLU8yIGhlbGxvLmNjIC1vIHRlc3QuZXhlCiAJZXh0ZW5z aW9ucyBhbmQgbGlic3RkYysrLXNwZWNpZmljIGJlaGF2aW9yIGludG8gZXJyb3JzLgogICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisgICAgPHZhcmxp c3RlbnRyeT48dGVybT48Y29kZT5fR0xJQkNYWF9ERUJVR19CQUNLVFJBQ0U8L2NvZGU+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorCVVuZGVmaW5lZCBieSBkZWZh dWx0LiBDb25zaWRlcmVkIG9ubHkgaWYgbGlic3RkYysrIGhhcyBiZWVuIGNvbmZpZ3VyZWQg d2l0aAorCTxvcHRpb24+LS1lbmFibGUtbGlic3RkY3h4LWJhY2t0cmFjZT15ZXM8L29wdGlv bj4gYW5kIGlmIDxjb2RlPl9HTElCQ1hYX0RFQlVHPC9jb2RlPgorCWlzIGRlZmluZWQuIFdo ZW4gZGVmaW5lZCBkaXNwbGF5IGJhY2t0cmFjZXMgb24KKwk8bGluayBsaW5rZW5kPSJtYW51 YWwuZXh0LmRlYnVnX21vZGUiPmRlYnVnIG1vZGU8L2xpbms+IGFzc2VydGlvbnMuCisgICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KICAgICA8dmFybGlz dGVudHJ5Pjx0ZXJtPjxjb2RlPl9HTElCQ1hYX1BBUkFMTEVMPC9jb2RlPjwvdGVybT4KICAg ICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT5VbmRlZmluZWQgYnkgZGVmYXVsdC4gV2hlbiBk ZWZpbmVkLCBjb21waWxlcyB1c2VyIGNvZGUKQEAgLTE2NTAsNiArMTY1OSw3IEBAIEEgcXVp 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 CmluZGV4IDhlZDYxYTY5OTEzLi5hYmM0MTI0YzAxZSAxMDA2NDQKLS0tIGEvbGlic3RkYysr LXYzL3NyYy9jKysxMS9kZWJ1Zy5jYworKysgYi9saWJzdGRjKystdjMvc3JjL2MrKzExL2Rl YnVnLmNjCkBAIC02MTEsMTAgKzYxMSwxMiBAQCBuYW1lc3BhY2UKICAgdm9pZAogICBwcmlu dF9yYXcoUHJpbnRDb250ZXh0JiBjdHgsIGNvbnN0IGNoYXIqIHN0ciwgcHRyZGlmZl90IG5i YyA9IC0xKQogICB7Ci0gICAgaWYgKG5iYyA+PSAwKQotICAgICAgY3R4Ll9NX2NvbHVtbiAr PSBmcHJpbnRmKHN0ZGVyciwgIiUuKnMiLCAoaW50KW5iYywgc3RyKTsKLSAgICBlbHNlCi0g ICAgICBjdHguX01fY29sdW1uICs9IGZwcmludGYoc3RkZXJyLCAiJXMiLCBzdHIpOworICAg IGlmIChuYmMgIT0gMCkKKyAgICAgIHsKKwljdHguX01fY29sdW1uICs9IChuYmMgPiAwKQor CSAgPyBmcHJpbnRmKHN0ZGVyciwgIiUuKnMiLCAoaW50KW5iYywgc3RyKQorCSAgOiBmcHJp bnRmKHN0ZGVyciwgIiVzIiwgc3RyKTsKKyAgICAgIH0KICAgfQogCiAgIHZvaWQKQEAgLTY4 MCw3ICs2ODIsNyBAQCBuYW1lc3BhY2UKIAogCSAgICBwb3MgKz0gMjsgLy8gYWR2YW5jZSBw YXN0ICJfXyIKIAkgICAgaWYgKG1lbWNtcChwb3MsIGN4eDE5OTgsIDkpID09IDApCi0JICAg ICAgcG9zICs9IDk7IC8vIGFkdmFuY2UgcGFydCAiY3h4MTk5ODo6IgorCSAgICAgIHBvcyAr PSA5OyAvLyBhZHZhbmNlIHBhc3QgImN4eDE5OTg6OiIKIAogCSAgICBzdHIgPSBwb3M7CiAJ ICB9CkBAIC0xMDkzLDYgKzEwOTUsNTggQEAgbmFtZXNwYWNlCiAgIHZvaWQKICAgcHJpbnRf c3RyaW5nKFByaW50Q29udGV4dCYgY3R4LCBjb25zdCBjaGFyKiBzdHIsIHB0cmRpZmZfdCBu YmMpCiAgIHsgcHJpbnRfc3RyaW5nKGN0eCwgc3RyLCBuYmMsIG51bGxwdHIsIDApOyB9CisK KyNpZiBfR0xJQkNYWF9IQVZFX1NUQUNLVFJBQ0UKKyAgaW50CisgIHByaW50X2JhY2t0cmFj ZSh2b2lkKiBkYXRhLCBfX1VJTlRQVFJfVFlQRV9fIHBjLCBjb25zdCBjaGFyKiBmaWxlbmFt ZSwKKwkJICBpbnQgbGluZW5vLCBjb25zdCBjaGFyKiBmdW5jdGlvbikKKyAgeworICAgIGNv bnN0IGludCBidWZzaXplID0gNjQ7CisgICAgY2hhciBidWZbYnVmc2l6ZV07CisKKyAgICBQ cmludENvbnRleHQmIGN0eCA9ICpzdGF0aWNfY2FzdDxQcmludENvbnRleHQqPihkYXRhKTsK KworICAgIGludCB3cml0dGVuID0gX19idWlsdGluX3NwcmludGYoYnVmLCAiJXAgIiwgKHZv aWQqKXBjKTsKKyAgICBwcmludF93b3JkKGN0eCwgYnVmLCB3cml0dGVuKTsKKworICAgIGlu dCByZXQgPSAwOworICAgIGlmIChmdW5jdGlvbikKKyAgICAgIHsKKwlpbnQgc3RhdHVzOwor CWNoYXIqIGRlbWFuZ2xlZF9uYW1lID0KKwkgIF9fY3h4YWJpdjE6Ol9fY3hhX2RlbWFuZ2xl KGZ1bmN0aW9uLCBOVUxMLCBOVUxMLCAmc3RhdHVzKTsKKwlpZiAoc3RhdHVzID09IDApCisJ ICBwcmV0dHlfcHJpbnQoY3R4LCBkZW1hbmdsZWRfbmFtZSwgJnByaW50X3Jhdyk7CisJZWxz ZQorCSAgcHJpbnRfd29yZChjdHgsIGZ1bmN0aW9uKTsKKworCWZyZWUoZGVtYW5nbGVkX25h bWUpOworCXJldCA9IHN0cnN0cihmdW5jdGlvbiwgIm1haW4iKSA/IDEgOiAwOworICAgICAg fQorCisgICAgcHJpbnRfbGl0ZXJhbChjdHgsICJcbiIpOworCisgICAgaWYgKGZpbGVuYW1l KQorICAgICAgeworCWJvb2wgd29yZHdyYXAgPSBmYWxzZTsKKwlzd2FwKHdvcmR3cmFwLCBj dHguX01fd29yZHdyYXApOworCXByaW50X3dvcmQoY3R4LCBmaWxlbmFtZSk7CisKKwlpZiAo bGluZW5vKQorCSAgeworCSAgICB3cml0dGVuID0gX19idWlsdGluX3NwcmludGYoYnVmLCAi OiV1XG4iLCBsaW5lbm8pOworCSAgICBwcmludF93b3JkKGN0eCwgYnVmLCB3cml0dGVuKTsK KwkgIH0KKwllbHNlCisJICBwcmludF9saXRlcmFsKGN0eCwgIlxuIik7CisJc3dhcCh3b3Jk d3JhcCwgY3R4Ll9NX3dvcmR3cmFwKTsKKyAgICAgIH0KKyAgICBlbHNlCisgICAgICBwcmlu dF9saXRlcmFsKGN0eCwgIj8/PzowXG4iKTsKKworICAgIHJldHVybiByZXQ7CisgIH0KKyNl bmRpZgogfQogCiBuYW1lc3BhY2UgX19nbnVfZGVidWcKQEAgLTExMzksNiArMTE5MywxNyBA QCBuYW1lc3BhY2UgX19nbnVfZGVidWcKIAlwcmludF9saXRlcmFsKGN0eCwgIlxuIik7CiAg ICAgICB9CiAKKyNpZiBfR0xJQkNYWF9IQVZFX1NUQUNLVFJBQ0UKKyAgICBpZiAoX01fYmFj a3RyYWNlX3N0YXRlKQorICAgICAgeworCXByaW50X2xpdGVyYWwoY3R4LCAiQmFja3RyYWNl OlxuIik7CisJX01fYmFja3RyYWNlX2Z1bGwoCisJICBfTV9iYWNrdHJhY2Vfc3RhdGUsIDEs IHByaW50X2JhY2t0cmFjZSwgbnVsbHB0ciwgJmN0eCk7CisJY3R4Ll9NX2ZpcnN0X2xpbmUg PSB0cnVlOworCXByaW50X2xpdGVyYWwoY3R4LCAiXG4iKTsKKyAgICAgIH0KKyNlbmRpZgor CiAgICAgcHJpbnRfbGl0ZXJhbChjdHgsICJFcnJvcjogIik7CiAKICAgICAvLyBQcmludCB0 aGUgZXJyb3IgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3NyYy9saWJiYWNr dHJhY2UvTWFrZWZpbGUuYW0gYi9saWJzdGRjKystdjMvc3JjL2xpYmJhY2t0cmFjZS9NYWtl ZmlsZS5hbQppbmRleCAwZjExNDM1MDdmMy4uNTJkOGY4MWI5N2IgMTAwNjQ0Ci0tLSBhL2xp YnN0ZGMrKy12My9zcmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmFtCisrKyBiL2xpYnN0ZGMr Ky12My9zcmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmFtCkBAIC02MCw2ICs2MCw3IEBAIGxp YnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfU0hPUlROQU1FID0gJChvYmpfcHJlZml4KQogCiBs aWJzdGRjX19fbGliYmFja3RyYWNlX2xhX1NPVVJDRVMgPSBcCiAJYXRvbWljLmMgXAorCWJh Y2t0cmFjZS5jIFwKIAlkd2FyZi5jIFwKIAlmaWxlbGluZS5jIFwKIAlwb3NpeC5jIFwKZGlm ZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmluIGIv bGlic3RkYysrLXYzL3NyYy9saWJiYWNrdHJhY2UvTWFrZWZpbGUuaW4KaW5kZXggNzU0NTg5 NGQ1OWEuLjVjNmI0ZGQxYTBjIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2xpYmJh Y2t0cmFjZS9NYWtlZmlsZS5pbgorKysgYi9saWJzdGRjKystdjMvc3JjL2xpYmJhY2t0cmFj ZS9NYWtlZmlsZS5pbgpAQCAtMTgxLDEwICsxODEsMTAgQEAgYW1fX3VuaW5zdGFsbF9maWxl c19mcm9tX2RpciA9IHsgXAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHRvb2xl eGVjbGliZGlyKSIKIExUTElCUkFSSUVTID0gJCh0b29sZXhlY2xpYl9MVExJQlJBUklFUykK IGFtX2xpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfT0JKRUNUUyA9ICQob2JqX3ByZWZpeCkt YXRvbWljLmxvIFwKLQkkKG9ial9wcmVmaXgpLWR3YXJmLmxvICQob2JqX3ByZWZpeCktZmls ZWxpbmUubG8gXAotCSQob2JqX3ByZWZpeCktcG9zaXgubG8gJChvYmpfcHJlZml4KS1zb3J0 LmxvIFwKLQkkKG9ial9wcmVmaXgpLXNpbXBsZS5sbyAkKG9ial9wcmVmaXgpLXN0YXRlLmxv IFwKLQkkKG9ial9wcmVmaXgpLWNwLWRlbWFuZ2xlLmxvCisJJChvYmpfcHJlZml4KS1iYWNr dHJhY2UubG8gJChvYmpfcHJlZml4KS1kd2FyZi5sbyBcCisJJChvYmpfcHJlZml4KS1maWxl bGluZS5sbyAkKG9ial9wcmVmaXgpLXBvc2l4LmxvIFwKKwkkKG9ial9wcmVmaXgpLXNvcnQu bG8gJChvYmpfcHJlZml4KS1zaW1wbGUubG8gXAorCSQob2JqX3ByZWZpeCktc3RhdGUubG8g JChvYmpfcHJlZml4KS1jcC1kZW1hbmdsZS5sbwogbGlic3RkY19fX2xpYmJhY2t0cmFjZV9s YV9PQkpFQ1RTID0gIFwKIAkkKGFtX2xpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfT0JKRUNU UykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKQEAgLTUwNyw2ICs1MDcsNyBAQCBv YmpfcHJlZml4ID0gc3RkX3N0YWNrdHJhY2UKIGxpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFf U0hPUlROQU1FID0gJChvYmpfcHJlZml4KQogbGlic3RkY19fX2xpYmJhY2t0cmFjZV9sYV9T T1VSQ0VTID0gXAogCWF0b21pYy5jIFwKKwliYWNrdHJhY2UuYyBcCiAJZHdhcmYuYyBcCiAJ ZmlsZWxpbmUuYyBcCiAJcG9zaXguYyBcCkBAIC02NDcsNiArNjQ4LDkgQEAgZGlzdGNsZWFu LWNvbXBpbGU6CiAkKG9ial9wcmVmaXgpLWF0b21pYy5sbzogYXRvbWljLmMKIAkkKEFNX1Zf Q0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAk KExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRf SU5DTFVERVMpICQoSU5DTFVERVMpICQobGlic3RkY19fX2xpYmJhY2t0cmFjZV9sYV9DUFBG TEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyAkKG9ial9w cmVmaXgpLWF0b21pYy5sbyBgdGVzdCAtZiAnYXRvbWljLmMnIHx8IGVjaG8gJyQoc3JjZGly KS8nYGF0b21pYy5jCiAKKyQob2JqX3ByZWZpeCktYmFja3RyYWNlLmxvOiBiYWNrdHJhY2Uu YworCSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJU T09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMp ICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJzdGRjX19fbGliYmFja3Ry YWNlX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIC1j IC1vICQob2JqX3ByZWZpeCktYmFja3RyYWNlLmxvIGB0ZXN0IC1mICdiYWNrdHJhY2UuYycg fHwgZWNobyAnJChzcmNkaXIpLydgYmFja3RyYWNlLmMKKwogJChvYmpfcHJlZml4KS1kd2Fy Zi5sbzogZHdhcmYuYwogCSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9 Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAk KENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJzdGRj X19fbGliYmFja3RyYWNlX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykg JChDRkxBR1MpIC1jIC1vICQob2JqX3ByZWZpeCktZHdhcmYubG8gYHRlc3QgLWYgJ2R3YXJm LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGR3YXJmLmMKIApkaWZmIC0tZ2l0IGEvbGlic3Rk YysrLXYzL3NyYy9saWJiYWNrdHJhY2UvYmFja3RyYWNlLXJlbmFtZS5oIGIvbGlic3RkYysr LXYzL3NyYy9saWJiYWNrdHJhY2UvYmFja3RyYWNlLXJlbmFtZS5oCmluZGV4IDdhNTlmMTY2 ZTYyLi43OWJkZWY2MzA5ZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9saWJiYWNr dHJhY2UvYmFja3RyYWNlLXJlbmFtZS5oCisrKyBiL2xpYnN0ZGMrKy12My9zcmMvbGliYmFj a3RyYWNlL2JhY2t0cmFjZS1yZW5hbWUuaApAQCAtNCw2ICs0LDcgQEAKICNkZWZpbmUgYmFj a3RyYWNlX2NyZWF0ZV9zdGF0ZSBfX2dsaWJjeHhfYmFja3RyYWNlX2NyZWF0ZV9zdGF0ZQog I2RlZmluZSBiYWNrdHJhY2VfZHdhcmZfYWRkIF9fZ2xpYmN4eF9iYWNrdHJhY2VfZHdhcmZf YWRkCiAjZGVmaW5lIGJhY2t0cmFjZV9mcmVlIF9fZ2xpYmN4eF9iYWNrdHJhY2VfZnJlZQor I2RlZmluZSBiYWNrdHJhY2VfZnVsbCBfX2dsaWJjeHhfYmFja3RyYWNlX2Z1bGwKICNkZWZp bmUgYmFja3RyYWNlX2dldF92aWV3IF9fZ2xpYmN4eF9iYWNrdHJhY2VfZ2V0X3ZpZXcKICNk ZWZpbmUgYmFja3RyYWNlX2luaXRpYWxpemUgX19nbGliY3h4X2JhY2t0cmFjZV9pbml0aWFs aXplCiAjZGVmaW5lIGJhY2t0cmFjZV9vcGVuIF9fZ2xpYmN4eF9iYWNrdHJhY2Vfb3Blbgpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250YWluZXJzL3ZlY3Rv ci9kZWJ1Zy9hc3NpZ240X2JhY2t0cmFjZV9uZWcuY2MgYi9saWJzdGRjKystdjMvdGVzdHN1 aXRlLzIzX2NvbnRhaW5lcnMvdmVjdG9yL2RlYnVnL2Fzc2lnbjRfYmFja3RyYWNlX25lZy5j YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTIwNzg4ZDVjYjcK LS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvdGVzdHN1aXRlLzIzX2NvbnRhaW5l cnMvdmVjdG9yL2RlYnVnL2Fzc2lnbjRfYmFja3RyYWNlX25lZy5jYwpAQCAtMCwwICsxLDE3 IEBACisvLyB7IGRnLWRvIHJ1biB7IHhmYWlsICotKi0qIH0gfQorLy8geyBkZy1vcHRpb25z ICItRF9HTElCQ1hYX0RFQlVHX0JBQ0tUUkFDRSAtbHN0ZGMrK19saWJiYWNrdHJhY2UiIH0K Ky8vIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHN0YWNrdHJhY2UgfQorCisjaW5j bHVkZSA8ZGVidWcvdmVjdG9yPgorI2luY2x1ZGUgPGRlYnVnL2NoZWNrcy5oPgorCit2b2lk IHRlc3QwMSgpCit7CisgIF9fZ251X3Rlc3Q6OmNoZWNrX2Fzc2lnbjE8X19nbnVfZGVidWc6 OnZlY3RvcjxpbnQ+ID4oKTsKK30KKworaW50IG1haW4oKQoreworICB0ZXN0MDEoKTsKKyAg cmV0dXJuIDA7Cit9Cg== --------------HksBoZBhGO0370Xh80VJlB3j--