From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3403 invoked by alias); 28 Jul 2015 17:11:43 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 3387 invoked by uid 89); 28 Jul 2015 17:11:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_05,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-vn0-f47.google.com Received: from mail-vn0-f47.google.com (HELO mail-vn0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 28 Jul 2015 17:11:40 +0000 Received: by vnav141 with SMTP id v141so45413126vna.0 for ; Tue, 28 Jul 2015 10:11:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc :content-type; bh=1NQUF32YJkaLHZyd4hahWbLWmiF16qlNxhptxdludek=; b=P7vuJZUO/iTw5RyFw0cjWXuCM0fIe+B5BFoOiqFFqSeQtey/O+ScDBbJUnAgnLHfSX K4rK0c7BLLZIsEfwEELqKJ/QWtctNjrQvqxS6HmXL8OGMGSOr79wICwidhhMZyjFLrk9 o0NWHf+/RwdRTkYTrd5QD+jXPbK7V8xOPpmgWDcDarHytqokdESQUHbg8R5s8V2iBtki IAi0GMwq7gONpHofvc9ILRrS1QHiwRjqvvAtL2LWCiAWbxgnrJeEK6oq5eUXH6bxFTQ7 wEaM5w34CJpvfpvEU3x/WMajp/tdV6rmgBxX0IOwAg0k4iJ/uOBV9naWOWbhur3+2PoN DyLg== X-Gm-Message-State: ALoCoQmsKBuJYW/0VFgOD2usXTLVro50YWtLmpONFa20QQRbbylw8+1M1K1FoeeS13LU7dLt6wfv X-Received: by 10.52.180.3 with SMTP id dk3mr44157311vdc.32.1438103497772; Tue, 28 Jul 2015 10:11:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.31.191.83 with HTTP; Tue, 28 Jul 2015 10:11:18 -0700 (PDT) From: Caroline Tice Date: Tue, 28 Jul 2015 17:57:00 -0000 Message-ID: Subject: [PATCH, PR 66521] Fix bootstrap segfault with vtable verification enabled To: GCC Patches Cc: Caroline Tice , Luis Lozano Content-Type: multipart/mixed; boundary=bcaec5196aab22ce04051bf29013 X-IsSubscribed: yes X-SW-Source: 2015-07/txt/msg02394.txt.bz2 --bcaec5196aab22ce04051bf29013 Content-Type: text/plain; charset=UTF-8 Content-length: 2641 I believe the following patch fixes a problem with bootstrap failures on some architectures with vtable verification enabled. The problem was related to a change in name mangling, where classes with anonymous namespaces get "" as their DECL_ASSEMBLER_NAME, rather than the real mangled name. This was causing multiple problems for vtable verification, since not only do we use the mangled name to uniquely identify the various classes (the anonymous classes were no longer being properly 'uniqued'), but also the DECL_ASSEMBLER_NAME was being incorporated into our variable names and ending up in the assembly code and angle-brackets are not legal there. This patch should fix those problems, as well as a few other minor issues I found while working on this. I have bootstrapped with this patch on an x85_64 linux system; I have run all the testsuites with no regressions; and I have verified that it fixes the problem. Is this ok to commit? -- Caroline Tice cmtice@google.com ChangeLogs: libvtv/ChangeLog 2015-07-28 Caroline Tice PR 66521 * Makefile.am: Update to match latest tree. * Makefile.in: Regenerate. * testsuite/lib/libvtv: Brought up to date. * vtv_malloc.cc (VTV_DEBUG): Update function call to match renamed function (old bug!). * vtv_rts.cc (debug_functions, debug_init, debug_verify_vtable): Update initializations to work correctly with VTV_DEBUG defined. gcc/ChangeLog: 2015-07-28 Caroline Tice PR 66521 * vtable-verify.c (vtbl_mangled_name_types, vtbl_mangled_name_ids): New global variables. (vtbl_find_mangled_name): New function. (vtbl_register_mangled_name): New function. (vtbl_map_get_node): If DECL_ASSEMBLER_NAME is "", look up mangled name in mangled name vectors. (find_or_create_vtbl_map_node): Ditto. (var_is_used_for_virtual_call_p): Add recursion_depth parameter; update recursion_depth on function entry; pass it to every recursive call; automatically exit if depth > 25 (give up looking at that point). (verify_bb_vtables): Initialize recursion_depth and pass it to var_is_used_for_virtual_call_p. * vtable-verify.h (vtbl_mangbled_name_types, vtbl_mangled_name_ids): New global variable decls. (vtbl_register_mangled_name): New extern function decl. gcc/cp/ChangeLog: 2015-07-28 Caroline Tice PR 66521 * mangle.c : Add vtable-verify.h to include files. (get_mangled_vtable_map_var_name): If the DECL_ASSEMBLER_NAME is "" get the real mangled name for the class instead, and also store the real mangled name in a vector for use later. --bcaec5196aab22ce04051bf29013 Content-Type: text/x-patch; charset=UTF-8; name="gcc-fsf-vtv.patch" Content-Disposition: attachment; filename="gcc-fsf-vtv.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_icnln1jm0 Content-length: 15291 SW5kZXg6IGdjYy9jcC9tYW5nbGUuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBnY2MvY3AvbWFuZ2xlLmMJKHJldmlzaW9uIDIyNjI3NSkKKysrIGdj Yy9jcC9tYW5nbGUuYwkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBA QAogI2luY2x1ZGUgImZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiY2dyYXBoLmgi CiAjaW5jbHVkZSAiYXR0cmlicy5oIgorI2luY2x1ZGUgInZ0YWJsZS12ZXJp ZnkuaCIKIAogLyogRGVidWdnaW5nIHN1cHBvcnQuICAqLwogCkBAIC00MDM0 LDYgKzQwMzUsMTMgQEAKICAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFIChjbGFz c190eXBlKSA9PSBSRUNPUkRfVFlQRSk7CiAKICAgdHJlZSBjbGFzc19pZCA9 IERFQ0xfQVNTRU1CTEVSX05BTUUgKFRZUEVfTkFNRSAoY2xhc3NfdHlwZSkp OworCisgIGlmIChzdHJzdHIgKElERU5USUZJRVJfUE9JTlRFUiAoY2xhc3Nf aWQpLCAiPGFub24+IikgIT0gTlVMTCkKKyAgICB7CisgICAgICBjbGFzc19p ZCA9IGdldF9tYW5nbGVkX2lkIChUWVBFX05BTUUgKGNsYXNzX3R5cGUpKTsK KyAgICAgIHZ0YmxfcmVnaXN0ZXJfbWFuZ2xlZF9uYW1lIChUWVBFX05BTUUg KGNsYXNzX3R5cGUpLCBjbGFzc19pZCk7CisgICAgfQorCiAgIHVuc2lnbmVk IGludCBsZW4gPSBzdHJsZW4gKElERU5USUZJRVJfUE9JTlRFUiAoY2xhc3Nf aWQpKSArCiAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4gKHByZWZpeCkg KwogICAgICAgICAgICAgICAgICAgICAgc3RybGVuIChwb3N0Zml4KSArIDE7 CkluZGV4OiBnY2MvdnRhYmxlLXZlcmlmeS5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGdjYy92dGFibGUtdmVyaWZ5LmMJKHJldmlzaW9uIDIyNjI3 NSkKKysrIGdjYy92dGFibGUtdmVyaWZ5LmMJKHdvcmtpbmcgY29weSkKQEAg LTMxMCw2ICszMTAsNzAgQEAKIC8qIFZ0YWJsZSBtYXAgdmFyaWFibGUgbm9k ZXMgc3RvcmVkIGluIGEgdmVjdG9yLiAgKi8KIHZlYzxzdHJ1Y3QgdnRibF9t YXBfbm9kZSAqPiB2dGJsX21hcF9ub2Rlc192ZWM7CiAKKy8qIFZlY3RvciBv ZiBtYW5nbGVkIG5hbWVzIGZvciBhbm9ueW1vdXMgY2xhc3Nlcy4gICovCitl eHRlcm4gR1RZKCgpKSB2ZWM8dHJlZSwgdmFfZ2M+ICp2dGJsX21hbmdsZWRf bmFtZV90eXBlczsKK2V4dGVybiBHVFkoKCkpIHZlYzx0cmVlLCB2YV9nYz4g KnZ0YmxfbWFuZ2xlZF9uYW1lX2lkczsKK3ZlYzx0cmVlLCB2YV9nYz4gKnZ0 YmxfbWFuZ2xlZF9uYW1lX3R5cGVzOwordmVjPHRyZWUsIHZhX2djPiAqdnRi bF9tYW5nbGVkX25hbWVfaWRzOworCisvKiBMb29rIHVwIGNsYXNzX3R5cGUg KGEgdHlwZSBkZWNsIGZvciByZWNvcmQgdHlwZXMpIGluIHRoZSB2dGJsX21h bmdsZWRfbmFtZXNfKgorICAgdmVjdG9ycy4gIFRoaXMgaXMgYSBsaW5lYXIg bG9va3VwLiAgUmV0dXJuIHRoZSBhc3NvY2lhdGVkIG1hbmdsZWQgbmFtZSBm b3IKKyAgIHRoZSBjbGFzcyB0eXBlLiAgVGhpcyBpcyBmb3IgaGFuZGxpbmcg dHlwZXMgZnJvbSBhbm9ueW1vdXMgbmFtZXNwYWNlcywgd2hvc2UKKyAgIERF Q0xfQVNTRU1CTEVSX05BTUUgZW5kcyB1cCBiZWluZyAiPGFub24+Iiwgd2hp Y2ggaXMgdXNlbGVzcyBmb3Igb3VyCisgICBwdXJwb3Nlcy4KKworICAgV2Ug dXNlIHR3byB2ZWN0b3JzIG9mIHRyZWVzIHRvIGtlZXAgdHJhY2sgb2YgdGhl IG1hbmdsZWQgbmFtZXM6ICBPbmUgaXMgYQorICAgdmVjdG9yIG9mIGNsYXNz IHR5cGVzIGFuZCB0aGUgb3RoZXIgaXMgYSB2ZWN0b3Igb2YgdGhlIG1hbmds ZWQgbmFtZXMuICBUaGUKKyAgIGFzc3VtcHRpb24gaXMgdGhhdCB0aGVzZSB0 d28gdmVjdG9ycyBhcmUga2VwdCBpbiBwZXJmZWN0IGxvY2stc3RlcCBzbyB0 aGF0CisgICB2dGJsX21hbmdsZWRfbmFtZV9pZHNbaV0gaXMgdGhlIG1hbmds ZWQgbmFtZSBmb3IKKyAgIHZ0YmxfbWFuZ2xlZF9uYW1lX3R5cGVzW2ldLiAg Ki8KKworc3RhdGljIHRyZWUKK3Z0YmxfZmluZF9tYW5nbGVkX25hbWUgKHRy ZWUgY2xhc3NfdHlwZSkKK3sKKyAgdHJlZSByZXN1bHQgPSBOVUxMX1RSRUU7 CisgIHVuc2lnbmVkIGk7CisKKyAgaWYgKCF2dGJsX21hbmdsZWRfbmFtZV90 eXBlcyBvciAhdnRibF9tYW5nbGVkX25hbWVfaWRzKQorICAgIHJldHVybiBy ZXN1bHQ7CisKKyAgaWYgKHZ0YmxfbWFuZ2xlZF9uYW1lX3R5cGVzLT5sZW5n dGgoKSAhPSB2dGJsX21hbmdsZWRfbmFtZV9pZHMtPmxlbmd0aCgpKQorICAg IHJldHVybiByZXN1bHQ7CisKKyAgZm9yIChpID0gMDsgaSA8IHZ0YmxfbWFu Z2xlZF9uYW1lX3R5cGVzLT5sZW5ndGgoKTsgKytpKQorICAgIGlmICgoKnZ0 YmxfbWFuZ2xlZF9uYW1lX3R5cGVzKVtpXSA9PSBjbGFzc190eXBlKQorICAg ICAgeworCXJlc3VsdCA9ICgqdnRibF9tYW5nbGVkX25hbWVfaWRzKVtpXTsK KwlicmVhazsKKyAgICAgIH0KKworICByZXR1cm4gcmVzdWx0OworfQorCisv KiBTdG9yZSBhIGNsYXNzIHR5cGUgZGVjbCBhbmQgaXRzIG1hbmdsZWQgbmFt ZSwgZm9yIGFuIGFub255bW91cyBSRUNPUkRfVFlQRSwKKyAgIGluIHRoZSB2 dGJsX21hbmdsZWRfbmFtZXMgdmVjdG9yLiAgTWFrZSBzdXJlIHRoZXJlIGlz IG5vdCBhbHJlYWR5IGFuCisgICBlbnRyeSBmb3IgdGhlIGNsYXNzIHR5cGUg YmVmb3JlIGFkZGluZyBpdC4gICovCisKK3ZvaWQKK3Z0YmxfcmVnaXN0ZXJf bWFuZ2xlZF9uYW1lICh0cmVlIGNsYXNzX3R5cGUsIHRyZWUgbWFuZ2xlZF9u YW1lKQoreworICBpZiAoIXZ0YmxfbWFuZ2xlZF9uYW1lX3R5cGVzKQorICAg IHZlY19hbGxvYyAodnRibF9tYW5nbGVkX25hbWVfdHlwZXMsIDEwKTsKKwor ICBpZiAoIXZ0YmxfbWFuZ2xlZF9uYW1lX2lkcykKKyAgICB2ZWNfYWxsb2Mg KHZ0YmxfbWFuZ2xlZF9uYW1lX2lkcywgMTApOworCisgIGdjY19hc3NlcnQg KHZ0YmxfbWFuZ2xlZF9uYW1lX3R5cGVzLT5sZW5ndGgoKSA9PQorCSAgICAg IHZ0YmxfbWFuZ2xlZF9uYW1lX2lkcy0+bGVuZ3RoKCkpOworICAgIAorCisg IGlmICh2dGJsX2ZpbmRfbWFuZ2xlZF9uYW1lIChjbGFzc190eXBlKSA9PSBO VUxMX1RSRUUpCisgICAgeworICAgICAgdmVjX3NhZmVfcHVzaCAodnRibF9t YW5nbGVkX25hbWVfdHlwZXMsIGNsYXNzX3R5cGUpOworICAgICAgdmVjX3Nh ZmVfcHVzaCAodnRibF9tYW5nbGVkX25hbWVfaWRzLCBtYW5nbGVkX25hbWUp OworICAgIH0KK30KKwogLyogUmV0dXJuIHZ0YmxfbWFwIG5vZGUgZm9yIENM QVNTX05BTUUgIHdpdGhvdXQgY3JlYXRpbmcgYSBuZXcgb25lLiAgKi8KIAog c3RydWN0IHZ0YmxfbWFwX25vZGUgKgpAQCAtMzM5LDYgKzQwMyw5IEBACiAg IGdjY19hc3NlcnQgKEhBU19ERUNMX0FTU0VNQkxFUl9OQU1FX1AgKGNsYXNz X3R5cGVfZGVjbCkpOwogICBjbGFzc19uYW1lID0gREVDTF9BU1NFTUJMRVJf TkFNRSAoY2xhc3NfdHlwZV9kZWNsKTsKIAorICBpZiAoc3Ryc3RyIChJREVO VElGSUVSX1BPSU5URVIgKGNsYXNzX25hbWUpLCAiPGFub24+IikgIT0gTlVM TCkKKyAgICBjbGFzc19uYW1lID0gdnRibF9maW5kX21hbmdsZWRfbmFtZSAo Y2xhc3NfdHlwZV9kZWNsKTsKKwogICBrZXkuY2xhc3NfbmFtZSA9IGNsYXNz X25hbWU7CiAgIHNsb3QgPSAoc3RydWN0IHZ0YmxfbWFwX25vZGUgKiopIHZ0 YmxfbWFwX2hhc2gtPmZpbmRfc2xvdCAoJmtleSwgTk9fSU5TRVJUKTsKICAg aWYgKCFzbG90KQpAQCAtMzcwLDYgKzQzNywxMCBAQAogCiAgIGdjY19hc3Nl cnQgKEhBU19ERUNMX0FTU0VNQkxFUl9OQU1FX1AgKGNsYXNzX3R5cGVfZGVj bCkpOwogICBrZXkuY2xhc3NfbmFtZSA9IERFQ0xfQVNTRU1CTEVSX05BTUUg KGNsYXNzX3R5cGVfZGVjbCk7CisKKyAgaWYgKHN0cnN0ciAoSURFTlRJRklF Ul9QT0lOVEVSIChrZXkuY2xhc3NfbmFtZSksICI8YW5vbj4iKSAhPSBOVUxM KQorICAgIGtleS5jbGFzc19uYW1lID0gdnRibF9maW5kX21hbmdsZWRfbmFt ZSAoY2xhc3NfdHlwZV9kZWNsKTsKKwogICBzbG90ID0gKHN0cnVjdCB2dGJs X21hcF9ub2RlICoqKSB2dGJsX21hcF9oYXNoLT5maW5kX3Nsb3QgKCZrZXks IElOU0VSVCk7CiAKICAgaWYgKCpzbG90KQpAQCAtNDgyLDcgKzU1Myw4IEBA CiAgICB0aGUgdXNlIGNoYWluLiAgKi8KIAogc3RhdGljIGJvb2wKLXZhcl9p c191c2VkX2Zvcl92aXJ0dWFsX2NhbGxfcCAodHJlZSBsaHMsIGludCAqbWVt X3JlZl9kZXB0aCkKK3Zhcl9pc191c2VkX2Zvcl92aXJ0dWFsX2NhbGxfcCAo dHJlZSBsaHMsIGludCAqbWVtX3JlZl9kZXB0aCwKKwkJCQlpbnQgKnJlY3Vy c2lvbl9kZXB0aCkKIHsKICAgaW1tX3VzZV9pdGVyYXRvciBpbW1faXRlcjsK ICAgYm9vbCBmb3VuZF92Y2FsbCA9IGZhbHNlOwpAQCAtNDk0LDYgKzU2Niwx NCBAQAogICBpZiAoKm1lbV9yZWZfZGVwdGggPiAyKQogICAgIHJldHVybiBm YWxzZTsKIAorICBpZiAoKnJlY3Vyc2lvbl9kZXB0aCA+IDI1KQorICAgIC8q IElmIHdlJ3ZlIHJlY3Vyc2VkIHRoaXMgZmFyIHRoZSBjaGFuY2VzIGFyZSBw cmV0dHkgZ29vZCB0aGF0CisgICAgICAgd2UncmUgbm90IGdvaW5nIHRvIGZp bmQgd2hhdCB3ZSdyZSBsb29raW5nIGZvciwgYW5kIHRoYXQgd2UndmUKKyAg ICAgICBnb25lIGRvd24gYSByZWN1cnNpb24gYmxhY2sgaG9sZS4gVGltZSB0 byBzdG9wLiAgKi8KKyAgICByZXR1cm4gZmFsc2U7CisKKyAgKnJlY3Vyc2lv bl9kZXB0aCA9ICpyZWN1cnNpb25fZGVwdGggKyAxOworCiAgIC8qIEl0ZXJh dGUgdGhyb3VnaCB0aGUgaW1tZWRpYXRlIHVzZXMgb2YgdGhlIGN1cnJlbnQg dmFyaWFibGUuICBJZgogICAgICBpdCdzIGEgdmlydHVhbCBmdW5jdGlvbiBj YWxsLCB3ZSdyZSBkb25lLiAgT3RoZXJ3aXNlLCBpZiB0aGVyZSdzCiAgICAg IGFuIExIUyBmb3IgdGhlIHVzZSBzdG10LCBhZGQgdGhlIHNzYSB2YXIgdG8g dGhlIHdvcmsgbGlzdApAQCAtNTE2LDcgKzU5Niw4IEBACiAgICAgICAgIHsK ICAgICAgICAgICBmb3VuZF92Y2FsbCA9IHZhcl9pc191c2VkX2Zvcl92aXJ0 dWFsX2NhbGxfcAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdpbXBsZV9waGlfcmVzdWx0IChzdG10MiksCi0JICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVt X3JlZl9kZXB0aCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWVtX3JlZl9kZXB0aCwKKwkJCQkJCSAgICAgcmVj dXJzaW9uX2RlcHRoKTsKICAgICAgICAgfQogICAgICAgZWxzZSBpZiAoaXNf Z2ltcGxlX2Fzc2lnbiAoc3RtdDIpKQogICAgICAgICB7CkBAIC01MzgsNyAr NjE5LDggQEAKIAkgIGlmICgqbWVtX3JlZl9kZXB0aCA8IDMpCiAJICAgIGZv dW5kX3ZjYWxsID0gdmFyX2lzX3VzZWRfZm9yX3ZpcnR1YWxfY2FsbF9wCiAJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Z2ltcGxlX2Fzc2lnbl9saHMgKHN0bXQyKSwKLQkJCQkJCSAgICAgbWVtX3Jl Zl9kZXB0aCk7CisJCQkJCQkgICAgIG1lbV9yZWZfZGVwdGgsCisJCQkJCQkg ICAgIHJlY3Vyc2lvbl9kZXB0aCk7CiAgICAgICAgIH0KIAogICAgICAgZWxz ZQpAQCAtNTk1LDkgKzY3NywxMSBAQAogICAgICAgICAgIHRyZWUgdG1wMDsK ICAgICAgICAgICBib29sIGZvdW5kOwogCSAgaW50IG1lbV9yZWZfZGVwdGgg PSAwOworCSAgaW50IHJlY3Vyc2lvbl9kZXB0aCA9IDA7CiAKICAgICAgICAg ICAvKiBNYWtlIHN1cmUgdGhpcyB2cHRyIGZpZWxkIGFjY2VzcyBpcyBmb3Ig YSB2aXJ0dWFsIGNhbGwuICAqLwotICAgICAgICAgIGlmICghdmFyX2lzX3Vz ZWRfZm9yX3ZpcnR1YWxfY2FsbF9wIChsaHMsICZtZW1fcmVmX2RlcHRoKSkK KyAgICAgICAgICBpZiAoIXZhcl9pc191c2VkX2Zvcl92aXJ0dWFsX2NhbGxf cCAobGhzLCAmbWVtX3JlZl9kZXB0aCwKKwkJCQkJICAgICAgICZyZWN1cnNp b25fZGVwdGgpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg ICAvKiBOb3cgd2UgaGF2ZSBmb3VuZCB0aGUgdmlydHVhbCBtZXRob2QgZGlz cGF0Y2ggYW5kCkluZGV4OiBnY2MvdnRhYmxlLXZlcmlmeS5oCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGdjYy92dGFibGUtdmVyaWZ5LmgJKHJldmlz aW9uIDIyNjI3NSkKKysrIGdjYy92dGFibGUtdmVyaWZ5LmgJKHdvcmtpbmcg Y29weSkKQEAgLTEyNyw2ICsxMjcsMTEgQEAKIC8qIFRoZSBnbG9iYWwgdmVj dG9yIG9mIHZ0YmxfbWFwX25vZGVzLiAgKi8KIGV4dGVybiB2ZWM8c3RydWN0 IHZ0YmxfbWFwX25vZGUgKj4gdnRibF9tYXBfbm9kZXNfdmVjOwogCisvKiAg VGhlIGdsb2JhbCB2ZWN0b3JzIGZvciBtYW5nbGVkIGNsYXNzIG5hbWVzIGZv ciBhbm9ueW1vdXMgY2xhc3Nlcy4gICovCitleHRlcm4gR1RZKCgpKSB2ZWM8 dHJlZSwgdmFfZ2M+ICp2dGJsX21hbmdsZWRfbmFtZV90eXBlczsKK2V4dGVy biBHVFkoKCkpIHZlYzx0cmVlLCB2YV9nYz4gKnZ0YmxfbWFuZ2xlZF9uYW1l X2lkczsKKworZXh0ZXJuIHZvaWQgdnRibF9yZWdpc3Rlcl9tYW5nbGVkX25h bWUgKHRyZWUsIHRyZWUpOwogZXh0ZXJuIHN0cnVjdCB2dGJsX21hcF9ub2Rl ICp2dGJsX21hcF9nZXRfbm9kZSAodHJlZSk7CiBleHRlcm4gc3RydWN0IHZ0 YmxfbWFwX25vZGUgKmZpbmRfb3JfY3JlYXRlX3Z0YmxfbWFwX25vZGUgKHRy ZWUpOwogZXh0ZXJuIHZvaWQgdnRibF9tYXBfbm9kZV9jbGFzc19pbnNlcnQg KHN0cnVjdCB2dGJsX21hcF9ub2RlICosIHVuc2lnbmVkKTsKSW5kZXg6IGxp YnZ0di90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gbGlidnR2L3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQkocmV2aXNp b24gMjI2Mjc1KQorKysgbGlidnR2L3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQko d29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMyBAQAotIyMgUHJvY2VzcyB0 aGlzIHdpdGggYXV0b21ha2UgdG8gY3JlYXRlIE1ha2VmaWxlLmluCisjIyBQ cm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFr ZWZpbGUuaW4uCiAKIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduIGRlamFn bnUKIAotRVhQRUNUID0gYGlmIFsgLWYgLi4vLi4vZXhwZWN0L2V4cGVjdCBd IDsgdGhlbiBcCi0JICBlY2hvIC4uLy4uL2V4cGVjdC9leHBlY3QgOyBcCi0J ICBlbHNlIGVjaG8gZXhwZWN0IDsgZmlgCisjIE1heSBiZSB1c2VkIGJ5IHZh cmlvdXMgc3Vic3RpdHV0aW9uIHZhcmlhYmxlcy4KK2djY192ZXJzaW9uIDo9 ICQoc2hlbGwgY2F0ICQodG9wX3NyY2RpcikvLi4vZ2NjL0JBU0UtVkVSKQog Ci1SVU5URVNUID0gYGlmIFsgLWYgJHtzcmNkaXJ9Ly4uLy4uL2RlamFnbnUv cnVudGVzdCBdIDsgdGhlbiBcCi0JICAgZWNobyAke3NyY2Rpcn0vLi4vLi4v ZGVqYWdudS9ydW50ZXN0IDsgXAotCSAgIGVsc2UgZWNobyBydW50ZXN0IDsg IGZpYAorRVhQRUNUID0gJChzaGVsbCBpZiB0ZXN0IC1mICQodG9wX2J1aWxk ZGlyKS8uLi9leHBlY3QvZXhwZWN0OyB0aGVuIFwKKwkgICBlY2hvICQodG9w X2J1aWxkZGlyKS8uLi9leHBlY3QvZXhwZWN0OyBlbHNlIGVjaG8gZXhwZWN0 OyBmaSkKKworX1JVTlRFU1QgPSAkKHNoZWxsIGlmIHRlc3QgLWYgJCh0b3Bf c3JjZGlyKS8uLi9kZWphZ251L3J1bnRlc3Q7IHRoZW4gXAorCSAgICAgZWNo byAkKHRvcF9zcmNkaXIpLy4uL2RlamFnbnUvcnVudGVzdDsgZWxzZSBlY2hv IHJ1bnRlc3Q7IGZpKQorUlVOVEVTVCA9ICIkKF9SVU5URVNUKSAkKEFNX1JV TlRFU1RGTEFHUykiCkluZGV4OiBsaWJ2dHYvdGVzdHN1aXRlL01ha2VmaWxl LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KClJlZ2VuZXJhdGVkLgoKSW5k ZXg6IGxpYnZ0di90ZXN0c3VpdGUvbGliL2xpYnZ0di5leHAKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gbGlidnR2L3Rlc3RzdWl0ZS9saWIvbGlidnR2 LmV4cAkocmV2aXNpb24gMjI2Mjc1KQorKysgbGlidnR2L3Rlc3RzdWl0ZS9s aWIvbGlidnR2LmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjQgKzIzLDI4 IEBACiB9CiAKIGxvYWRfbGliIGRnLmV4cAorCisjIFJlcXVpcmVkIHRvIHVz ZSBnY2MtZGcuZXhwIC0gaG93ZXZlciwgdGhlIGxhdHRlciBzaG91bGQgTk9U IGJlCisjwqBsb2FkZWQgdW50aWwgJHt0b29sfV90YXJnZXRfY29tcGlsZSBp cyBkZWZpbmVkIHNpbmNlIGl0IHVzZXMgdGhhdAorIyB0byBkZXRlcm1pbmUg ZGVmYXVsdCBMVE8gb3B0aW9ucy4KKworbG9hZF9nY2NfbGliIHBydW5lLmV4 cAorbG9hZF9nY2NfbGliIHRhcmdldC1saWJwYXRoLmV4cAorbG9hZF9nY2Nf bGliIHdyYXBwZXIuZXhwCitsb2FkX2djY19saWIgdGFyZ2V0LXN1cHBvcnRz LmV4cAorbG9hZF9nY2NfbGliIHRhcmdldC11dGlscy5leHAKK2xvYWRfZ2Nj X2xpYiBnY2MtZGVmcy5leHAKK2xvYWRfZ2NjX2xpYiB0aW1lb3V0LmV4cAog bG9hZF9nY2NfbGliIGZpbGUtZm9ybWF0LmV4cAotbG9hZF9nY2NfbGliIHRh cmdldC1zdXBwb3J0cy5leHAKIGxvYWRfZ2NjX2xpYiB0YXJnZXQtc3VwcG9y dHMtZGcuZXhwCi1sb2FkX2djY19saWIgdGFyZ2V0LXV0aWxzLmV4cAogbG9h ZF9nY2NfbGliIHNjYW5hc20uZXhwCiBsb2FkX2djY19saWIgc2NhbmR1bXAu ZXhwCiBsb2FkX2djY19saWIgc2NhbnJ0bC5leHAKIGxvYWRfZ2NjX2xpYiBz Y2FudHJlZS5leHAKIGxvYWRfZ2NjX2xpYiBzY2FuaXBhLmV4cAotbG9hZF9n Y2NfbGliIHBydW5lLmV4cAotbG9hZF9nY2NfbGliIHRhcmdldC1saWJwYXRo LmV4cAotbG9hZF9nY2NfbGliIHdyYXBwZXIuZXhwCi1sb2FkX2djY19saWIg Z2NjLWRlZnMuZXhwCitsb2FkX2djY19saWIgdGltZW91dC1kZy5leHAKIGxv YWRfZ2NjX2xpYiB0b3J0dXJlLW9wdGlvbnMuZXhwCi1sb2FkX2djY19saWIg dGltZW91dC5leHAKLWxvYWRfZ2NjX2xpYiB0aW1lb3V0LWRnLmV4cAogbG9h ZF9nY2NfbGliIGZvcnRyYW4tbW9kdWxlcy5leHAKLWxvYWRfZ2NjX2xpYiBn Y2MtZGcuZXhwCiAKIHNldCBkZy1kby13aGF0LWRlZmF1bHQgcnVuCiAKQEAg LTE0MywxMCArMTQ3LDIwIEBACiAgICAgfQogICAgIGxhcHBlbmQgQUxXQVlT X0NGTEFHUyAiYWRkaXRpb25hbF9mbGFncz0tSSR7c3JjZGlyfS8uLiIKIAor ICAgICMgV2UgdXNlIGF0b21pYyBvcGVyYXRpb25zIGluIHRoZSB0ZXN0Y2Fz ZXMgdG8gdmFsaWRhdGUgcmVzdWx0cy4KKyAgICBpZiB7IChbaXN0YXJnZXQg aT84Ni0qLSpdIHx8IFtpc3RhcmdldCB4ODZfNjQtKi0qXSkKKwkgJiYgW2No ZWNrX2VmZmVjdGl2ZV90YXJnZXRfaWEzMl0gfSB7CisJbGFwcGVuZCBBTFdB WVNfQ0ZMQUdTICJhZGRpdGlvbmFsX2ZsYWdzPS1tYXJjaD1pNDg2IgorICAg IH0KKwogICAgIGlmIFtpc3RhcmdldCAqLSotZGFyd2luKl0gewogCWxhcHBl bmQgQUxXQVlTX0NGTEFHUyAiYWRkaXRpb25hbF9mbGFncz0tc2hhcmVkLWxp YmdjYyIKICAgICB9CiAKKyAgICBpZiBbaXN0YXJnZXQgc3BhcmMqLSotKl0g eworCWxhcHBlbmQgQUxXQVlTX0NGTEFHUyAiYWRkaXRpb25hbF9mbGFncz0t bWNwdT12OSIKKyAgICB9CisKICAgICBpZiBbaW5mbyBleGlzdHMgVE9PTF9P UFRJT05TXSB7CiAJbGFwcGVuZCBBTFdBWVNfQ0ZMQUdTICJhZGRpdGlvbmFs X2ZsYWdzPSRUT09MX09QVElPTlMiCiAgICAgfQpAQCAtMTU1LDkgKzE2OSw4 IEBACiAgICAgIyBlcnJvci1tZXNzYWdlIHBhcnNpbmcgbWFjaGluZXJ5Lgog ICAgIGxhcHBlbmQgQUxXQVlTX0NGTEFHUyAiYWRkaXRpb25hbF9mbGFncz0t Zm1lc3NhZ2UtbGVuZ3RoPTAiCiAKLSAgICAjIFR1cm4gb24gdnRhYmxlIHZl cmlmaWNhdGlvbgotICAgIGxhcHBlbmQgQUxXQVlTX0NGTEFHUyAiLWZ2dGFi bGUtdmVyaWZ5PXN0ZCIKLSAgICAjIGxhcHBlbmQgQUxXQVlTX0NGTEFHUyAi bGRmbGFncz0tbHZ0diIKKyAgICAjIFR1cm4gb24gdnRhYmxlIHZlcmlmaWNh dGlvbi4KKyAgICBsYXBwZW5kIEFMV0FZU19DRkxBR1MgImFkZGl0aW9uYWxf ZmxhZ3M9LWZ2dGFibGUtdmVyaWZ5PXN0ZCIKIH0KIAogIwpJbmRleDogbGli dnR2L3Z0dl9tYWxsb2MuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g bGlidnR2L3Z0dl9tYWxsb2MuY2MJKHJldmlzaW9uIDIyNjI3NSkKKysrIGxp YnZ0di92dHZfbWFsbG9jLmNjCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyAr MTQ1LDcgQEAKICAgICB9CiAKICNpZmRlZiBWVFZfREVCVUcKLSAgICBWVFZf bWFsbG9jX2R1bXBfc3RhdHMgKCk7CisgICAgX192dHZfbWFsbG9jX2R1bXBf c3RhdHMgKCk7CiAjZW5kaWYKIH0KIApJbmRleDogbGlidnR2L3Z0dl9ydHMu Y2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGlidnR2L3Z0dl9ydHMu Y2MJKHJldmlzaW9uIDIyNjI3NSkKKysrIGxpYnZ0di92dHZfcnRzLmNjCSh3 b3JraW5nIGNvcHkpCkBAIC0yMDEsMTQgKzIwMSwxNSBAQAogICAgZGVidWdn aW5nL3RyYWNpbmcgd2lsbCBub3QgYmUgT04gb24gcHJvZHVjdGlvbiBlbnZp cm9ubWVudHMgKi8KIAogc3RhdGljIGNvbnN0IGJvb2wgZGVidWdfaGFzaCA9 IEhBU0hUQUJMRV9TVEFUUzsKLXN0YXRpYyBjb25zdCBpbnQgZGVidWdfZnVu Y3Rpb25zID0gMDsKLXN0YXRpYyBjb25zdCBpbnQgZGVidWdfaW5pdCA9IDA7 Ci1zdGF0aWMgY29uc3QgaW50IGRlYnVnX3ZlcmlmeV92dGFibGUgPSAwOwog CiAjaWZkZWYgVlRWX0RFQlVHCiBzdGF0aWMgY29uc3QgaW50IGRlYnVnX2Z1 bmN0aW9ucyA9IDE7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnX2luaXQgPSAx Owogc3RhdGljIGNvbnN0IGludCBkZWJ1Z192ZXJpZnlfdnRhYmxlID0gMTsK KyNlbHNlCitzdGF0aWMgY29uc3QgaW50IGRlYnVnX2Z1bmN0aW9ucyA9IDA7 CitzdGF0aWMgY29uc3QgaW50IGRlYnVnX2luaXQgPSAwOworc3RhdGljIGNv bnN0IGludCBkZWJ1Z192ZXJpZnlfdnRhYmxlID0gMDsKICNlbmRpZgogCiAv KiBHbG9iYWwgZmlsZSBkZXNjcmlwdG9yIHZhcmlhYmxlcyBmb3IgbG9nZ2lu ZywgdHJhY2luZyBhbmQgZGVidWdnaW5nLiAgKi8K --bcaec5196aab22ce04051bf29013--