From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 117498 invoked by alias); 9 Nov 2015 09:02:25 -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 117475 invoked by uid 89); 9 Nov 2015 09:02:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 09 Nov 2015 09:02:22 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id E46E2C0032F8 for ; Mon, 9 Nov 2015 09:02:20 +0000 (UTC) Received: from localhost.localdomain (ovpn-113-107.phx2.redhat.com [10.3.113.107]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id tA992KVM010273 for ; Mon, 9 Nov 2015 04:02:20 -0500 To: gcc-patches From: Jeff Law Subject: [PATCH] Minor refactoring in tree-ssanames.c & freelists verifier Message-ID: <5640611C.5090309@redhat.com> Date: Mon, 09 Nov 2015 09:02:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040505010602080000090506" X-IsSubscribed: yes X-SW-Source: 2015-11/txt/msg00907.txt.bz2 This is a multi-part message in MIME format. --------------040505010602080000090506 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1244 This is a piece of a larger refactoring. I'm postponing the larger refactoring until next stage1 -- I have some concerns about the compile-time impact that I'll need to measure. In the mean time I want to get knowledge of the freelists out of pass_release_ssa_names::execute. The larger refactoring will move the freelists into a class and pass_release_ssa_names won't have access to those private members. So the guts of that routine have been moved into what will ultimately be a method of the name manager. I'm also including a leak detector/verification routine for the freelists. This version will bootstrap on the trunk if the verifier is enabled at the end of flush_ssanames_freelist. However, the vectorizer leaks names horribly, thus it won't pass a regression test or a -O3 bootstrap. In the mean time, the verifier is still useful to help find leaks -- it's obviously not checking by default and the code is marked as a debug function. This wraps up the things I expect to address during this stage1 cycle. I've got a fair amount of patch review to cover in the immediate future as well as starting the bugfixing cycle. Bootstrapped and regression tested on x86_64-linux-gnu. Installed on the trunk. Jeff --------------040505010602080000090506 Content-Type: text/plain; charset=UTF-8; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch" Content-length: 15161 Y29tbWl0IGZlYmEyNjBlZDc1MDYwYzlhY2MyNjVmZjEyYTQ0NTU3ZTI4MGY1 YmUKQXV0aG9yOiBKZWZmIExhdyA8bGF3QHJlZGhhdC5jb20+CkRhdGU6ICAg U3VuIE5vdiA4IDIwOjMzOjU5IDIwMTUgLTA3MDAKCiAgICBbUEFUQ0hdIE1p bm9yIHJlZmFjdG9yaW5nIGluIHRyZWUtc3NhbmFtZXMuYyAmIGZyZWVsaXN0 cyB2ZXJpZmllcgogICAgCSogdHJlZS1pbnRvLXNzYS5jIChuYW1lc190b19y ZWxlYXNlKTogTm8gbG9uZ2VyIHN0YXRpYy4KICAgIAkqIHRyZWUtaW50by1z c2EuaCAobmFtZXNfdG9fcmVsZWFzZSk6IERlY2xhcmUuCiAgICAJKiB0cmVl LXNzYW5hbWVzLmMgKHZlcmlmeV9zc2FuYW1lX2ZyZWVsaXN0cyk6IE5ldyBk ZWJ1ZyBmdW5jdGlvbi4KICAgIAkocmVsZWFzZV9mcmVlX25hbWVzX2FuZF9j b21wYWN0X2xpdmVfbmFtZXMpOiBOZXcgZnVuY3Rpb24gZXh0cmFjdGVkCiAg ICAJZnJvbSBwYXNzX3JlbGVhc2Vfc3NhX25hbWVzOjpleGVjdXRlLgogICAg CShwYXNzX3JlbGVhc2Vfc3NhX25hbWVzOjpleGVjdXRlKTogVXNlIGl0LgoK ZGlmZiAtLWdpdCBhL2djYy9DaGFuZ2VMb2cgYi9nY2MvQ2hhbmdlTG9nCmlu ZGV4IGRmYjgzNTAuLmM3MGFiODcgMTAwNjQ0Ci0tLSBhL2djYy9DaGFuZ2VM b2cKKysrIGIvZ2NjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1 LTExLTA5ICBKZWZmIExhdyAgPGxhd0ByZWRoYXQuY29tPgorCisJKiB0cmVl LWludG8tc3NhLmMgKG5hbWVzX3RvX3JlbGVhc2UpOiBObyBsb25nZXIgc3Rh dGljLgorCSogdHJlZS1pbnRvLXNzYS5oIChuYW1lc190b19yZWxlYXNlKTog RGVjbGFyZS4KKwkqIHRyZWUtc3NhbmFtZXMuYyAodmVyaWZ5X3NzYW5hbWVf ZnJlZWxpc3RzKTogTmV3IGRlYnVnIGZ1bmN0aW9uLgorCShyZWxlYXNlX2Zy ZWVfbmFtZXNfYW5kX2NvbXBhY3RfbGl2ZV9uYW1lcyk6IE5ldyBmdW5jdGlv biBleHRyYWN0ZWQKKwlmcm9tIHBhc3NfcmVsZWFzZV9zc2FfbmFtZXM6OmV4 ZWN1dGUuCisJKHBhc3NfcmVsZWFzZV9zc2FfbmFtZXM6OmV4ZWN1dGUpOiBV c2UgaXQuCisKIDIwMTUtMTEtMDkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21h aWwuY29tPgogCiAJKiBnZW5zdXBwb3J0LmMgKGFkZF9tbmVtb25pY19zdHJp bmcpOiBNYWtlIGxlbiBwYXJhbSBhIHNpemVfdC4KQEAgLTExLDcgKzIwLDcg QEAKIAkqIGdjYy9iYi1yZW9yZGVyLmMgKHJlb3JkZXJfYmFzaWNfYmxvY2tz X3NpbXBsZSk6IFRyZWF0IGEgY29uZGl0aW9uYWwKIAlicmFuY2ggd2l0aCBv bmx5IG9uZSBzdWNjZXNzb3IganVzdCBsaWtlIHVuY29uZGl0aW9uYWwgYnJh bmNoZXMuCiAKLTIwMTUtMTEtMDggIEplZmYgTGF3ICA8amVmZkByZWRoYXQu Y29tPgorMjAxNS0xMS0wOCAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4K IAogCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHJlZ2lzdGVyX2p1bXBf dGhyYWVkKTogQXNzZXJ0IHRoYXQgYQogCW5vbi1GU00gcGF0aCBoYXMgbm8g ZWRnZXMgbWFya2VkIHdpdGggRURHRV9ERlNfQkFDSy4KQEAgLTM2OSw3ICsz NzgsNyBAQAogCXRoZSBkb21pbmFuY2UgaW5mbzsgZnJlZSBpdCBpZiB3ZSBj YW4ndC4KIAkocGFzc19jYWxsX2NkY2U6OmV4ZWN1dGUpOiBEb24ndCBmcmVl IHRoZSBkb21pbmFuY2UgaW5mbyBoZXJlLgogCi0yMDE1LTExLTA2ICBKZWZm IExhdyA8amVmZkByZWRoYXQuY29tPgorMjAxNS0xMS0wNiAgSmVmZiBMYXcg PGxhd0ByZWRoYXQuY29tPgogCiAJKiB0cmVlLXNzYS10aHJlYWRlZGdlLmMg KGR1bW15X3NpbXBsaWZ5KTogUmVtb3ZlLgogCSh0aHJlYWRfYXJvdW5kX2Vt cHR5X2Jsb2Nrcyk6IFJlbW92ZSBiYWNrZWRnZV9zZWVuX3AgYXJndW1lbnQu CkBAIC00MDIsNyArNDExLDcgQEAKIAkoYnVpbGRfc2NvcF9zY2F0dGVyaW5n KTogQ2FsbCBidWlsZF9wYmJfbWluaW1hbF9zY2F0dGVyaW5nX3BvbHloZWRy b25zLgogCShidWlsZF9wb2x5X3Njb3ApOiBDYWxsIGJ1aWxkX3Njb3BfbWlu aW1hbF9zY2F0dGVyaW5nLgogCi0yMDE1LTExLTA2ICBKZWZmIExhdyA8amVm ZkByZWRoYXQuY29tPgorMjAxNS0xMS0wNiAgSmVmZiBMYXcgPGxhd0ByZWRo YXQuY29tPgogCiAJKiBjZmctZmxhZ3MuZGVmIChJR05PUkUpOiBOZXcgZWRn ZSBmbGFnLgogCSogdHJlZS12cnAuYyAoaWRlbnRpZnlfanVtcF90aHJlYWRz KTogTWFyayBhbmQgY2xlYXIgZWRnZXMKQEAgLTExNzQsNyArMTE4Myw3IEBA CiAJKiB0cmVlLXNzYS5jIChnaW1wbGVfdXNlc191bmRlZmluZWRfdmFsdWVf cCk6IE5ldy4KIAkqIHRyZWUtc3NhLmggKGdpbXBsZV91c2VzX3VuZGVmaW5l ZF92YWx1ZV9wKTogRGVjbGFyZS4KIAotMjAxNS0xMS0wMiAgSmVmZiBMYXcg PGplZmZAcmVkaGF0LmNvbT4KKzIwMTUtMTEtMDIgIEplZmYgTGF3IDxsYXdA cmVkaGF0LmNvbT4KIAogCSogdHJlZS1zc2EtdGhyZWFkdXBkYXRlLmMgKHZh bGlkX2p1bXBfdGhyZWFkX3BhdGgpOiBBbHNvIGRldGVjdAogCWNhc2VzIHdo ZXJlIHRoZSBsb29wIGxhdGNoIGVkZ2UgaXMgaW4gdGhlIG1pZGRsZSBvZiBh biBGU00gcGF0aC4KQEAgLTEyMzgsNyArMTI0Nyw3IEBACiAJUFIgbWlkZGxl LWVuZC82ODE2NgogCSogZm9sZC1jb25zdC5jOiBJbmNsdWRlICJtZDUuaCIu CiAKLTIwMTUtMTEtMDEgIEplZmYgTGF3IDxqZWZmQHJlZGhhdC5jb20+Cisy MDE1LTExLTAxICBKZWZmIExhdyA8bGF3QHJlZGhhdC5jb20+CiAKIAkqIHZt c2RiZ291dC5jOiBSZXZlcnQgdW51c2VkIGhlYWRlciBmaWxlIHJlZHVjdGlv biBwYXRjaC4KIApAQCAtMTI4Nyw3ICsxMjk2LDcgQEAKIAogCSogdHJlZS1z c2Etc3RydWN0YWxpYXMuYyAoaXBhX3B0YV9leGVjdXRlKTogVXNlIG1ha2Vf Y29weV9jb25zdHJhaW50LgogCi0yMDE1LTEwLTMwICBKZWZmIExhdyA8amVm ZkByZWRoYXQuY29tPgorMjAxNS0xMC0zMCAgSmVmZiBMYXcgPGxhd0ByZWRo YXQuY29tPgogCSAgICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3Jn PgogCiAJKiBjb25maWcvbnZwdHgvbnZwdHguaCAoSEFSRF9SRUdOT19OUkVH Uyk6IEF2b2lkIHdhcm5pbmcgb24gdW51c2VkCmRpZmYgLS1naXQgYS9nY2Mv dHJlZS1pbnRvLXNzYS5jIGIvZ2NjL3RyZWUtaW50by1zc2EuYwppbmRleCA2 NTMzOTk4Li4zMDg2ZjgyIDEwMDY0NAotLS0gYS9nY2MvdHJlZS1pbnRvLXNz YS5jCisrKyBiL2djYy90cmVlLWludG8tc3NhLmMKQEAgLTk0LDcgKzk0LDcg QEAgc3RhdGljIHNiaXRtYXAgaW50ZXJlc3RpbmdfYmxvY2tzOwogLyogU2V0 IG9mIFNTQSBuYW1lcyB0aGF0IGhhdmUgYmVlbiBtYXJrZWQgdG8gYmUgcmVs ZWFzZWQgYWZ0ZXIgdGhleQogICAgd2VyZSByZWdpc3RlcmVkIGluIHRoZSBy ZXBsYWNlbWVudCB0YWJsZS4gIFRoZXkgd2lsbCBiZSBmaW5hbGx5CiAgICBy ZWxlYXNlZCBhZnRlciB3ZSBmaW5pc2ggdXBkYXRpbmcgdGhlIFNTQSB3ZWIu ICAqLwotc3RhdGljIGJpdG1hcCBuYW1lc190b19yZWxlYXNlOworYml0bWFw IG5hbWVzX3RvX3JlbGVhc2U7CiAKIC8qIHZlYyBvZiB2ZWMgb2YgUEhJcyB0 byByZXdyaXRlIGluIGEgYmFzaWMgYmxvY2suICBFbGVtZW50IEkgY29ycmVz cG9uZHMKICAgIHRoZSB0byBiYXNpYyBibG9jayB3aXRoIGluZGV4IEkuICBB bGxvY2F0ZWQgb25jZSBwZXIgY29tcGlsYXRpb24sICpub3QqCmRpZmYgLS1n aXQgYS9nY2MvdHJlZS1pbnRvLXNzYS5oIGIvZ2NjL3RyZWUtaW50by1zc2Eu aAppbmRleCBjMDUzZjc4Li5hZWQxZTk1IDEwMDY0NAotLS0gYS9nY2MvdHJl ZS1pbnRvLXNzYS5oCisrKyBiL2djYy90cmVlLWludG8tc3NhLmgKQEAgLTQ4 LDUgKzQ4LDYgQEAgZXh0ZXJuIHZvaWQgZHVtcF9uYW1lc19yZXBsYWNlZF9i eSAoRklMRSAqLCB0cmVlKTsKIGV4dGVybiB2b2lkIGRlYnVnX25hbWVzX3Jl cGxhY2VkX2J5ICh0cmVlKTsKIGV4dGVybiB2b2lkIGR1bXBfdXBkYXRlX3Nz YSAoRklMRSAqKTsKIGV4dGVybiB2b2lkIGRlYnVnX3VwZGF0ZV9zc2EgKHZv aWQpOworZXh0ZXJuIGJpdG1hcCBuYW1lc190b19yZWxlYXNlOwogCiAjZW5k aWYgLyogR0NDX1RSRUVfSU5UT19TU0FfSCAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3RyZWUtc3NhbmFtZXMuYyBiL2djYy90cmVlLXNzYW5hbWVzLmMKaW5kZXgg MTIyMzVmNi4uMDk2Yjc1YiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3NhbmFt ZXMuYworKysgYi9nY2MvdHJlZS1zc2FuYW1lcy5jCkBAIC0xMTQsNiArMTE0 LDEzMyBAQCBzc2FuYW1lc19wcmludF9zdGF0aXN0aWNzICh2b2lkKQogICBm cHJpbnRmIChzdGRlcnIsICJTU0FfTkFNRSBub2RlcyByZXVzZWQ6ICV1XG4i LCBzc2FfbmFtZV9ub2Rlc19yZXVzZWQpOwogfQogCisvKiBWZXJpZnkgdGhl IHN0YXRlIG9mIHRoZSBTU0FfTkFNRSBsaXN0cy4KKworICAgVGhlcmUgbXVz dCBiZSBubyBkdXBsaWNhdGVzIG9uIHRoZSBmcmVlIGxpc3QuCisgICBFdmVy eSBuYW1lIG9uIHRoZSBmcmVlIGxpc3QgbXVzdCBiZSBtYXJrZWQgYXMgb24g dGhlIGZyZWUgbGlzdC4KKyAgIEFueSBuYW1lIG9uIHRoZSBmcmVlIGxpc3Qg bXVzdCBub3QgYXBwZWFyIGluIHRoZSBJTC4KKyAgIE5vIG5hbWVzIGNhbiBi ZSBsZWFrZWQuICAqLworCitERUJVR19GVU5DVElPTiB2b2lkCit2ZXJpZnlf c3NhbmFtZV9mcmVlbGlzdHMgKHN0cnVjdCBmdW5jdGlvbiAqZnVuKQorewor ICAvKiBEbyBub3RoaW5nIGlmIHdlIGFyZSBpbiBSVEwgZm9ybWF0LiAgKi8K KyAgYmFzaWNfYmxvY2sgYmI7CisgIEZPUl9FQUNIX0JCX0ZOIChiYiwgZnVu KQorICAgIHsKKyAgICAgIGlmIChiYi0+ZmxhZ3MgJiBCQl9SVEwpCisJcmV0 dXJuOworICAgIH0KKworICBiaXRtYXAgbmFtZXNfaW5faWwgPSBCSVRNQVBf QUxMT0MgKE5VTEwpOworCisgIC8qIFdhbGsgdGhlIGVudGlyZSBJTCBub3Rp bmcgZXZlcnkgU1NBX05BTUUgd2Ugc2VlLiAgKi8KKyAgRk9SX0VBQ0hfQkJf Rk4gKGJiLCBmdW4pCisgICAgeworICAgICAgdHJlZSB0OworICAgICAgLyog Rmlyc3Qgbm90ZSB0aGUgcmVzdWx0IGFuZCBhcmd1bWVudHMgb2YgUEhJIG5v ZGVzLiAgKi8KKyAgICAgIGZvciAoZ3BoaV9pdGVyYXRvciBnc2kgPSBnc2lf c3RhcnRfcGhpcyAoYmIpOworCSAgICFnc2lfZW5kX3AgKGdzaSk7CisJICAg Z3NpX25leHQgKCZnc2kpKQorCXsKKwkgIGdwaGkgKnBoaSA9IGdzaS5waGkg KCk7CisJICB0ID0gZ2ltcGxlX3BoaV9yZXN1bHQgKHBoaSk7CisJICBiaXRt YXBfc2V0X2JpdCAobmFtZXNfaW5faWwsIFNTQV9OQU1FX1ZFUlNJT04gKHQp KTsKKworCSAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnaW1wbGVf cGhpX251bV9hcmdzIChwaGkpOyBpKyspCisJICAgIHsKKwkgICAgICB0ID0g Z2ltcGxlX3BoaV9hcmdfZGVmIChwaGksIGkpOworCSAgICAgIGlmIChUUkVF X0NPREUgKHQpID09IFNTQV9OQU1FKQorCQliaXRtYXBfc2V0X2JpdCAobmFt ZXNfaW5faWwsIFNTQV9OQU1FX1ZFUlNJT04gKHQpKTsKKwkgICAgfQorCX0K KworICAgICAgLyogVGhlbiBub3RlIHRoZSBvcGVyYW5kcyBvZiBlYWNoIHN0 YXRlbWVudC4gICovCisgICAgICBmb3IgKGdpbXBsZV9zdG10X2l0ZXJhdG9y IGdzaSA9IGdzaV9zdGFydF9iYiAoYmIpOworCSAgICFnc2lfZW5kX3AgKGdz aSk7CisJICAgZ3NpX25leHQgKCZnc2kpKQorCXsKKwkgIHNzYV9vcF9pdGVy IGl0ZXI7CisJICBnaW1wbGUgKnN0bXQgPSBnc2lfc3RtdCAoZ3NpKTsKKwkg IEZPUl9FQUNIX1NTQV9UUkVFX09QRVJBTkQgKHQsIHN0bXQsIGl0ZXIsIFNT QV9PUF9BTExfT1BFUkFORFMpCisJICAgIGlmIChUUkVFX0NPREUgKHQpID09 IFNTQV9OQU1FKQorCSAgICAgIGJpdG1hcF9zZXRfYml0IChuYW1lc19pbl9p bCwgU1NBX05BTUVfVkVSU0lPTiAodCkpOworCX0KKyAgICB9CisKKyAgLyog Tm93IHdhbGsgdGhlIGZyZWUgbGlzdCBub3Rpbmcgd2hhdCB3ZSBmaW5kIHRo ZXJlIGFuZCB2ZXJpZnlpbmcKKyAgICAgdGhlcmUgYXJlIG5vIGR1cGxpY2F0 ZXMuICAqLworICBiaXRtYXAgbmFtZXNfaW5fZnJlZWxpc3RzID0gQklUTUFQ X0FMTE9DIChOVUxMKTsKKyAgaWYgKEZSRUVfU1NBTkFNRVMgKGZ1bikpCisg ICAgeworICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBGUkVF X1NTQU5BTUVTIChmdW4pLT5sZW5ndGggKCk7IGkrKykKKwl7CisJICB0cmVl IHQgPSAoKkZSRUVfU1NBTkFNRVMgKGZ1bikpW2ldOworCisJICAvKiBWZXJp ZnkgdGhhdCB0aGUgbmFtZSBpcyBtYXJrZWQgYXMgYmVpbmcgaW4gdGhlIGZy ZWUgbGlzdC4gICovCisJICBnY2NfYXNzZXJ0IChTU0FfTkFNRV9JTl9GUkVF X0xJU1QgKHQpKTsKKworCSAgLyogVmVyaWZ5IHRoZSBuYW1lIGhhcyBub3Qg YWxyZWFkeSBhcHBlYXJlZCBpbiB0aGUgZnJlZSBsaXN0IGFuZAorCSAgICAg bm90ZSBpdCBpbiB0aGUgbGlzdCBvZiBuYW1lcyBmb3VuZCBpbiB0aGUgZnJl ZSBsaXN0LiAgKi8KKwkgIGdjY19hc3NlcnQgKCFiaXRtYXBfYml0X3AgKG5h bWVzX2luX2ZyZWVsaXN0cywgU1NBX05BTUVfVkVSU0lPTiAodCkpKTsKKwkg IGJpdG1hcF9zZXRfYml0IChuYW1lc19pbl9mcmVlbGlzdHMsIFNTQV9OQU1F X1ZFUlNJT04gKHQpKTsKKwl9CisgICAgfQorCisgIC8qIFNpbWlsYXJseSBm b3IgdGhlIG5hbWVzIGluIHRoZSBwZW5kaW5nIGZyZWUgbGlzdC4gICovCisg IGlmIChGUkVFX1NTQU5BTUVTX1FVRVVFIChmdW4pKQorICAgIHsKKyAgICAg IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgRlJFRV9TU0FOQU1FU19R VUVVRSAoZnVuKS0+bGVuZ3RoICgpOyBpKyspCisJeworCSAgdHJlZSB0ID0g KCpGUkVFX1NTQU5BTUVTX1FVRVVFIChmdW4pKVtpXTsKKworCSAgLyogVmVy aWZ5IHRoYXQgdGhlIG5hbWUgaXMgbWFya2VkIGFzIGJlaW5nIGluIHRoZSBm cmVlIGxpc3QuICAqLworCSAgZ2NjX2Fzc2VydCAoU1NBX05BTUVfSU5fRlJF RV9MSVNUICh0KSk7CisKKwkgIC8qIFZlcmlmeSB0aGUgbmFtZSBoYXMgbm90 IGFscmVhZHkgYXBwZWFyZWQgaW4gdGhlIGZyZWUgbGlzdCBhbmQKKwkgICAg IG5vdGUgaXQgaW4gdGhlIGxpc3Qgb2YgbmFtZXMgZm91bmQgaW4gdGhlIGZy ZWUgbGlzdC4gICovCisJICBnY2NfYXNzZXJ0ICghYml0bWFwX2JpdF9wIChu YW1lc19pbl9mcmVlbGlzdHMsIFNTQV9OQU1FX1ZFUlNJT04gKHQpKSk7CisJ ICBiaXRtYXBfc2V0X2JpdCAobmFtZXNfaW5fZnJlZWxpc3RzLCBTU0FfTkFN RV9WRVJTSU9OICh0KSk7CisJfQorICAgIH0KKworICAvKiBJZiBhbnkgbmFt ZSBhcHBlYXJzIGluIGJvdGggdGhlIElMIGFuZCB0aGUgZnJlZWxpc3RzLCB0 aGVuCisgICAgIHNvbWV0aGluZyBob3JyaWJsZSBoYXMgaGFwcGVuZWQuICAq LworICBib29sIGludGVyc2VjdF9wID0gYml0bWFwX2ludGVyc2VjdF9wIChu YW1lc19pbl9pbCwgbmFtZXNfaW5fZnJlZWxpc3RzKTsKKyAgZ2NjX2Fzc2Vy dCAoIWludGVyc2VjdF9wKTsKKworICAvKiBOYW1lcyBjYW4gYmUgcXVldWVk IHVwIGZvciByZWxlYXNlIGlmIHRoZXJlIGlzIGFuIHNzYSB1cGRhdGUKKyAg ICAgcGVuZGluZy4gIFByZXRlbmQgd2Ugc2F3IHRoZW0gaW4gdGhlIElMLiAg Ki8KKyAgaWYgKG5hbWVzX3RvX3JlbGVhc2UpCisgICAgYml0bWFwX2lvcl9p bnRvIChuYW1lc19pbl9pbCwgbmFtZXNfdG9fcmVsZWFzZSk7CisKKyAgLyog RnVuY3Rpb24gc3BsaXR0aW5nIGNhbiAibG9zZSIgU1NBX05BTUVzIGluIGFu IGVmZm9ydCB0byBlbnN1cmUgdGhhdAorICAgICBkZWJ1Zy9ub24tZGVidWcg Y29tcGlsYXRpb25zIGhhdmUgdGhlIHNhbWUgU1NBX05BTUVzLiAgU28gZm9y IGVhY2gKKyAgICAgbG9zdCBTU0FfTkFNRSwgc2VlIGlmIGl0J3MgbGlrZWx5 IG9uZSBmcm9tIHRoYXQgd2FydC4gIFRoZXNlIHdpbGwgYWx3YXlzCisgICAg IGJlIG1hcmtlZCBhcyBkZWZhdWx0IGRlZmluaXRpb25zLiAgU28gd2UgbG9v c2VseSBhc3N1bWUgdGhhdCBhbnl0aGluZworICAgICBtYXJrZWQgYXMgYSBk ZWZhdWx0IGRlZmluaXRpb24gaXNuJ3QgbGVha2VkIGJ5IHByZXRlbmluZyB0 aGV5IGFyZQorICAgICBpbiB0aGUgSUwuICAqLworICBmb3IgKHVuc2lnbmVk IGludCBpID0gVU5VU0VEX05BTUVfVkVSU0lPTiArIDE7IGkgPCBudW1fc3Nh X25hbWVzOyBpKyspCisgICAgaWYgKHNzYV9uYW1lIChpKSAmJiBTU0FfTkFN RV9JU19ERUZBVUxUX0RFRiAoc3NhX25hbWUgKGkpKSkKKyAgICAgIGJpdG1h cF9zZXRfYml0IChuYW1lc19pbl9pbCwgaSk7CisKKyAgdW5zaWduZWQgaW50 IGk7CisgIGJpdG1hcF9pdGVyYXRvciBiaTsKKyAgYml0bWFwIGFsbF9uYW1l cyA9IEJJVE1BUF9BTExPQyAoTlVMTCk7CisgIGJpdG1hcF9zZXRfcmFuZ2Ug KGFsbF9uYW1lcywgVU5VU0VEX05BTUVfVkVSU0lPTiArIDEsIG51bV9zc2Ff bmFtZXMgLSAxKTsKKyAgYml0bWFwX2lvcl9pbnRvIChuYW1lc19pbl9pbCwg bmFtZXNfaW5fZnJlZWxpc3RzKTsKKworICAvKiBBbnkgbmFtZSBub3QgbWVu dGlvbmVkIGluIHRoZSBJTCBhbmQgbm90IGluIHRoZSBmZWVsaXN0cworICAg ICBoYXMgYmVlbiBsZWFrZWQuICAqLworICBFWEVDVVRFX0lGX0FORF9DT01Q TF9JTl9CSVRNQVAoYWxsX25hbWVzLCBuYW1lc19pbl9pbCwKKwkJCQkgVU5V U0VEX05BTUVfVkVSU0lPTiArIDEsIGksIGJpKQorICAgIGdjY19hc3NlcnQg KCFzc2FfbmFtZSAoaSkpOworCisgIEJJVE1BUF9GUkVFIChhbGxfbmFtZXMp OworICBCSVRNQVBfRlJFRSAobmFtZXNfaW5fZnJlZWxpc3RzKTsKKyAgQklU TUFQX0ZSRUUgKG5hbWVzX2luX2lsKTsKK30KKwogLyogTW92ZSBhbGwgU1NB X05BTUVzIGZyb20gRlJFRV9TU0FfTkFNRVNfUVVFVUUgdG8gRlJFRV9TU0Ff TkFNRVMuCiAKICAgIFdlIGRvIG5vdCwgYnV0IHNob3VsZCBoYXZlIGEgbW9k ZSB0byB2ZXJpZnkgdGhlIHN0YXRlIG9mIHRoZSBTU0FfTkFNRXMKQEAgLTYw NCw2ICs3MzEsNDIgQEAgcmVwbGFjZV9zc2FfbmFtZV9zeW1ib2wgKHRyZWUg c3NhX25hbWUsIHRyZWUgc3ltKQogICBUUkVFX1RZUEUgKHNzYV9uYW1lKSA9 IFRSRUVfVFlQRSAoc3ltKTsKIH0KIAorLyogUmVsZWFzZSB0aGUgdmVjdG9y IG9mIGZyZWUgU1NBX05BTUVzIGFuZCBjb21wYWN0IHRoZSB0aGUKKyAgIHZl Y3RvciBvZiBTU0FfTkFNRXMgdGhhdCBhcmUgbGl2ZS4gICovCisKK3N0YXRp YyB2b2lkCityZWxlYXNlX2ZyZWVfbmFtZXNfYW5kX2NvbXBhY3RfbGl2ZV9u YW1lcyAoZnVuY3Rpb24gKmZ1bikKK3sKKyAgdW5zaWduZWQgaSwgajsKKyAg aW50IG4gPSB2ZWNfc2FmZV9sZW5ndGggKEZSRUVfU1NBTkFNRVMgKGZ1bikp OworCisgIC8qIE5vdyByZWxlYXNlIHRoZSBmcmVlbGlzdC4gICovCisgIHZl Y19mcmVlIChGUkVFX1NTQU5BTUVTIChmdW4pKTsKKworICAvKiBBbmQgY29t cGFjdCB0aGUgU1NBIG51bWJlciBzcGFjZS4gIFdlIG1ha2Ugc3VyZSB0byBu b3QgY2hhbmdlIHRoZQorICAgICByZWxhdGl2ZSBvcmRlciBvZiBTU0EgdmVy c2lvbnMuICAqLworICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGZ1bi0+Z2lt cGxlX2RmLT5zc2FfbmFtZXMtPmxlbmd0aCAoKTsgKytpKQorICAgIHsKKyAg ICAgIHRyZWUgbmFtZSA9IHNzYV9uYW1lIChpKTsKKyAgICAgIGlmIChuYW1l KQorCXsKKwkgIGlmIChpICE9IGopCisJICAgIHsKKwkgICAgICBTU0FfTkFN RV9WRVJTSU9OIChuYW1lKSA9IGo7CisJICAgICAgKCpmdW4tPmdpbXBsZV9k Zi0+c3NhX25hbWVzKVtqXSA9IG5hbWU7CisJICAgIH0KKwkgIGorKzsKKwl9 CisgICAgfQorICBmdW4tPmdpbXBsZV9kZi0+c3NhX25hbWVzLT50cnVuY2F0 ZSAoaik7CisKKyAgc3RhdGlzdGljc19jb3VudGVyX2V2ZW50IChmdW4sICJT U0EgbmFtZXMgcmVsZWFzZWQiLCBuKTsKKyAgc3RhdGlzdGljc19jb3VudGVy X2V2ZW50IChmdW4sICJTU0EgbmFtZSBob2xlcyByZW1vdmVkIiwgaSAtIGop OworICBpZiAoZHVtcF9maWxlKQorICAgIGZwcmludGYgKGR1bXBfZmlsZSwg IlJlbGVhc2VkICVpIG5hbWVzLCAlLjJmJSUsIHJlbW92ZWQgJWkgaG9sZXNc biIsCisJICAgICBuLCBuICogMTAwLjAgLyBudW1fc3NhX25hbWVzLCBpIC0g aik7Cit9CisKIC8qIFJldHVybiBTU0EgbmFtZXMgdGhhdCBhcmUgdW51c2Vk IHRvIEdHQyBtZW1vcnkgYW5kIGNvbXBhY3QgdGhlIFNTQQogICAgdmVyc2lv biBuYW1lc3BhY2UuICBUaGlzIGlzIHVzZWQgdG8ga2VlcCBmb290cHJpbnQg b2YgY29tcGlsZXIgZHVyaW5nCiAgICBpbnRlcnByb2NlZHVyYWwgb3B0aW1p emF0aW9uLiAgKi8KQEAgLTYzOCwzNCArODAxLDcgQEAgcHVibGljOgogdW5z aWduZWQgaW50CiBwYXNzX3JlbGVhc2Vfc3NhX25hbWVzOjpleGVjdXRlIChm dW5jdGlvbiAqZnVuKQogewotICB1bnNpZ25lZCBpLCBqOwotICBpbnQgbiA9 IHZlY19zYWZlX2xlbmd0aCAoRlJFRV9TU0FOQU1FUyAoZnVuKSk7Ci0KLSAg LyogTm93IHJlbGVhc2UgdGhlIGZyZWVsaXN0LiAgKi8KLSAgdmVjX2ZyZWUg KEZSRUVfU1NBTkFNRVMgKGZ1bikpOwotCi0gIC8qIEFuZCBjb21wYWN0IHRo ZSBTU0EgbnVtYmVyIHNwYWNlLiAgV2UgbWFrZSBzdXJlIHRvIG5vdCBjaGFu Z2UgdGhlCi0gICAgIHJlbGF0aXZlIG9yZGVyIG9mIFNTQSB2ZXJzaW9ucy4g ICovCi0gIGZvciAoaSA9IDEsIGogPSAxOyBpIDwgZnVuLT5naW1wbGVfZGYt PnNzYV9uYW1lcy0+bGVuZ3RoICgpOyArK2kpCi0gICAgewotICAgICAgdHJl ZSBuYW1lID0gc3NhX25hbWUgKGkpOwotICAgICAgaWYgKG5hbWUpCi0Jewot CSAgaWYgKGkgIT0gaikKLQkgICAgewotCSAgICAgIFNTQV9OQU1FX1ZFUlNJ T04gKG5hbWUpID0gajsKLQkgICAgICAoKmZ1bi0+Z2ltcGxlX2RmLT5zc2Ff bmFtZXMpW2pdID0gbmFtZTsKLQkgICAgfQotCSAgaisrOwotCX0KLSAgICB9 Ci0gIGZ1bi0+Z2ltcGxlX2RmLT5zc2FfbmFtZXMtPnRydW5jYXRlIChqKTsK LQotICBzdGF0aXN0aWNzX2NvdW50ZXJfZXZlbnQgKGZ1biwgIlNTQSBuYW1l cyByZWxlYXNlZCIsIG4pOwotICBzdGF0aXN0aWNzX2NvdW50ZXJfZXZlbnQg KGZ1biwgIlNTQSBuYW1lIGhvbGVzIHJlbW92ZWQiLCBpIC0gaik7Ci0gIGlm IChkdW1wX2ZpbGUpCi0gICAgZnByaW50ZiAoZHVtcF9maWxlLCAiUmVsZWFz ZWQgJWkgbmFtZXMsICUuMmYlJSwgcmVtb3ZlZCAlaSBob2xlc1xuIiwKLQkg ICAgIG4sIG4gKiAxMDAuMCAvIG51bV9zc2FfbmFtZXMsIGkgLSBqKTsKKyAg cmVsZWFzZV9mcmVlX25hbWVzX2FuZF9jb21wYWN0X2xpdmVfbmFtZXMgKGZ1 bik7CiAgIHJldHVybiAwOwogfQogCg== --------------040505010602080000090506--