From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by sourceware.org (Postfix) with ESMTPS id 854C9385DC09 for ; Mon, 4 Jul 2022 17:20:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 854C9385DC09 Received: by mail-wm1-x32a.google.com with SMTP id l68so5752372wml.3 for ; Mon, 04 Jul 2022 10:20:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:from:subject; bh=JsJldEdL0/iYAPrJXeSL3hIOUboUnyPtzEl18sQ1sk4=; b=w+BOIa3YDAC6SrsARYZ7citJdsNHBf4uRDW+3nnvrAhlcMeZjcJhEqHraEl9RYRjh+ Q8v6xzKUMTOrd+uq6uu/PpWj/NFU42x8Ec8Y63OJuw6hYBdQcxxJ3D3e7kdqE+rcApR2 pCUNoq+8Wx3XwNEsmbZOQYnrAxphxGlJvSw6w5eq8+70MdHY7gn5WJHxAMyIctJCaJJ2 WwqM8Jyd1YKyBcuL1XAKNSRZkkw2nXCjEy8Rsg32Z08qUn9JIpbnK6EqYlV0y8uENyET Y1TuLCvOA+8vyEOGLPb1svS3+/1j4HLDGG2Wkbdwnlo/tIv91bgtJqeJrFTKcBfFsblf buXA== X-Gm-Message-State: AJIora93dNdB8ge6VjxBYRXmqrPneIopnszwWdOW1acTei2Tqu7YEsy/ KO9aUGctvzZirqgWcAlH+CWxf2Wg5ok= X-Google-Smtp-Source: AGRyM1vULowVjcpIkkQXGelnCbPGOq3rpPgGBiAYRejYklwBmvNs6qlxJVYxHiU0KhRM4fiZxcTv/A== X-Received: by 2002:a1c:7903:0:b0:3a0:3936:b71f with SMTP id l3-20020a1c7903000000b003a03936b71fmr35435093wme.168.1656955241977; Mon, 04 Jul 2022 10:20:41 -0700 (PDT) Received: from [10.37.2.240] ([109.190.253.11]) by smtp.googlemail.com with ESMTPSA id r12-20020a05600c35cc00b003a04e900552sm19499832wmq.1.2022.07.04.10.20.37 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 04 Jul 2022 10:20:41 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------l2MrmirAwcFzbPneWHBLBbWa" Message-ID: Date: Mon, 4 Jul 2022 19:20:36 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Content-Language: fr To: "libstdc++@gcc.gnu.org" From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= Subject: WIP _GLIBCXX_DEBUG backtrace X-Spam-Status: No, score=-8.3 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, 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 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, 04 Jul 2022 17:20:46 -0000 This is a multi-part message in MIME format. --------------l2MrmirAwcFzbPneWHBLBbWa Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Here is the patch to add backtrace to _GLIBCXX_DEBUG mode. It is using the recently introduced _GLIBCXX_HAS_STACKTRACE. It is only WIP because for the moment I had to add: // { dg-options "-lstdc++_libbacktrace" } to avoid unresolved symbols. How should I handle this ? 1. Ask the user to define _GLIBCXX_DEBUG_STACKTRACE to get the backtrace and so also require to add this linker option. 2. Is it possible to add something in formatter.h to automagically link libstdc++_libbacktrace ? 3. Add symbols to libstdc++.so ? Output sample: /home/fdt/dev/gcc/build/x86_64-pc-linux-gnu/libstdc++-v3/include/debug/vector:264: In function:     void std::debug::vector<_Tp, _Allocator>::assign(_InputIterator,     _InputIterator) [with _InputIterator = const int*;     = void; _Tp = int; _Allocator =     std::allocator] Backtrace:     0x40284a void std::debug::vector >::assign(int const*, int const*) /home/fdt/dev/gcc/build/x86_64-pc-linux-gnu/libstdc++-v3/include/debug/vector:264     0x402bed void gnu_test::check_assign1 > >() /home/fdt/dev/gcc/git/libstdc++-v3/testsuite/util/debug/checks.h:111     0x40246c test01() /home/fdt/dev/gcc/git/libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc:26     0x40246c main /home/fdt/dev/gcc/git/libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc:31 Error: function requires a valid iterator range [first, last). Objects involved in the operation:     iterator "first" @ 0x7ffe09e62fd8 {       type = int const* (constant iterator);     }     iterator "last" @ 0x7ffe09e62fd0 {       type = int const* (constant iterator);     } XFAIL: 23_containers/vector/debug/assign4_neg.cc execution test François --------------l2MrmirAwcFzbPneWHBLBbWa Content-Type: text/x-patch; charset=UTF-8; name="debug_backtrace.patch" Content-Disposition: attachment; filename="debug_backtrace.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2RlYnVnL2Zvcm1hdHRlci5oIGIv bGlic3RkYysrLXYzL2luY2x1ZGUvZGVidWcvZm9ybWF0dGVyLmgKaW5kZXggODBlOGJhNDZk MWUuLmY3NzkxMmMzZmQyIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1 Zy9mb3JtYXR0ZXIuaAorKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9kZWJ1Zy9mb3JtYXR0 ZXIuaApAQCAtMzEsNiArMzEsMzAgQEAKIAogI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+ CiAKK3N0cnVjdCBfX2dsaWJjeHhfYmFja3RyYWNlX3N0YXRlOworCisjaWYgX0dMSUJDWFhf SEFWRV9TVEFDS1RSQUNFCitleHRlcm4gIkMiCit7CisgIF9fZ2xpYmN4eF9iYWNrdHJhY2Vf c3RhdGUqCisgIF9fZ2xpYmN4eF9iYWNrdHJhY2VfY3JlYXRlX3N0YXRlKGNvbnN0IGNoYXIq LCBpbnQsCisJCQkJICAgdm9pZCgqKSh2b2lkKiwgY29uc3QgY2hhciosIGludCksCisJCQkJ ICAgdm9pZCopOworCisgIHR5cGVkZWYgaW50ICgqX19nbGliY3h4X2JhY2t0cmFjZV9mdWxs X2NhbGxiYWNrKSAoCisgICAgdm9pZCosIF9fVUlOVFBUUl9UWVBFX18sIGNvbnN0IGNoYXIg KiwgaW50LCBjb25zdCBjaGFyKik7CisKKyAgdHlwZWRlZiB2b2lkICgqX19nbGliY3h4X2Jh Y2t0cmFjZV9lcnJvcl9jYWxsYmFjaykgKAorICAgIHZvaWQqLCBjb25zdCBjaGFyKiwgaW50 KTsKKworICBpbnQKKyAgX19nbGliY3h4X2JhY2t0cmFjZV9mdWxsKF9fZ2xpYmN4eF9iYWNr dHJhY2Vfc3RhdGUqLCBpbnQsCisJICAgX19nbGliY3h4X2JhY2t0cmFjZV9mdWxsX2NhbGxi YWNrLAorCSAgIF9fZ2xpYmN4eF9iYWNrdHJhY2VfZXJyb3JfY2FsbGJhY2ssCisJICAgdm9p ZCopOworfQorI2VuZGlmCisKICNpZiBfX2NwcF9ydHRpCiAjIGluY2x1ZGUgPHR5cGVpbmZv PgogIyBkZWZpbmUgX0dMSUJDWFhfVFlQRUlEKF9UeXBlKSAmdHlwZWlkKF9UeXBlKQpAQCAt NTYwLDExICs1ODQsMjUgQEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAgICAgX01fcHJpbnRf c3RyaW5nKGNvbnN0IGNoYXIqIF9fc3RyaW5nKSBjb25zdCBfR0xJQkNYWF9ERVBSRUNBVEVE OwogI2VuZGlmCiAKKyNpZiBfR0xJQkNYWF9IQVZFX1NUQUNLVFJBQ0UKKyAgICBpbnQKKyAg ICBfTV9iYWNrdHJhY2VfZnVsbChfX2dsaWJjeHhfYmFja3RyYWNlX3N0YXRlKiBfX3N0LCBp bnQgX19za2lwLAorCQkgICAgICBfX2dsaWJjeHhfYmFja3RyYWNlX2Z1bGxfY2FsbGJhY2sg X19jYiwKKwkJICAgICAgX19nbGliY3h4X2JhY2t0cmFjZV9lcnJvcl9jYWxsYmFjayBfX2Vj YiwKKwkJICAgICAgdm9pZCogX19kYXRhKSBjb25zdDsKKyNlbmRpZgorCiAgIHByaXZhdGU6 CiAgICAgX0Vycm9yX2Zvcm1hdHRlcihjb25zdCBjaGFyKiBfX2ZpbGUsIHVuc2lnbmVkIGlu dCBfX2xpbmUsCiAJCSAgICAgY29uc3QgY2hhciogX19mdW5jdGlvbikKICAgICA6IF9NX2Zp bGUoX19maWxlKSwgX01fbGluZShfX2xpbmUpLCBfTV9udW1fcGFyYW1ldGVycygwKSwgX01f dGV4dCgwKQogICAgICwgX01fZnVuY3Rpb24oX19mdW5jdGlvbikKKyNpZiBfR0xJQkNYWF9I QVZFX1NUQUNLVFJBQ0UKKyAgICAsIF9NX2JhY2t0cmFjZV9zdGF0ZSgKKyAgICAgIF9fZ2xp YmN4eF9iYWNrdHJhY2VfY3JlYXRlX3N0YXRlKG51bGxwdHIsIDAsIG51bGxwdHIsIG51bGxw dHIpKQorI2Vsc2UKKyAgICAsIF9NX2JhY2t0cmFjZV9zdGF0ZSgpCisjZW5kaWYKICAgICB7 IH0KIAogI2lmICFfR0xJQkNYWF9JTkxJTkVfVkVSU0lPTgpAQCAtNTgwLDYgKzYxOCw3IEBA IG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwogICAgIHVuc2lnbmVkIGludAlfTV9udW1fcGFyYW1l dGVyczsKICAgICBjb25zdCBjaGFyKgkJX01fdGV4dDsKICAgICBjb25zdCBjaGFyKgkJX01f ZnVuY3Rpb247CisgICAgX19nbGliY3h4X2JhY2t0cmFjZV9zdGF0ZSoJX01fYmFja3RyYWNl X3N0YXRlOwogCiAgIHB1YmxpYzoKICAgICBzdGF0aWMgX0Vycm9yX2Zvcm1hdHRlciYKQEAg LTU4OSw2ICs2MjgsMTYgQEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAgICAgICByZXR1cm4g X19mb3JtYXR0ZXI7CiAgICAgfQogICB9OworCisjaWYgX0dMSUJDWFhfSEFWRV9TVEFDS1RS QUNFCisgIGludAorICBfRXJyb3JfZm9ybWF0dGVyOjpfTV9iYWNrdHJhY2VfZnVsbChfX2ds aWJjeHhfYmFja3RyYWNlX3N0YXRlKiBfX3N0LCBpbnQgX19za2lwLAorCQkJCSAgICAgIF9f Z2xpYmN4eF9iYWNrdHJhY2VfZnVsbF9jYWxsYmFjayBfX2NiLAorCQkJCSAgICAgIF9fZ2xp YmN4eF9iYWNrdHJhY2VfZXJyb3JfY2FsbGJhY2sgX19lY2IsCisJCQkJICAgICAgdm9pZCog X19kYXRhKSBjb25zdAorICB7IHJldHVybiBfX2dsaWJjeHhfYmFja3RyYWNlX2Z1bGwoX19z dCwgX19za2lwLCBfX2NiLCBfX2VjYiwgX19kYXRhKTsgfQorI2VuZGlmCisKIH0gLy8gbmFt ZXNwYWNlIF9fZ251X2RlYnVnCiAKICN1bmRlZiBfR0xJQkNYWF9UWVBFSUQKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTEvZGVidWcuY2MgYi9saWJzdGRjKystdjMvc3Jj L2MrKzExL2RlYnVnLmNjCmluZGV4IDQ3MDZkZWZlZGYxLi4zOWVjYzc4MTdiNyAxMDA2NDQK LS0tIGEvbGlic3RkYysrLXYzL3NyYy9jKysxMS9kZWJ1Zy5jYworKysgYi9saWJzdGRjKyst djMvc3JjL2MrKzExL2RlYnVnLmNjCkBAIC02MDcsMTIgKzYwNywxMiBAQCBuYW1lc3BhY2UK ICAgICB7IHByaW50X3dvcmQoY3R4LCB3b3JkLCBMZW5ndGggLSAxKTsgfQogCiAgIHZvaWQK LSAgcHJpbnRfcmF3KFByaW50Q29udGV4dCYgY3R4LCBjb25zdCBjaGFyKiBzdHIsIHB0cmRp ZmZfdCBuYmMgPSAtMSkKKyAgcHJpbnRfcmF3KFByaW50Q29udGV4dCYsIGNvbnN0IGNoYXIq IHN0ciwgcHRyZGlmZl90IG5iYykKICAgewogICAgIGlmIChuYmMgPj0gMCkKLSAgICAgIGN0 eC5fTV9jb2x1bW4gKz0gZnByaW50ZihzdGRlcnIsICIlLipzIiwgKGludCluYmMsIHN0cik7 CisgICAgICBmcHJpbnRmKHN0ZGVyciwgIiUuKnMiLCAoaW50KW5iYywgc3RyKTsKICAgICBl bHNlCi0gICAgICBjdHguX01fY29sdW1uICs9IGZwcmludGYoc3RkZXJyLCAiJXMiLCBzdHIp OworICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHN0cik7CiAgIH0KIAogICB2b2lkCkBA IC02NDYsNiArNjQ2LDcgQEAgbmFtZXNwYWNlCiAJICB7CiAJICAgIGNvbnN0IGNoYXIgc3Bh Y2luZ1tQcmludENvbnRleHQ6Ol9TX2luZGVudCArIDFdID0gIiAgICAiOwogCSAgICBwcmlu dF9yYXcoY3R4LCBzcGFjaW5nLCBQcmludENvbnRleHQ6Ol9TX2luZGVudCk7CisJICAgIGN0 eC5fTV9jb2x1bW4gKz0gUHJpbnRDb250ZXh0OjpfU19pbmRlbnQ7CiAJICB9CiAKIAlpbnQg d3JpdHRlbiA9IGZwcmludGYoc3RkZXJyLCAiJS4qcyIsIChpbnQpbGVuZ3RoLCB3b3JkKTsK QEAgLTY2NiwyNSArNjY3LDM1IEBAIG5hbWVzcGFjZQogICB9CiAKICAgdm9pZAotICBwcmV0 dHlfcHJpbnQoUHJpbnRDb250ZXh0JiBjdHgsIGNvbnN0IGNoYXIqIHN0ciwgX1ByaW50X2Z1 bmNfdCBwcmludF9mdW5jKQorICBwcmludF9mdW5jdGlvbihQcmludENvbnRleHQmIGN0eCwg Y29uc3QgY2hhciogZnVuYywgX1ByaW50X2Z1bmNfdCBwcmludF9mdW5jKQogICB7Ci0gICAg Y29uc3QgY2hhciBjeHgxOTk4W10gPSAiY3h4MTk5ODo6IjsKKyAgICBjb25zdCBjaGFyIGN4 eDE5OThbXSA9ICJfX2N4eDE5OTg6OiI7CisgICAgY29uc3QgY2hhciB1Z2xpZmljYXRpb25b XSA9ICJfXyI7CiAgICAgZm9yICg7OykKICAgICAgIHsKLQlpZiAoYXV0byBwb3MgPSBzdHJz dHIoc3RyLCAiX18iKSkKKwlzaXplX3Qgb2Zmc2V0OworCWF1dG8gaWR4ID0gc3Ryc3RyKGZ1 bmMsIGN4eDE5OTgpOworCWlmIChpZHgpCisJICBvZmZzZXQgPSBzaXplb2YoY3h4MTk5OCkg LSAxOworCWVsc2UgaWYgKChpZHggPSBzdHJzdHIoZnVuYywgdWdsaWZpY2F0aW9uKSkpCisJ ICBvZmZzZXQgPSBzaXplb2YodWdsaWZpY2F0aW9uKSAtIDE7CisKKwlpZiAoaWR4KQogCSAg ewotCSAgICBpZiAocG9zICE9IHN0cikKLQkgICAgICBwcmludF9mdW5jKGN0eCwgc3RyLCBw b3MgLSBzdHIpOworCSAgICBpZiAoaWR4ICE9IGZ1bmMpCisJICAgICAgcHJpbnRfZnVuYyhj dHgsIGZ1bmMsIGlkeCAtIGZ1bmMpOwogCi0JICAgIHBvcyArPSAyOyAvLyBhZHZhbmNlIHBh c3QgIl9fIgotCSAgICBpZiAobWVtY21wKHBvcywgY3h4MTk5OCwgOSkgPT0gMCkKLQkgICAg ICBwb3MgKz0gOTsgLy8gYWR2YW5jZSBwYXJ0ICJjeHgxOTk4OjoiCisJICAgIGZ1bmMgPSBp ZHggKyBvZmZzZXQ7CiAKLQkgICAgc3RyID0gcG9zOworCSAgICB3aGlsZSAoKmZ1bmMgJiYg aXNzcGFjZSgodW5zaWduZWQgY2hhcikqZnVuYykpCisJICAgICAgKytmdW5jOworCisJICAg IGlmICghKmZ1bmMpCisJICAgICAgYnJlYWs7CiAJICB9CiAJZWxzZQogCSAgewotCSAgICBw cmludF9mdW5jKGN0eCwgc3RyLCAtMSk7CisJICAgIHByaW50X2Z1bmMoY3R4LCBmdW5jLCAt MSk7CiAJICAgIGJyZWFrOwogCSAgfQogICAgICAgfQpAQCAtNzA0LDkgKzcxNSw5IEBAIG5h bWVzcGFjZQogCSAgY2hhciogZGVtYW5nbGVkX25hbWUgPQogCSAgICBfX2N4eGFiaXYxOjpf X2N4YV9kZW1hbmdsZShpbmZvLT5uYW1lKCksIE5VTEwsIE5VTEwsICZzdGF0dXMpOwogCSAg aWYgKHN0YXR1cyA9PSAwKQotCSAgICBwcmV0dHlfcHJpbnQoY3R4LCBkZW1hbmdsZWRfbmFt ZSwgJnByaW50X3dvcmQpOworCSAgICBwcmludF9mdW5jdGlvbihjdHgsIGRlbWFuZ2xlZF9u YW1lLCAmcHJpbnRfd29yZCk7CiAJICBlbHNlCi0JICAgIHByaW50X3dvcmQoY3R4LCBpbmZv LT5uYW1lKCkpOworCSAgICBwcmludF93b3JkKGN0eCwgaW5mby0+bmFtZSgpLCAtMSk7CiAJ ICBmcmVlKGRlbWFuZ2xlZF9uYW1lKTsKIAl9CiAgICAgfQpAQCAtNzM1LDcgKzc0Niw3IEBA IG5hbWVzcGFjZQogICBwcmludF9uYW1lZF9uYW1lKFByaW50Q29udGV4dCYgY3R4LCBjb25z dCBfUGFyYW1ldGVyOjpfTmFtZWQmIG5hbWVkKQogICB7CiAgICAgYXNzZXJ0KG5hbWVkLl9N X25hbWUpOwotICAgIHByZXR0eV9wcmludChjdHgsIG5hbWVkLl9NX25hbWUsIHByaW50X3dv cmQpOworICAgIHByaW50X2Z1bmN0aW9uKGN0eCwgbmFtZWQuX01fbmFtZSwgcHJpbnRfd29y ZCk7CiAgIH0KIAogICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CkBAIC0xMDM2LDcg KzEwNDcsNyBAQCBuYW1lc3BhY2UKIAkvLyBmaXJzdC4KIAlpZiAoc3RyICE9IHN0YXJ0KQog CSAgewotCSAgICAvLyBBdm9pZCBwcmludGluZyB0aGUgJyUnLgorCSAgICAvLyBBdm9pZCB0 byBwcmludCB0aGUgJyUnLgogCSAgICBpZiAoc3RyIC0gc3RhcnQgPiAxKQogCSAgICAgIHBy aW50X3dvcmQoY3R4LCBzdGFydCwgc3RyIC0gc3RhcnQgLSAxKTsKIAkgICAgc3RhcnQgPSBz dHI7CkBAIC0xMDkwLDYgKzExMDEsNTggQEAgbmFtZXNwYWNlCiAgIHZvaWQKICAgcHJpbnRf c3RyaW5nKFByaW50Q29udGV4dCYgY3R4LCBjb25zdCBjaGFyKiBzdHIsIHB0cmRpZmZfdCBu YmMpCiAgIHsgcHJpbnRfc3RyaW5nKGN0eCwgc3RyLCBuYmMsIG51bGxwdHIsIDApOyB9CisK KyNpZiBfR0xJQkNYWF9IQVZFX1NUQUNLVFJBQ0UKKyAgaW50CisgIHByaW50X2JhY2t0cmFj ZSh2b2lkKiBkYXRhLCBfX1VJTlRQVFJfVFlQRV9fIHBjLCBjb25zdCBjaGFyKiBmaWxlbmFt ZSwKKwkJICBpbnQgbGluZW5vLCBjb25zdCBjaGFyKiBmdW5jdGlvbikKKyAgeworICAgIGNv bnN0IGludCBidWZzaXplID0gNjQ7CisgICAgY2hhciBidWZbYnVmc2l6ZV07CisKKyAgICBQ cmludENvbnRleHQmIGN0eCA9ICpzdGF0aWNfY2FzdDxQcmludENvbnRleHQqPihkYXRhKTsK KworICAgIGludCB3cml0dGVuID0gX19idWlsdGluX3NwcmludGYoYnVmLCAiJXAgIiwgKHZv aWQqKXBjKTsKKyAgICBwcmludF93b3JkKGN0eCwgYnVmLCB3cml0dGVuKTsKKworICAgIGlu dCByZXQgPSAwOworICAgIGlmIChmdW5jdGlvbikKKyAgICAgIHsKKwlpbnQgc3RhdHVzOwor CWNoYXIqIGRlbWFuZ2xlZF9uYW1lID0KKwkgIF9fY3h4YWJpdjE6Ol9fY3hhX2RlbWFuZ2xl KGZ1bmN0aW9uLCBOVUxMLCBOVUxMLCAmc3RhdHVzKTsKKwlpZiAoc3RhdHVzID09IDApCisJ ICBwcmludF9mdW5jdGlvbihjdHgsIGRlbWFuZ2xlZF9uYW1lLCAmcHJpbnRfcmF3KTsKKwll bHNlCisJICBwcmludF93b3JkKGN0eCwgZnVuY3Rpb24pOworCisJZnJlZShkZW1hbmdsZWRf bmFtZSk7CisJcmV0ID0gc3Ryc3RyKGZ1bmN0aW9uLCAibWFpbiIpID8gMSA6IDA7CisgICAg ICB9CisKKyAgICBwcmludF9saXRlcmFsKGN0eCwgIlxuIik7CisKKyAgICBpZiAoZmlsZW5h bWUpCisgICAgICB7CisJYm9vbCB3b3Jkd3JhcCA9IGZhbHNlOworCXN3YXAod29yZHdyYXAs IGN0eC5fTV93b3Jkd3JhcCk7CisJcHJpbnRfd29yZChjdHgsIGZpbGVuYW1lKTsKKworCWlm IChsaW5lbm8pCisJICB7CisJICAgIHdyaXR0ZW4gPSBfX2J1aWx0aW5fc3ByaW50ZihidWYs ICI6JXVcbiIsIGxpbmVubyk7CisJICAgIHByaW50X3dvcmQoY3R4LCBidWYsIHdyaXR0ZW4p OworCSAgfQorCWVsc2UKKwkgIHByaW50X2xpdGVyYWwoY3R4LCAiXG4iKTsKKwlzd2FwKHdv cmR3cmFwLCBjdHguX01fd29yZHdyYXApOworICAgICAgfQorICAgIGVsc2UKKyAgICAgIHBy aW50X2xpdGVyYWwoY3R4LCAiPz8/OjBcbiIpOworCisgICAgcmV0dXJuIHJldDsKKyAgfQor I2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBfX2dudV9kZWJ1ZwpAQCAtMTEwOSw3ICsxMTcyLDcg QEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAgICAgUHJpbnRDb250ZXh0IGN0eDsKICAgICBp ZiAoX01fZmlsZSkKICAgICAgIHsKLQlwcmludF9yYXcoY3R4LCBfTV9maWxlKTsKKwlwcmlu dF9yYXcoY3R4LCBfTV9maWxlLCAtMSk7CiAJcHJpbnRfbGl0ZXJhbChjdHgsICI6Iik7CiAJ Z29fdG9fbmV4dF9saW5lID0gdHJ1ZTsKICAgICAgIH0KQEAgLTExMzAsMTIgKzExOTMsMjMg QEAgbmFtZXNwYWNlIF9fZ251X2RlYnVnCiAgICAgaWYgKF9NX2Z1bmN0aW9uKQogICAgICAg ewogCXByaW50X2xpdGVyYWwoY3R4LCAiSW4gZnVuY3Rpb246XG4iKTsKLQlwcmV0dHlfcHJp bnQoY3R4LCBfTV9mdW5jdGlvbiwgJnByaW50X3N0cmluZyk7CisJcHJpbnRfZnVuY3Rpb24o Y3R4LCBfTV9mdW5jdGlvbiwgJnByaW50X3N0cmluZyk7CiAJcHJpbnRfbGl0ZXJhbChjdHgs ICJcbiIpOwogCWN0eC5fTV9maXJzdF9saW5lID0gdHJ1ZTsKIAlwcmludF9saXRlcmFsKGN0 eCwgIlxuIik7CiAgICAgICB9CiAKKyNpZiBfR0xJQkNYWF9IQVZFX1NUQUNLVFJBQ0UKKyAg ICBpZiAoX01fYmFja3RyYWNlX3N0YXRlKQorICAgICAgeworCXByaW50X2xpdGVyYWwoY3R4 LCAiQmFja3RyYWNlOlxuIik7CisJX01fYmFja3RyYWNlX2Z1bGwoCisJICBfTV9iYWNrdHJh Y2Vfc3RhdGUsIDEsIHByaW50X2JhY2t0cmFjZSwgbnVsbHB0ciwgJmN0eCk7CisJY3R4Ll9N X2ZpcnN0X2xpbmUgPSB0cnVlOworCXByaW50X2xpdGVyYWwoY3R4LCAiXG4iKTsKKyAgICAg IH0KKyNlbmRpZgorCiAgICAgcHJpbnRfbGl0ZXJhbChjdHgsICJFcnJvcjogIik7CiAKICAg ICAvLyBQcmludCB0aGUgZXJyb3IgbWVzc2FnZQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYz L3NyYy9saWJiYWNrdHJhY2UvTWFrZWZpbGUuYW0gYi9saWJzdGRjKystdjMvc3JjL2xpYmJh Y2t0cmFjZS9NYWtlZmlsZS5hbQppbmRleCAwZjExNDM1MDdmMy4uNTJkOGY4MWI5N2IgMTAw NjQ0Ci0tLSBhL2xpYnN0ZGMrKy12My9zcmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmFtCisr KyBiL2xpYnN0ZGMrKy12My9zcmMvbGliYmFja3RyYWNlL01ha2VmaWxlLmFtCkBAIC02MCw2 ICs2MCw3IEBAIGxpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfU0hPUlROQU1FID0gJChvYmpf cHJlZml4KQogCiBsaWJzdGRjX19fbGliYmFja3RyYWNlX2xhX1NPVVJDRVMgPSBcCiAJYXRv bWljLmMgXAorCWJhY2t0cmFjZS5jIFwKIAlkd2FyZi5jIFwKIAlmaWxlbGluZS5jIFwKIAlw b3NpeC5jIFwKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvbGliYmFja3RyYWNlL01h a2VmaWxlLmluIGIvbGlic3RkYysrLXYzL3NyYy9saWJiYWNrdHJhY2UvTWFrZWZpbGUuaW4K aW5kZXggNzU0NTg5NGQ1OWEuLjVjNmI0ZGQxYTBjIDEwMDY0NAotLS0gYS9saWJzdGRjKyst djMvc3JjL2xpYmJhY2t0cmFjZS9NYWtlZmlsZS5pbgorKysgYi9saWJzdGRjKystdjMvc3Jj L2xpYmJhY2t0cmFjZS9NYWtlZmlsZS5pbgpAQCAtMTgxLDEwICsxODEsMTAgQEAgYW1fX3Vu aW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVT VERJUikkKHRvb2xleGVjbGliZGlyKSIKIExUTElCUkFSSUVTID0gJCh0b29sZXhlY2xpYl9M VExJQlJBUklFUykKIGFtX2xpYnN0ZGNfX19saWJiYWNrdHJhY2VfbGFfT0JKRUNUUyA9ICQo b2JqX3ByZWZpeCktYXRvbWljLmxvIFwKLQkkKG9ial9wcmVmaXgpLWR3YXJmLmxvICQob2Jq X3ByZWZpeCktZmlsZWxpbmUubG8gXAotCSQob2JqX3ByZWZpeCktcG9zaXgubG8gJChvYmpf cHJlZml4KS1zb3J0LmxvIFwKLQkkKG9ial9wcmVmaXgpLXNpbXBsZS5sbyAkKG9ial9wcmVm aXgpLXN0YXRlLmxvIFwKLQkkKG9ial9wcmVmaXgpLWNwLWRlbWFuZ2xlLmxvCisJJChvYmpf cHJlZml4KS1iYWNrdHJhY2UubG8gJChvYmpfcHJlZml4KS1kd2FyZi5sbyBcCisJJChvYmpf cHJlZml4KS1maWxlbGluZS5sbyAkKG9ial9wcmVmaXgpLXBvc2l4LmxvIFwKKwkkKG9ial9w cmVmaXgpLXNvcnQubG8gJChvYmpfcHJlZml4KS1zaW1wbGUubG8gXAorCSQob2JqX3ByZWZp eCktc3RhdGUubG8gJChvYmpfcHJlZml4KS1jcC1kZW1hbmdsZS5sbwogbGlic3RkY19fX2xp YmJhY2t0cmFjZV9sYV9PQkpFQ1RTID0gIFwKIAkkKGFtX2xpYnN0ZGNfX19saWJiYWNrdHJh Y2VfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKQEAgLTUwNyw2 ICs1MDcsNyBAQCBvYmpfcHJlZml4ID0gc3RkX3N0YWNrdHJhY2UKIGxpYnN0ZGNfX19saWJi YWNrdHJhY2VfbGFfU0hPUlROQU1FID0gJChvYmpfcHJlZml4KQogbGlic3RkY19fX2xpYmJh Y2t0cmFjZV9sYV9TT1VSQ0VTID0gXAogCWF0b21pYy5jIFwKKwliYWNrdHJhY2UuYyBcCiAJ ZHdhcmYuYyBcCiAJZmlsZWxpbmUuYyBcCiAJcG9zaXguYyBcCkBAIC02NDcsNiArNjQ4LDkg QEAgZGlzdGNsZWFuLWNvbXBpbGU6CiAkKG9ial9wcmVmaXgpLWF0b21pYy5sbzogYXRvbWlj LmMKIAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElC VE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZT KSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGlic3RkY19fX2xpYmJhY2t0 cmFjZV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAt YyAtbyAkKG9ial9wcmVmaXgpLWF0b21pYy5sbyBgdGVzdCAtZiAnYXRvbWljLmMnIHx8IGVj aG8gJyQoc3JjZGlyKS8nYGF0b21pYy5jCiAKKyQob2JqX3ByZWZpeCktYmFja3RyYWNlLmxv OiBiYWNrdHJhY2UuYworCSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9 Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAk KENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJzdGRj X19fbGliYmFja3RyYWNlX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykg JChDRkxBR1MpIC1jIC1vICQob2JqX3ByZWZpeCktYmFja3RyYWNlLmxvIGB0ZXN0IC1mICdi YWNrdHJhY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgYmFja3RyYWNlLmMKKwogJChvYmpf cHJlZml4KS1kd2FyZi5sbzogZHdhcmYuYwogCSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1f Vl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1v ZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURF UykgJChsaWJzdGRjX19fbGliYmFja3RyYWNlX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAk KEFNX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vICQob2JqX3ByZWZpeCktZHdhcmYubG8gYHRl c3QgLWYgJ2R3YXJmLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGR3YXJmLmMKIApkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL3NyYy9saWJiYWNrdHJhY2UvYmFja3RyYWNlLXJlbmFtZS5o IGIvbGlic3RkYysrLXYzL3NyYy9saWJiYWNrdHJhY2UvYmFja3RyYWNlLXJlbmFtZS5oCmlu ZGV4IDdhNTlmMTY2ZTYyLi43OWJkZWY2MzA5ZiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYz L3NyYy9saWJiYWNrdHJhY2UvYmFja3RyYWNlLXJlbmFtZS5oCisrKyBiL2xpYnN0ZGMrKy12 My9zcmMvbGliYmFja3RyYWNlL2JhY2t0cmFjZS1yZW5hbWUuaApAQCAtNCw2ICs0LDcgQEAK ICNkZWZpbmUgYmFja3RyYWNlX2NyZWF0ZV9zdGF0ZSBfX2dsaWJjeHhfYmFja3RyYWNlX2Ny ZWF0ZV9zdGF0ZQogI2RlZmluZSBiYWNrdHJhY2VfZHdhcmZfYWRkIF9fZ2xpYmN4eF9iYWNr dHJhY2VfZHdhcmZfYWRkCiAjZGVmaW5lIGJhY2t0cmFjZV9mcmVlIF9fZ2xpYmN4eF9iYWNr dHJhY2VfZnJlZQorI2RlZmluZSBiYWNrdHJhY2VfZnVsbCBfX2dsaWJjeHhfYmFja3RyYWNl X2Z1bGwKICNkZWZpbmUgYmFja3RyYWNlX2dldF92aWV3IF9fZ2xpYmN4eF9iYWNrdHJhY2Vf Z2V0X3ZpZXcKICNkZWZpbmUgYmFja3RyYWNlX2luaXRpYWxpemUgX19nbGliY3h4X2JhY2t0 cmFjZV9pbml0aWFsaXplCiAjZGVmaW5lIGJhY2t0cmFjZV9vcGVuIF9fZ2xpYmN4eF9iYWNr dHJhY2Vfb3BlbgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL3Rlc3RzdWl0ZS8yM19jb250 YWluZXJzL3ZlY3Rvci9kZWJ1Zy9hc3NpZ240X25lZy5jYyBiL2xpYnN0ZGMrKy12My90ZXN0 c3VpdGUvMjNfY29udGFpbmVycy92ZWN0b3IvZGVidWcvYXNzaWduNF9uZWcuY2MKaW5kZXgg N2FiNjU4ZDBiYTEuLjgzZGQ2N2IzNTJhIDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvdGVz dHN1aXRlLzIzX2NvbnRhaW5lcnMvdmVjdG9yL2RlYnVnL2Fzc2lnbjRfbmVnLmNjCisrKyBi L2xpYnN0ZGMrKy12My90ZXN0c3VpdGUvMjNfY29udGFpbmVycy92ZWN0b3IvZGVidWcvYXNz aWduNF9uZWcuY2MKQEAgLTE1LDYgKzE1LDcgQEAKIC8vIHdpdGggdGhpcyBsaWJyYXJ5OyBz ZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAvLyA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCiAvLworLy8geyBkZy1vcHRpb25zICItbHN0ZGMrK19saWJiYWNr dHJhY2UiIH0KIC8vIHsgZGctZG8gcnVuIHsgeGZhaWwgKi0qLSogfSB9CiAKICNpbmNsdWRl IDxkZWJ1Zy92ZWN0b3I+Cg== --------------l2MrmirAwcFzbPneWHBLBbWa--