From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19583 invoked by alias); 6 May 2011 16:16:41 -0000 Received: (qmail 19539 invoked by uid 22791); 6 May 2011 16:16:37 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_FX X-Spam-Check-By: sourceware.org Received: from mail-qy0-f169.google.com (HELO mail-qy0-f169.google.com) (209.85.216.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 06 May 2011 16:16:21 +0000 Received: by qyk2 with SMTP id 2so5425802qyk.0 for ; Fri, 06 May 2011 09:16:20 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.27.78 with SMTP id h14mr2481165qcc.253.1304698580227; Fri, 06 May 2011 09:16:20 -0700 (PDT) Received: by 10.229.229.196 with HTTP; Fri, 6 May 2011 09:16:20 -0700 (PDT) In-Reply-To: References: <20110505051832.GA28229@intel.com> <20110505082721.GG7018@bubble.grove.modra.org> <20110505141230.GJ7018@bubble.grove.modra.org> Date: Fri, 06 May 2011 16:16:00 -0000 Message-ID: Subject: Re: PATCH: PR ld/12730: regression] crash when allocating in a static constructor From: "H.J. Lu" To: Binutils Content-Type: multipart/mixed; boundary=001636426b6b69d88304a29dcf4b X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2011-05/txt/msg00086.txt.bz2 --001636426b6b69d88304a29dcf4b Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3252 On Fri, May 6, 2011 at 6:23 AM, H.J. Lu wrote: > On Thu, May 5, 2011 at 7:12 AM, Alan Modra wrote: >> On Thu, May 05, 2011 at 06:26:15AM -0700, H.J. Lu wrote: >>> On Thu, May 5, 2011 at 1:27 AM, Alan Modra wrote: >>> > On Wed, May 04, 2011 at 10:18:32PM -0700, H.J. Lu wrote: >>> >> When we put .ctors into .init_array, we have to reverse copy .ctors = secton. >>> >> Otherwise, constructor function may not work with C++ run-time libra= ry >>> >> correctly. =A0OK for trunk? >>> > >>> > What about .dtors? =A0You have the same problem there. =A0I suspect, = but >>> >>> You are right. =A0Here is the updated patch to handle .dtors sections >>> with the updated testcase. =A0OK for trunk? >> >> No. >> >>> > haven't verified, that .ctors.* and .dtors.* also need reversing. =A0= If >>> > that is true then it would be better to do your reversing trick for >>> > anything going to the .init_array output section that isn't named >>> > .init_array* and similarly for .fini_array. >> >> Are you sure there is no need to reverse .ctors.* and .dtors.*? >> >> The reason I recommended testing the output section is that limits >> section reversal to that particular output section. =A0I will not >> approve a patch that ignores this recommendation. =A0You also should >> remove reverse_copy_ctors. =A0That's plain wrong. =A0Consider people >> linking using a custom (old) script that does not put .ctors into >> .init_array. >> >>> > You also need to reverse any dynamic relocations applying to the >>> > sections you are reversing. >>> >>> It isn't a problem since we apply relocations on the input sections >>> first and copy relocated input sections to output where I reverse >>> copy .ctors/.dtors sections if needed. >> >> Try compiling your testcase as a PIE or shared lib on a target that >> uses RELA. =A0I haven't tried it, but I think the dynamic RELATIVE >> relocs you'll get in .ctors will undo your section reversing. >> > > I will fix it. > How about this patch? Thanks. --=20 H.J. --- bfd/ 2011-05-06 H.J. Lu PR ld/12730 * elf-bfd.h (_bfd_elf_section_reloc_offset): New. * elf.c (_bfd_elf_section_reloc_offset): New. * elf64-x86-64.c (elf_x86_64_relocate_section): Call _bfd_elf_section_reloc_offset instead of _bfd_elf_section_offset. * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise. * elflink.c (elf_link_input_bfd): Reverse copy .ctors/.dtors sections if needed. Call _bfd_elf_section_reloc_offset instead of _bfd_elf_section_offset. * section.c (SEC_ELF_REVERSE_COPY): New. * bfd-in2.h: Regenerated. ld/testsuite/ 2011-05-06 H.J. Lu PR ld/12730 * ld-elf/elf.exp (array_tests): Add pr12730". (array_tests_pie): New. (array_tests_static): Add -static for ""static init array mixed". Add "static pr12730". Run array_tests_pie for Linux. * ld-elf/init-mixed.c (ctor65535): Renamed to ... (ctor65535a): This. (ctor65535b): New. (ctors65535): Remove ctor65535. Add ctor65535b and ctor65535a. (dtor65535): Renamed to ... (dtor65535a): This. (dtor65535b): New. (dtors65535): Remove dtor65535. Add dtor65535b and dtor65535a. * ld-elf/pr12730.cc: New. * ld-elf/pr12730.out: Likewise. --001636426b6b69d88304a29dcf4b Content-Type: text/plain; charset=US-ASCII; name="binutils-pr12730-3.patch" Content-Disposition: attachment; filename="binutils-pr12730-3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gndbt9t50 Content-length: 18040 YmZkLwoKMjAxMS0wNS0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgoKCVBSIGxkLzEyNzMwCgkqIGVsZi1iZmQuaCAoX2JmZF9lbGZfc2Vj dGlvbl9yZWxvY19vZmZzZXQpOiBOZXcuCgoJKiBlbGYuYyAoX2JmZF9lbGZf c2VjdGlvbl9yZWxvY19vZmZzZXQpOiBOZXcuCgoJKiBlbGY2NC14ODYtNjQu YyAoZWxmX3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogQ2FsbAoJX2JmZF9l bGZfc2VjdGlvbl9yZWxvY19vZmZzZXQgaW5zdGVhZCBvZgoJX2JmZF9lbGZf c2VjdGlvbl9vZmZzZXQuCgkqIGVsZnh4LWlhNjQuYyAoZWxmTk5faWE2NF9p bnN0YWxsX2R5bl9yZWxvYyk6IExpa2V3aXNlLgoKCSogZWxmbGluay5jIChl bGZfbGlua19pbnB1dF9iZmQpOiBSZXZlcnNlIGNvcHkgLmN0b3JzLy5kdG9y cwoJc2VjdGlvbnMgaWYgbmVlZGVkLiAgQ2FsbCBfYmZkX2VsZl9zZWN0aW9u X3JlbG9jX29mZnNldCBpbnN0ZWFkCglvZiBfYmZkX2VsZl9zZWN0aW9uX29m ZnNldC4KCgkqIHNlY3Rpb24uYyAoU0VDX0VMRl9SRVZFUlNFX0NPUFkpOiBO ZXcuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCgpsZC90ZXN0c3VpdGUv CgoyMDExLTA1LTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+ CgoJUFIgbGQvMTI3MzAKCSogbGQtZWxmL2VsZi5leHAgKGFycmF5X3Rlc3Rz KTogQWRkIHByMTI3MzAiLgoJKGFycmF5X3Rlc3RzX3BpZSk6IE5ldy4KCShh cnJheV90ZXN0c19zdGF0aWMpOiBBZGQgLXN0YXRpYyBmb3IgIiJzdGF0aWMg aW5pdCBhcnJheSBtaXhlZCIuCglBZGQgInN0YXRpYyBwcjEyNzMwIi4gIFJ1 biBhcnJheV90ZXN0c19waWUgZm9yIExpbnV4LgoKCSogbGQtZWxmL2luaXQt bWl4ZWQuYyAoY3RvcjY1NTM1KTogUmVuYW1lZCB0byAuLi4KCShjdG9yNjU1 MzVhKTogVGhpcy4KCShjdG9yNjU1MzViKTogTmV3LgoJKGN0b3JzNjU1MzUp OiBSZW1vdmUgY3RvcjY1NTM1LiAgQWRkIGN0b3I2NTUzNWIgYW5kIGN0b3I2 NTUzNWEuCgkoZHRvcjY1NTM1KTogUmVuYW1lZCB0byAuLi4KCShkdG9yNjU1 MzVhKTogVGhpcy4KCShkdG9yNjU1MzViKTogTmV3LgoJKGR0b3JzNjU1MzUp OiBSZW1vdmUgZHRvcjY1NTM1LiAgQWRkIGR0b3I2NTUzNWIgYW5kIGR0b3I2 NTUzNWEuCgoJKiBsZC1lbGYvcHIxMjczMC5jYzogTmV3LgoJKiBsZC1lbGYv cHIxMjczMC5vdXQ6IExpa2V3aXNlLgoKZGlmZiAtLWdpdCBhL2JmZC9iZmQt aW4yLmggYi9iZmQvYmZkLWluMi5oCmluZGV4IDc2ODM2YjEuLjdlZjdmNDYg MTAwNjQ0Ci0tLSBhL2JmZC9iZmQtaW4yLmgKKysrIGIvYmZkL2JmZC1pbjIu aApAQCAtMTMyMCw2ICsxMzIwLDExIEBAIHR5cGVkZWYgc3RydWN0IGJmZF9z ZWN0aW9uCiAgICAgIHNlY3Rpb25zLiAgKi8KICNkZWZpbmUgU0VDX0NPRkZf U0hBUkVEX0xJQlJBUlkgMHg0MDAwMDAwCiAKKyAgLyogVGhpcyBpbnB1dCBz ZWN0aW9uIHNob3VsZCBiZSBjb3BpZWQgdG8gb3V0cHV0IGluIHJldmVyc2Ug b3JkZXIKKyAgICAgYXMgYW4gYXJyYXkgb2YgcG9pbnRlcnMuICBUaGlzIGlz IGZvciBFTEYgbGlua2VyIGludGVybmFsIHVzZQorICAgICBvbmx5LiAgKi8K KyNkZWZpbmUgU0VDX0VMRl9SRVZFUlNFX0NPUFkgMHg0MDAwMDAwCisKICAg LyogVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGRhdGEgd2hpY2ggbWF5IGJlIHNo YXJlZCB3aXRoIG90aGVyCiAgICAgIGV4ZWN1dGFibGVzIG9yIHNoYXJlZCBv YmplY3RzLiBUaGlzIGlzIGZvciBDT0ZGIG9ubHkuICAqLwogI2RlZmluZSBT RUNfQ09GRl9TSEFSRUQgMHg4MDAwMDAwCmRpZmYgLS1naXQgYS9iZmQvZWxm LWJmZC5oIGIvYmZkL2VsZi1iZmQuaAppbmRleCA3MzVkMmI1Li4zOWNjYjkw IDEwMDY0NAotLS0gYS9iZmQvZWxmLWJmZC5oCisrKyBiL2JmZC9lbGYtYmZk LmgKQEAgLTE3NTIsNiArMTc1Miw4IEBAIGV4dGVybiBiZmRfdm1hIF9iZmRf ZWxmX3JlbF9sb2NhbF9zeW0KICAgKGJmZCAqLCBFbGZfSW50ZXJuYWxfU3lt ICosIGFzZWN0aW9uICoqLCBiZmRfdm1hKTsKIGV4dGVybiBiZmRfdm1hIF9i ZmRfZWxmX3NlY3Rpb25fb2Zmc2V0CiAgIChiZmQgKiwgc3RydWN0IGJmZF9s aW5rX2luZm8gKiwgYXNlY3Rpb24gKiwgYmZkX3ZtYSk7CitleHRlcm4gYmZk X3ZtYSBfYmZkX2VsZl9zZWN0aW9uX3JlbG9jX29mZnNldAorICAoYmZkICos IHN0cnVjdCBiZmRfbGlua19pbmZvICosIGFzZWN0aW9uICosIGJmZF92bWEp OwogCiBleHRlcm4gdW5zaWduZWQgbG9uZyBiZmRfZWxmX2hhc2gKICAgKGNv bnN0IGNoYXIgKik7CmRpZmYgLS1naXQgYS9iZmQvZWxmLmMgYi9iZmQvZWxm LmMKaW5kZXggYjVhMTk1Mi4uZjRhZGRlYiAxMDA2NDQKLS0tIGEvYmZkL2Vs Zi5jCisrKyBiL2JmZC9lbGYuYwpAQCAtOTM4Miw2ICs5MzgyLDMzIEBAIF9i ZmRfZWxmX3NlY3Rpb25fb2Zmc2V0IChiZmQgKmFiZmQsCiAgICAgICByZXR1 cm4gb2Zmc2V0OwogICAgIH0KIH0KKworLyogU2ltaWxhciB0byBfYmZkX2Vs Zl9zZWN0aW9uX29mZnNldC4gQnV0IHJldHVybiB0aGUgcmVsb2NhdGlvbiBv ZmZzZXQKKyAgIGluIHJldmVyc2Ugb3JkZXIgaWYgdGhlIFNFQ19FTEZfUkVW RVJTRV9DT1BZIGJpdCBpdCBzZXQuICAqLworCitiZmRfdm1hCitfYmZkX2Vs Zl9zZWN0aW9uX3JlbG9jX29mZnNldCAoYmZkICphYmZkLAorCQkJICAgICAg IHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAorCQkJICAgICAgIGFzZWN0 aW9uICpzZWMsCisJCQkgICAgICAgYmZkX3ZtYSBvZmZzZXQpCit7CisgIHN3 aXRjaCAoc2VjLT5zZWNfaW5mb190eXBlKQorICAgIHsKKyAgICBjYXNlIEVM Rl9JTkZPX1RZUEVfU1RBQlM6CisgICAgICByZXR1cm4gX2JmZF9zdGFiX3Nl Y3Rpb25fb2Zmc2V0IChzZWMsIGVsZl9zZWN0aW9uX2RhdGEgKHNlYyktPnNl Y19pbmZvLAorCQkJCSAgICAgICBvZmZzZXQpOworICAgIGNhc2UgRUxGX0lO Rk9fVFlQRV9FSF9GUkFNRToKKyAgICAgIHJldHVybiBfYmZkX2VsZl9laF9m cmFtZV9zZWN0aW9uX29mZnNldCAoYWJmZCwgaW5mbywgc2VjLCBvZmZzZXQp OworICAgIGRlZmF1bHQ6CisgICAgICBpZiAoKHNlYy0+ZmxhZ3MgJiBTRUNf RUxGX1JFVkVSU0VfQ09QWSkgIT0gMCkKKwl7CisJICBjb25zdCBzdHJ1Y3Qg ZWxmX2JhY2tlbmRfZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEg KGFiZmQpOworCSAgYmZkX3NpemVfdHlwZSBhZGRyZXNzX3NpemUgPSBiZWQt PnMtPmFyY2hfc2l6ZSAvIDg7CisJICBvZmZzZXQgPSBzZWMtPnNpemUgLSBv ZmZzZXQgLSBhZGRyZXNzX3NpemU7CisJfQorICAgICAgcmV0dXJuIG9mZnNl dDsKKyAgICB9Cit9CiAMCiAvKiBDcmVhdGUgYSBuZXcgQkZEIGFzIGlmIGJ5 IGJmZF9vcGVuci4gIFJhdGhlciB0aGFuIG9wZW5pbmcgYSBmaWxlLAogICAg cmVjb25zdHJ1Y3QgYW4gRUxGIGZpbGUgYnkgcmVhZGluZyB0aGUgc2VnbWVu dHMgb3V0IG9mIHJlbW90ZSBtZW1vcnkKZGlmZiAtLWdpdCBhL2JmZC9lbGY2 NC14ODYtNjQuYyBiL2JmZC9lbGY2NC14ODYtNjQuYwppbmRleCBhZTE3NWUx Li5hNzE3M2Q1IDEwMDY0NAotLS0gYS9iZmQvZWxmNjQteDg2LTY0LmMKKysr IGIvYmZkL2VsZjY0LXg4Ni02NC5jCkBAIC0yOTQ4LDEwICsyOTQ4LDggQEAg ZWxmX3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQs CiAKIAkJICAvKiBOZWVkIGEgZHluYW1pYyByZWxvY2F0aW9uIHRvIGdldCB0 aGUgcmVhbCBmdW5jdGlvbgogCQkgICAgIGFkZHJlc3MuICAqLwotCQkgIG91 dHJlbC5yX29mZnNldCA9IF9iZmRfZWxmX3NlY3Rpb25fb2Zmc2V0IChvdXRw dXRfYmZkLAotCQkJCQkJCSAgICAgaW5mbywKLQkJCQkJCQkgICAgIGlucHV0 X3NlY3Rpb24sCi0JCQkJCQkJICAgICByZWwtPnJfb2Zmc2V0KTsKKwkJICBv dXRyZWwucl9vZmZzZXQgPSBfYmZkX2VsZl9zZWN0aW9uX3JlbG9jX29mZnNl dAorCQkgICAgKG91dHB1dF9iZmQsIGluZm8sIGlucHV0X3NlY3Rpb24sIHJl bC0+cl9vZmZzZXQpOwogCQkgIGlmIChvdXRyZWwucl9vZmZzZXQgPT0gKGJm ZF92bWEpIC0xCiAJCSAgICAgIHx8IG91dHJlbC5yX29mZnNldCA9PSAoYmZk X3ZtYSkgLTIpCiAJCSAgICBhYm9ydCAoKTsKQEAgLTMzNTcsOSArMzM1NSwx MCBAQCBlbGZfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0 X2JmZCwKIAkgICAgICBza2lwID0gRkFMU0U7CiAJICAgICAgcmVsb2NhdGUg PSBGQUxTRTsKIAotCSAgICAgIG91dHJlbC5yX29mZnNldCA9Ci0JCV9iZmRf ZWxmX3NlY3Rpb25fb2Zmc2V0IChvdXRwdXRfYmZkLCBpbmZvLCBpbnB1dF9z ZWN0aW9uLAotCQkJCQkgcmVsLT5yX29mZnNldCk7CisJICAgICAgb3V0cmVs LnJfb2Zmc2V0ID0gCisJCV9iZmRfZWxmX3NlY3Rpb25fcmVsb2Nfb2Zmc2V0 IChvdXRwdXRfYmZkLCBpbmZvLAorCQkJCQkgICAgICAgaW5wdXRfc2VjdGlv biwKKwkJCQkJICAgICAgIHJlbC0+cl9vZmZzZXQpOwogCSAgICAgIGlmIChv dXRyZWwucl9vZmZzZXQgPT0gKGJmZF92bWEpIC0xKQogCQlza2lwID0gVFJV RTsKIAkgICAgICBlbHNlIGlmIChvdXRyZWwucl9vZmZzZXQgPT0gKGJmZF92 bWEpIC0yKQpkaWZmIC0tZ2l0IGEvYmZkL2VsZmxpbmsuYyBiL2JmZC9lbGZs aW5rLmMKaW5kZXggMDgyMzU1ZC4uYjFjOWU1NyAxMDA2NDQKLS0tIGEvYmZk L2VsZmxpbmsuYworKysgYi9iZmQvZWxmbGluay5jCkBAIC05MTIwLDYgKzkx MjAsOSBAQCBlbGZfbGlua19pbnB1dF9iZmQgKHN0cnVjdCBlbGZfZmluYWxf bGlua19pbmZvICpmaW5mbywgYmZkICppbnB1dF9iZmQpCiAgIGFzZWN0aW9u ICpvOwogICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOwog ICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSAqKnN5bV9oYXNoZXM7Cisg IGJmZF9zaXplX3R5cGUgYWRkcmVzc19zaXplOworICBiZmRfdm1hIHJfdHlw ZV9tYXNrOworICBpbnQgcl9zeW1fc2hpZnQ7CiAKICAgb3V0cHV0X2JmZCA9 IGZpbmZvLT5vdXRwdXRfYmZkOwogICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRf ZGF0YSAob3V0cHV0X2JmZCk7CkBAIC05MjkwLDYgKzkyOTMsMTkgQEAgZWxm X2xpbmtfaW5wdXRfYmZkIChzdHJ1Y3QgZWxmX2ZpbmFsX2xpbmtfaW5mbyAq ZmluZm8sIGJmZCAqaW5wdXRfYmZkKQogCSpwaW5kZXggPSBpbmR4OwogICAg IH0KIAorICBpZiAoYmVkLT5zLT5hcmNoX3NpemUgPT0gMzIpCisgICAgewor ICAgICAgcl90eXBlX21hc2sgPSAweGZmOworICAgICAgcl9zeW1fc2hpZnQg PSA4OworICAgICAgYWRkcmVzc19zaXplID0gNDsKKyAgICB9CisgIGVsc2UK KyAgICB7CisgICAgICByX3R5cGVfbWFzayA9IDB4ZmZmZmZmZmY7CisgICAg ICByX3N5bV9zaGlmdCA9IDMyOworICAgICAgYWRkcmVzc19zaXplID0gODsK KyAgICB9CisKICAgLyogUmVsb2NhdGUgdGhlIGNvbnRlbnRzIG9mIGVhY2gg c2VjdGlvbi4gICovCiAgIHN5bV9oYXNoZXMgPSBlbGZfc3ltX2hhc2hlcyAo aW5wdXRfYmZkKTsKICAgZm9yIChvID0gaW5wdXRfYmZkLT5zZWN0aW9uczsg byAhPSBOVUxMOyBvID0gby0+bmV4dCkKQEAgLTkzOTQsOCArOTQxMCw2IEBA IGVsZl9saW5rX2lucHV0X2JmZCAoc3RydWN0IGVsZl9maW5hbF9saW5rX2lu Zm8gKmZpbmZvLCBiZmQgKmlucHV0X2JmZCkKIAl7CiAJICBFbGZfSW50ZXJu YWxfUmVsYSAqaW50ZXJuYWxfcmVsb2NzOwogCSAgRWxmX0ludGVybmFsX1Jl bGEgKnJlbCwgKnJlbGVuZDsKLQkgIGJmZF92bWEgcl90eXBlX21hc2s7Ci0J ICBpbnQgcl9zeW1fc2hpZnQ7CiAJICBpbnQgYWN0aW9uX2Rpc2NhcmRlZDsK IAkgIGludCByZXQ7CiAKQEAgLTk0MDcsMTUgKzk0MjEsMjYgQEAgZWxmX2xp bmtfaW5wdXRfYmZkIChzdHJ1Y3QgZWxmX2ZpbmFsX2xpbmtfaW5mbyAqZmlu Zm8sIGJmZCAqaW5wdXRfYmZkKQogCSAgICAgICYmIG8tPnJlbG9jX2NvdW50 ID4gMCkKIAkgICAgcmV0dXJuIEZBTFNFOwogCi0JICBpZiAoYmVkLT5zLT5h cmNoX3NpemUgPT0gMzIpCisJICAvKiBXZSBuZWVkIHRvIHJldmVyc2UtY29w eSBpbnB1dCAuY3RvcnMvLmR0b3JzIHNlY3Rpb25zIGlmCisJICAgICB0aGV5 IGFyZSBwbGFjZWQgaW4gLmluaXRfYXJyYXkvLmZpbml0X2FycmF5IGZvciBv dXRwdXQuICAqLworCSAgaWYgKG8tPnNpemUgPiBhZGRyZXNzX3NpemUKKwkg ICAgICAmJiAoKHN0cmNtcCAoby0+bmFtZSwgIi5jdG9ycyIpID09IDAKKwkJ ICAgJiYgc3RyY21wIChvLT5vdXRwdXRfc2VjdGlvbi0+bmFtZSwKKwkJCSAg ICAgICIuaW5pdF9hcnJheSIpID09IDApCisJCSAgfHwgKHN0cmNtcCAoby0+ bmFtZSwgIi5kdG9ycyIpID09IDAKKwkJICAgICAgJiYgc3RyY21wIChvLT5v dXRwdXRfc2VjdGlvbi0+bmFtZSwKKwkJCQkgIi5maW5pX2FycmF5IikgPT0g MCkpKQogCSAgICB7Ci0JICAgICAgcl90eXBlX21hc2sgPSAweGZmOwotCSAg ICAgIHJfc3ltX3NoaWZ0ID0gODsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7 Ci0JICAgICAgcl90eXBlX21hc2sgPSAweGZmZmZmZmZmOwotCSAgICAgIHJf c3ltX3NoaWZ0ID0gMzI7CisJICAgICAgaWYgKG8tPnNpemUgIT0gby0+cmVs b2NfY291bnQgKiBhZGRyZXNzX3NpemUpCisJCXsKKwkJICAoKl9iZmRfZXJy b3JfaGFuZGxlcikKKwkJICAgIChfKCJlcnJvcjogJUI6IHNpemUgb2Ygc2Vj dGlvbiAlQSBpcyBub3QgIgorCQkgICAgICAgIm11bHRpcGxlIG9mIGFkZHJl c3Mgc2l6ZSIpLAorCQkgICAgIGlucHV0X2JmZCwgbyk7CisJCSAgYmZkX3Nl dF9lcnJvciAoYmZkX2Vycm9yX29uX2lucHV0KTsKKwkJICByZXR1cm4gRkFM U0U7CisJCX0KKwkgICAgICBvLT5mbGFncyB8PSBTRUNfRUxGX1JFVkVSU0Vf Q09QWTsKIAkgICAgfQogCiAJICBhY3Rpb25fZGlzY2FyZGVkID0gLTE7CkBA IC05NjI5LDkgKzk2NTQsOCBAQCBlbGZfbGlua19pbnB1dF9iZmQgKHN0cnVj dCBlbGZfZmluYWxfbGlua19pbmZvICpmaW5mbywgYmZkICppbnB1dF9iZmQp CiAJCSAgICAgIHJlbGFfbm9ybWFsID0gYmVkLT5yZWxhX25vcm1hbDsKIAkJ ICAgIH0KIAotCQkgIGlyZWxhLT5yX29mZnNldCA9IF9iZmRfZWxmX3NlY3Rp b25fb2Zmc2V0IChvdXRwdXRfYmZkLAotCQkJCQkJCSAgICAgZmluZm8tPmlu Zm8sIG8sCi0JCQkJCQkJICAgICBpcmVsYS0+cl9vZmZzZXQpOworCQkgIGly ZWxhLT5yX29mZnNldCA9IF9iZmRfZWxmX3NlY3Rpb25fcmVsb2Nfb2Zmc2V0 CisJCSAgICAob3V0cHV0X2JmZCwgZmluZm8tPmluZm8sIG8sIGlyZWxhLT5y X29mZnNldCk7CiAJCSAgaWYgKGlyZWxhLT5yX29mZnNldCA+PSAoYmZkX3Zt YSkgLTIpCiAJCSAgICB7CiAJCSAgICAgIC8qIFRoaXMgaXMgYSByZWxvYyBm b3IgYSBkZWxldGVkIGVudHJ5IG9yIHNvbWVzdWNoLgpAQCAtOTg3NiwxMiAr OTkwMCwzNCBAQCBlbGZfbGlua19pbnB1dF9iZmQgKHN0cnVjdCBlbGZfZmlu YWxfbGlua19pbmZvICpmaW5mbywgYmZkICppbnB1dF9iZmQpCiAJZGVmYXVs dDoKIAkgIHsKIAkgICAgLyogRklYTUU6IG9jdGV0c19wZXJfYnl0ZS4gICov Ci0JICAgIGlmICghIChvLT5mbGFncyAmIFNFQ19FWENMVURFKQotCQkmJiAh IGJmZF9zZXRfc2VjdGlvbl9jb250ZW50cyAob3V0cHV0X2JmZCwgby0+b3V0 cHV0X3NlY3Rpb24sCi0JCQkJCSAgICAgICBjb250ZW50cywKLQkJCQkJICAg ICAgIChmaWxlX3B0cikgby0+b3V0cHV0X29mZnNldCwKLQkJCQkJICAgICAg IG8tPnNpemUpKQotCSAgICAgIHJldHVybiBGQUxTRTsKKwkgICAgaWYgKCEg KG8tPmZsYWdzICYgU0VDX0VYQ0xVREUpKQorCSAgICAgIHsKKwkJZmlsZV9w dHIgb2Zmc2V0ID0gKGZpbGVfcHRyKSBvLT5vdXRwdXRfb2Zmc2V0OworCQli ZmRfc2l6ZV90eXBlIHRvZG8gPSBvLT5zaXplOworCQlpZiAoKG8tPmZsYWdz ICYgU0VDX0VMRl9SRVZFUlNFX0NPUFkpKQorCQkgIHsKKwkJICAgIC8qIFJl dmVyc2UtY29weSBpbnB1dCBzZWN0aW9uIHRvIG91dHB1dC4gICovCisJCSAg ICBkbworCQkgICAgICB7CisJCQl0b2RvIC09IGFkZHJlc3Nfc2l6ZTsKKwkJ CWlmICghIGJmZF9zZXRfc2VjdGlvbl9jb250ZW50cyAob3V0cHV0X2JmZCwK KwkJCQkJCQlvLT5vdXRwdXRfc2VjdGlvbiwKKwkJCQkJCQljb250ZW50cyAr IHRvZG8sCisJCQkJCQkJb2Zmc2V0LAorCQkJCQkJCWFkZHJlc3Nfc2l6ZSkp CisJCQkgIHJldHVybiBGQUxTRTsKKwkJCWlmICh0b2RvID09IDApCisJCQkg IGJyZWFrOworCQkJb2Zmc2V0ICs9IGFkZHJlc3Nfc2l6ZTsKKwkJICAgICAg fQorCQkgICAgd2hpbGUgKDEpOworCQkgIH0KKwkJZWxzZSBpZiAoISBiZmRf c2V0X3NlY3Rpb25fY29udGVudHMgKG91dHB1dF9iZmQsCisJCQkJCQkgICAg IG8tPm91dHB1dF9zZWN0aW9uLAorCQkJCQkJICAgICBjb250ZW50cywKKwkJ CQkJCSAgICAgb2Zmc2V0LCB0b2RvKSkKKwkJICByZXR1cm4gRkFMU0U7CisJ ICAgICAgfQogCSAgfQogCSAgYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvYmZk L2VsZnh4LWlhNjQuYyBiL2JmZC9lbGZ4eC1pYTY0LmMKaW5kZXggY2EwYTNi Yy4uYTBiYjgzYyAxMDA2NDQKLS0tIGEvYmZkL2VsZnh4LWlhNjQuYworKysg Yi9iZmQvZWxmeHgtaWE2NC5jCkBAIC0zOTc5LDcgKzM5NzksOCBAQCBlbGZO Tl9pYTY0X2luc3RhbGxfZHluX3JlbG9jIChiZmQgKmFiZmQsIHN0cnVjdCBi ZmRfbGlua19pbmZvICppbmZvLAogICBCRkRfQVNTRVJUIChkeW5pbmR4ICE9 IC0xKTsKICAgb3V0cmVsLnJfaW5mbyA9IEVMRk5OX1JfSU5GTyAoZHluaW5k eCwgdHlwZSk7CiAgIG91dHJlbC5yX2FkZGVuZCA9IGFkZGVuZDsKLSAgb3V0 cmVsLnJfb2Zmc2V0ID0gX2JmZF9lbGZfc2VjdGlvbl9vZmZzZXQgKGFiZmQs IGluZm8sIHNlYywgb2Zmc2V0KTsKKyAgb3V0cmVsLnJfb2Zmc2V0ID0gX2Jm ZF9lbGZfc2VjdGlvbl9yZWxvY19vZmZzZXQgKGFiZmQsIGluZm8sIHNlYywK KwkJCQkJCSAgIG9mZnNldCk7CiAgIGlmIChvdXRyZWwucl9vZmZzZXQgPj0g KGJmZF92bWEpIC0yKQogICAgIHsKICAgICAgIC8qIFJ1biBmb3IgdGhlIGhp bGxzLiAgV2Ugc2hvdWxkbid0IGJlIG91dHB1dHRpbmcgYSByZWxvY2F0aW9u CmRpZmYgLS1naXQgYS9iZmQvc2VjdGlvbi5jIGIvYmZkL3NlY3Rpb24uYwpp bmRleCA2NWFjNWU2Li4zY2Q3ZTY1IDEwMDY0NAotLS0gYS9iZmQvc2VjdGlv bi5jCisrKyBiL2JmZC9zZWN0aW9uLmMKQEAgLTMyNyw2ICszMjcsMTEgQEAg Q09ERV9GUkFHTUVOVAogLiAgICAgc2VjdGlvbnMuICAqfQogLiNkZWZpbmUg U0VDX0NPRkZfU0hBUkVEX0xJQlJBUlkgMHg0MDAwMDAwCiAuCisuICB7KiBU aGlzIGlucHV0IHNlY3Rpb24gc2hvdWxkIGJlIGNvcGllZCB0byBvdXRwdXQg aW4gcmV2ZXJzZSBvcmRlcgorLiAgICAgYXMgYW4gYXJyYXkgb2YgcG9pbnRl cnMuICBUaGlzIGlzIGZvciBFTEYgbGlua2VyIGludGVybmFsIHVzZQorLiAg ICAgb25seS4gICp9CisuI2RlZmluZSBTRUNfRUxGX1JFVkVSU0VfQ09QWSAw eDQwMDAwMDAKKy4KIC4gIHsqIFRoaXMgc2VjdGlvbiBjb250YWlucyBkYXRh IHdoaWNoIG1heSBiZSBzaGFyZWQgd2l0aCBvdGhlcgogLiAgICAgZXhlY3V0 YWJsZXMgb3Igc2hhcmVkIG9iamVjdHMuIFRoaXMgaXMgZm9yIENPRkYgb25s eS4gICp9CiAuI2RlZmluZSBTRUNfQ09GRl9TSEFSRUQgMHg4MDAwMDAwCmRp ZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUvbGQtZWxmL2VsZi5leHAgYi9sZC90 ZXN0c3VpdGUvbGQtZWxmL2VsZi5leHAKaW5kZXggNzNhNDE3Yy4uNjgwOGQ4 YSAxMDA2NDQKLS0tIGEvbGQvdGVzdHN1aXRlL2xkLWVsZi9lbGYuZXhwCisr KyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvZWxmLmV4cApAQCAtODEsMTcgKzgx LDMyIEBAIHNldCBhcnJheV90ZXN0cyB7CiAgICAgeyJpbml0IGFycmF5IiAi IiAiIiB7aW5pdC5jfSAiaW5pdCIgImluaXQub3V0In0KICAgICB7ImZpbmkg YXJyYXkiICIiICIiIHtmaW5pLmN9ICJmaW5pIiAiZmluaS5vdXQifQogICAg IHsiaW5pdCBhcnJheSBtaXhlZCIgIiIgIiIge2luaXQtbWl4ZWQuY30gImlu aXQtbWl4ZWQiICJpbml0LW1peGVkLm91dCIgIi1JLiJ9CisgICAgeyJwcjEy NzMwIiAiIiAiIiB7cHIxMjczMC5jY30gInByMTI3MzAiICJwcjEyNzMwLm91 dCIgIiIgImMrKyJ9Cit9CitzZXQgYXJyYXlfdGVzdHNfcGllIHsKKyAgICB7 IlBJRSBwcmVpbml0IGFycmF5IiAiLXBpZSIgIiIge3ByZWluaXQuY30gInBy ZWluaXQiICJwcmVpbml0Lm91dCIgIi1mUElFIiB9CisgICAgeyJQSUUgaW5p dCBhcnJheSIgIi1waWUiICIiIHtpbml0LmN9ICJpbml0IiAiaW5pdC5vdXQi ICItZlBJRSJ9CisgICAgeyJQSUUgZmluaSBhcnJheSIgIi1waWUiICIiIHtm aW5pLmN9ICJmaW5pIiAiZmluaS5vdXQiICItZlBJRSJ9CisgICAgeyJQSUUg aW5pdCBhcnJheSBtaXhlZCIgIi1waWUiICIiIHtpbml0LW1peGVkLmN9ICJp bml0LW1peGVkIiAiaW5pdC1taXhlZC5vdXQiICItSS4gLWZQSUUifQorICAg IHsiUElFIHByMTI3MzAiICItcGllIiAiIiB7cHIxMjczMC5jY30gInByMTI3 MzAiICJwcjEyNzMwLm91dCIgIi1mUElFIiAiYysrIn0KIH0KIHNldCBhcnJh eV90ZXN0c19zdGF0aWMgewogICAgIHsic3RhdGljIHByZWluaXQgYXJyYXki ICItc3RhdGljIiAiIiB7cHJlaW5pdC5jfSAicHJlaW5pdCIgInByZWluaXQu b3V0In0KICAgICB7InN0YXRpYyBpbml0IGFycmF5IiAiLXN0YXRpYyIgIiIg e2luaXQuY30gImluaXQiICJpbml0Lm91dCJ9CiAgICAgeyJzdGF0aWMgZmlu aSBhcnJheSIgIi1zdGF0aWMiICIiIHtmaW5pLmN9ICJmaW5pIiAiZmluaS5v dXQifQotICAgIHsic3RhdGljIGluaXQgYXJyYXkgbWl4ZWQiICIiICIiIHtp bml0LW1peGVkLmN9ICJpbml0LW1peGVkIiAiaW5pdC1taXhlZC5vdXQiICIt SS4ifQorICAgIHsic3RhdGljIGluaXQgYXJyYXkgbWl4ZWQiICItc3RhdGlj IiAiIiB7aW5pdC1taXhlZC5jfSAiaW5pdC1taXhlZCIgImluaXQtbWl4ZWQu b3V0IiAiLUkuIn0KKyAgICB7InN0YXRpYyBwcjEyNzMwIiAiLXN0YXRpYyIg IiIge3ByMTI3MzAuY2N9ICJwcjEyNzMwIiAicHIxMjczMC5vdXQiICIiICJj KysifQogfQogCiAjIE5ldEJTRCBFTEYgc3lzdGVtcyBkbyBub3QgY3VycmVu dGx5IHN1cHBvcnQgdGhlIC4qX2FycmF5IHNlY3Rpb25zLgogc2V0IHhmYWls cyBbbGlzdCAiKi0qLW5ldGJzZGVsZioiXQogcnVuX2xkX2xpbmtfZXhlY190 ZXN0cyAkeGZhaWxzICRhcnJheV90ZXN0cworCisjIFJ1biBQSUUgdGVzdHMg b25seSBvbiBMaW51eC4KK2lmIHsgW2lzdGFyZ2V0ICIqLSotbGludXgqIl0g fSB7CisgICAgcnVuX2xkX2xpbmtfZXhlY190ZXN0cyAkeGZhaWxzICRhcnJh eV90ZXN0c19waWUKK30KKwogIyBCZSBjYXV0aW91cyB0byBub3QgWEZBSUwg Zm9yICotKi1saW51eC1nbnUqLCAqLSota2ZyZWVic2QtZ251KiwgZXRjLgog c3dpdGNoIC1yZWdleHAgJHRhcmdldF90cmlwbGV0IHsKICAgICBeXFteLVxd Ki1cW14tXF0qLWdudS4qJCB7CmRpZmYgLS1naXQgYS9sZC90ZXN0c3VpdGUv bGQtZWxmL2luaXQtbWl4ZWQuYyBiL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvaW5p dC1taXhlZC5jCmluZGV4IDFkMGM3MjcuLjJjOWQ0MzQgMTAwNjQ0Ci0tLSBh L2xkL3Rlc3RzdWl0ZS9sZC1lbGYvaW5pdC1taXhlZC5jCisrKyBiL2xkL3Rl c3RzdWl0ZS9sZC1lbGYvaW5pdC1taXhlZC5jCkBAIC02OSwxNyArNjksMzEg QEAgdm9pZCAoKmNvbnN0IGZpbmlfYXJyYXk2NTUzMFtdKSAoKQogICA9IHsg ZmluaTY1NTMwIH07CiAKIHN0YXRpYyB2b2lkCi1jdG9yNjU1MzUgKCkKK2N0 b3I2NTUzNWEgKCkKIHsKICAgaWYgKGNvdW50ICE9IDY1NTMwKQogICAgIGFi b3J0ICgpOwogICBjb3VudCA9IDY1NTM1OwogfQorc3RhdGljIHZvaWQKK2N0 b3I2NTUzNWIgKCkKK3sKKyAgaWYgKGNvdW50ICE9IDY1NTM1KQorICAgIGFi b3J0ICgpOworICBjb3VudCA9IDY1NTM2OworfQogdm9pZCAoKmNvbnN0IGN0 b3JzNjU1MzVbXSkgKCkKICAgX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIu Y3RvcnMiKSwgYWxpZ25lZCAoc2l6ZW9mICh2b2lkICopKSkpCi0gID0geyBj dG9yNjU1MzUgfTsKKyAgPSB7IGN0b3I2NTUzNWIsIGN0b3I2NTUzNWEgfTsK K3N0YXRpYyB2b2lkCitkdG9yNjU1MzViICgpCit7CisgIGlmIChjb3VudCAh PSA2NTUzNikKKyAgICBhYm9ydCAoKTsKKyAgY291bnQgPSA2NTUzNTsKK30K IHN0YXRpYyB2b2lkCi1kdG9yNjU1MzUgKCkKK2R0b3I2NTUzNWEgKCkKIHsK ICAgaWYgKGNvdW50ICE9IDY1NTM1KQogICAgIGFib3J0ICgpOwpAQCAtODcs NyArMTAxLDcgQEAgZHRvcjY1NTM1ICgpCiB9CiB2b2lkICgqY29uc3QgZHRv cnM2NTUzNVtdKSAoKQogICBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5k dG9ycyIpLCBhbGlnbmVkIChzaXplb2YgKHZvaWQgKikpKSkKLSAgPSB7IGR0 b3I2NTUzNSB9OworICA9IHsgZHRvcjY1NTM1YiwgZHRvcjY1NTM1YSB9Owog I2VuZGlmCiAKIGludApkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLWVs Zi9wcjEyNzMwLmNjIGIvbGQvdGVzdHN1aXRlL2xkLWVsZi9wcjEyNzMwLmNj Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZjU3ZjkK LS0tIC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMTI3 MzAuY2MKQEAgLTAsMCArMSwzOCBAQAorI2luY2x1ZGUgPGlvc3RyZWFtPgor CitjbGFzcyBIZWxsbworeworcHVibGljOgorICAgSGVsbG8gKCkKKyAgICB7 fQorCisgIH5IZWxsbyAoKQorICAgIHt9CisKKyAgdm9pZCBhY3QgKCkKKyAg ICB7IHN0ZDo6Y291dCA8PCAiSGVsbG8sIHdvcmxkISIgPDwgc3RkOjplbmRs OyB9Cit9OworCisKK3RlbXBsYXRlIDxjbGFzcyBUPgorc3RydWN0IEZvbwor eworICBUKiBfTV9hbGxvY2F0ZV9zaW5nbGVfb2JqZWN0ICgpCisgICAgewor ICAgICAgcmV0dXJuIG5ldyBUOworICAgIH0KK307CisKK3N0YXRpYyB2b2lk IF9fYXR0cmlidXRlX18gKCggY29uc3RydWN0b3IgKSkgUFdMSUJfU3RhdGlj TG9hZGVyKCkgeworICBGb288SGVsbG8+IGFsbG9jYXRvcjsKKyAgSGVsbG8q IHNhbHV0ID0gYWxsb2NhdG9yLl9NX2FsbG9jYXRlX3NpbmdsZV9vYmplY3Qg KCk7CisgIHNhbHV0LT5hY3QgKCk7Cit9CisKKworaW50CittYWluIChpbnQg LyphcmdjKi8sCisgICAgICBjaGFyKiAvKmFyZ3YqL1tdKQoreworICByZXR1 cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC1lbGYvcHIx MjczMC5vdXQgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMTI3MzAub3V0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNTYyNmIKLS0t IC9kZXYvbnVsbAorKysgYi9sZC90ZXN0c3VpdGUvbGQtZWxmL3ByMTI3MzAu b3V0CkBAIC0wLDAgKzEgQEAKK0hlbGxvLCB3b3JsZCEK --001636426b6b69d88304a29dcf4b--