From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by sourceware.org (Postfix) with ESMTPS id 2C4273858D3C for ; Tue, 18 Jan 2022 04:17:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2C4273858D3C Received: by mail-pl1-x62b.google.com with SMTP id t18so23213648plg.9 for ; Mon, 17 Jan 2022 20:17:03 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=J0HdQ6Cp1/B5VJ55PWmhyQvi43x0xtUvx26mEAtVkxc=; b=QfuDEZAIWnIwyWhG8WVU9TNVPyrU/ngDP2G+jNO7p4QTZQxhC0t1DcLuigFJRMDKGs KnJsSD784Er/x/Yar9dEJcVvdnM5LywFkDujYJR+Z6ol4XFhEh8WGe2JacHBG8K0+eu+ ZX5eNrHHyDjQCKZXOU+LhQ40FcnoyGobnerDIXAh2eGZuGn35VSUElNirHKZ8XkvOqfA KWwIo2c1hvOBRGE4j+UZPZZ+YfbY/ztrPHGb/hCdufQyYDh5WD4JDK9QVYtiq77smWVD PBBR0O0DimLdkyXTUN+cPv9/hznTM7iyQk7BfsfbEhOeMvub6kuQK6EhhIBjI2jcJ6bN CaxA== X-Gm-Message-State: AOAM533KcCK5F5hWT+Cam4fYN2lb6nmPu+tTwtQG6Aufr1yP87V4BEVI GjZ90kj2s3IXsFIrct2bpHeBhLHDQzpVt7DZ4S/YHp56Ifc= X-Google-Smtp-Source: ABdhPJz3Rh5DCNnE/OE8tkNIf38olcbNj86P+mCziZD9d0+5b2tUaKIPnTbuijHHr4zq3IWfxF9CA6n7o9FCU90f7Og= X-Received: by 2002:a17:90a:f3c6:: with SMTP id ha6mr1356826pjb.28.1642479422227; Mon, 17 Jan 2022 20:17:02 -0800 (PST) MIME-Version: 1.0 References: <20220111021241.1937265-1-hjl.tools@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Mon, 17 Jan 2022 20:16:26 -0800 Message-ID: Subject: [PATCH v2] ld: Rewrite lang_size_relro_segment_1 To: Alan Modra Cc: Binutils Content-Type: multipart/mixed; boundary="00000000000083687805d5d38a23" X-Spam-Status: No, score=-3027.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Jan 2022 04:17:05 -0000 --00000000000083687805d5d38a23 Content-Type: text/plain; charset="UTF-8" On Sun, Jan 16, 2022 at 8:08 PM Alan Modra wrote: > > On Fri, Jan 14, 2022 at 01:55:27PM -0800, H.J. Lu wrote: > > Now I have time to rewrite lang_size_relro_segment_1. Is it OK for > > master? > > No, I don't believe you can calculate the adjustment for the first > relro section without paintakingly working backwards from the last > section taking into account each section's alignment. See commit > 0e5fabeb2c4b and b39910205f54. > Here is the v2 patch to track the maximum section alignment from the RELRO segment. If the maximum page size >= the maximum section alignment, we can align the RELRO segment to the maximum page size. -- H.J. --00000000000083687805d5d38a23 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-ld-Rewrite-lang_size_relro_segment_1.patch" Content-Disposition: attachment; filename="v2-0001-ld-Rewrite-lang_size_relro_segment_1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kyjlquim0 RnJvbSA2Y2VmNWJhYzE2NjlkZWZjNzcyOTI3ZDBkZDkzYTY2YjBhMzJkMDI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMTQgSmFuIDIwMjIgMTM6NDg6MzYgLTA4MDAKU3ViamVjdDogW1BBVENIIHYyXSBsZDog UmV3cml0ZSBsYW5nX3NpemVfcmVscm9fc2VnbWVudF8xCgpSZXdyaXRlIGxhbmdfc2l6ZV9yZWxy b19zZWdtZW50XzE6CgoxLiBGaW5kIHRoZSBmaXJzdCBzZWN0aW9uIGluIHRoZSByZWxybyBzZWdt ZW50LgoyLiBGaW5kIHRoZSBmaXJzdCBub24tZW1wdHkgcHJlY2VkaW5nIHNlY3Rpb24uCjMuIEZp bmQgdGhlIG1heGltdW0gc2VjdGlvbiBhbGlnbm1lbnQgaW4gc2VjdGlvbnMgc3RhcnRpbmcgZnJv bSB0aGUKUFRfR05VX1JFTFJPIHNlZ21lbnQuCjQuIERvbid0IGFkZCB0aGUgMS1wYWdlIGdhcCBi ZWZvcmUgdGhlIHJlbHJvIHNlZ21lbnQgaWYgdGhlIG1heGltdW0gcGFnZQpzaXplID49IHRoZSBt YXhpbXVtIHNlY3Rpb24gYWxpZ25tZW50LiAgV2hlbiB0aGUgbWF4aW11bSBwYWdlIHNpemUgPj0g dGhlCm1heGltdW0gc2VjdGlvbiBhbGlnbm1lbnQsIGFsaWduIHRoZSBQVF9HTlVfUkVMUk8gc2Vn bWVudCB0byB0aGUgbWF4aW11bQpwYWdlIHNpemUgd29uJ3QgaW1wYWN0IHRoZSBtYXhpbXVtIHNl Y3Rpb24gYWxpZ25tZW50IGluIHNlY3Rpb25zIHN0YXJ0aW5nCmZyb20gdGhlIFBUX0dOVV9SRUxS TyBzZWdtZW50Lgo1LiBBbGlnbiB0aGUgcmVscm8gc2VnbWVudCBpZiB0aGVyZSBpcyBhIDEtcGFn ZSBnYXAgYmVmb3JlIHRoZSByZWxybwpzZWdtZW50LgoKCVBSIGxkLzI4NzQzCgkqIGxkbGFuZy5j IChsYW5nX3NpemVfcmVscm9fc2VnbWVudF8xKTogUmV3cml0ZS4KCSogdGVzdHN1aXRlL2xkLXg4 Ni02NC9wcjI4NzQzLTEuZDogTmV3IGZpbGUuCgkqIHRlc3RzdWl0ZS9sZC14ODYtNjQvcHIyODc0 My0xLnM6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvbGQteDg2LTY0L3g4Ni02NC5leHA6IFJ1biBw cjI4NzQzLTEuCi0tLQogbGQvbGRsYW5nLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDExNSAr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogbGQvdGVzdHN1aXRlL2xkLXg4Ni02NC9wcjI4 NzQzLTEuZCB8ICA1MiArKysrKysrKysrKysrCiBsZC90ZXN0c3VpdGUvbGQteDg2LTY0L3ByMjg3 NDMtMS5zIHwgIDE2ICsrKysKIGxkL3Rlc3RzdWl0ZS9sZC14ODYtNjQveDg2LTY0LmV4cCAgfCAg IDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGQvdGVzdHN1aXRlL2xkLXg4Ni02NC9wcjI4NzQzLTEuZAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxkL3Rlc3RzdWl0ZS9sZC14ODYtNjQvcHIyODc0My0xLnMKCmRp ZmYgLS1naXQgYS9sZC9sZGxhbmcuYyBiL2xkL2xkbGFuZy5jCmluZGV4IDkzZmNmYzRjYmM3Li41 NDAzYmZlMjM3ZiAxMDA2NDQKLS0tIGEvbGQvbGRsYW5nLmMKKysrIGIvbGQvbGRsYW5nLmMKQEAg LTYzNzAsMTAgKzYzNzAsMTUgQEAgbGFuZ19zaXplX3NlZ21lbnQgKHNlZ19hbGlnbl90eXBlICpz ZWcpCiBzdGF0aWMgYmZkX3ZtYQogbGFuZ19zaXplX3JlbHJvX3NlZ21lbnRfMSAoc2VnX2FsaWdu X3R5cGUgKnNlZykKIHsKLSAgYmZkX3ZtYSByZWxyb19lbmQsIGRlc2lyZWRfZW5kOwotICBhc2Vj dGlvbiAqc2VjLCAqcHJldl9zZWMgPSBOVUxMOwotICBib29sIHJlbW92ZV9wYWdlX2dhcCA9IGZh bHNlOworICBiZmRfdm1hIHJlbHJvX2VuZCwgZGVzaXJlZF9lbmQsIGFsaWduZWRfc3RhcnQgPSAw OworICBhc2VjdGlvbiAqc2VjLCAqcHJldl9zZWMgPSBOVUxMLCAqcmVscm9fc2VjID0gTlVMTDsK ICAgdW5zaWduZWQgaW50IG1heF9hbGlnbm1lbnRfcG93ZXIgPSAwOworICBlbnVtCisgICAgewor ICAgICAgcmVscm9fc2VjX2FmdGVyLAkJLyogQWZ0ZXIgdGhlIHJlbHJvIHNlZ21lbnQuICAqLwor ICAgICAgcmVscm9fc2VjX2luLAkJLyogSW4gdGhlIHJlbHJvIHNlZ21lbnQuICAqLworICAgICAg cmVscm9fc2VjX2JlZm9yZQkJLyogQmVmb3JlIHRoZSByZWxybyBzZWdtZW50LiAgKi8KKyAgICB9 IGxhc3Rfc2VjX3N0YXR1cyA9IHJlbHJvX3NlY19hZnRlcjsKIAogICAvKiBDb21wdXRlIHRoZSBl eHBlY3RlZCBQVF9HTlVfUkVMUk8vUFRfTE9BRCBzZWdtZW50IGVuZC4gICovCiAgIHJlbHJvX2Vu ZCA9ICgoc2VnLT5yZWxyb19lbmQgKyBzZWctPnBhZ2VzaXplIC0gMSkKQEAgLTYzODIsODEgKzYz ODcsNzkgQEAgbGFuZ19zaXplX3JlbHJvX3NlZ21lbnRfMSAoc2VnX2FsaWduX3R5cGUgKnNlZykK ICAgLyogQWRqdXN0IGJ5IHRoZSBvZmZzZXQgYXJnIG9mIFhYWF9TRUdNRU5UX1JFTFJPX0VORC4g ICovCiAgIGRlc2lyZWRfZW5kID0gcmVscm9fZW5kIC0gc2VnLT5yZWxyb19vZmZzZXQ7CiAKLSAg LyogRm9yIHNlY3Rpb25zIGluIHRoZSByZWxybyBzZWdtZW50Li4gICovCisgIC8qIEZpbmQgdGhl IGZpcnN0IHNlY3Rpb24gaW4gdGhlIHJlbHJvIHNlZ21lbnQuICovCiAgIGZvciAoc2VjID0gbGlu a19pbmZvLm91dHB1dF9iZmQtPnNlY3Rpb25fbGFzdDsgc2VjOyBzZWMgPSBzZWMtPnByZXYpCiAg ICAgaWYgKChzZWMtPmZsYWdzICYgU0VDX0FMTE9DKSAhPSAwKQogICAgICAgewotCWlmIChzZWMt PmFsaWdubWVudF9wb3dlciA+IG1heF9hbGlnbm1lbnRfcG93ZXIpCisJaWYgKGxhc3Rfc2VjX3N0 YXR1cyAhPSByZWxyb19zZWNfYmVmb3JlCisJICAgICYmIHNlYy0+YWxpZ25tZW50X3Bvd2VyID4g bWF4X2FsaWdubWVudF9wb3dlcikKIAkgIG1heF9hbGlnbm1lbnRfcG93ZXIgPSBzZWMtPmFsaWdu bWVudF9wb3dlcjsKIAogCWlmIChzZWMtPnZtYSA+PSBzZWctPmJhc2UKIAkgICAgJiYgc2VjLT52 bWEgPCBzZWctPnJlbHJvX2VuZCAtIHNlZy0+cmVscm9fb2Zmc2V0KQogCSAgewotCSAgICAvKiBX aGVyZSBkbyB3ZSB3YW50IHRvIHB1dCB0aGlzIHNlY3Rpb24gc28gdGhhdCBpdCBlbmRzIGFzCi0J ICAgICAgIGRlc2lyZWQ/ICAqLwotCSAgICBiZmRfdm1hIHN0YXJ0LCBlbmQsIGJ1bXA7Ci0KLQkg ICAgZW5kID0gc3RhcnQgPSBzZWMtPnZtYTsKLQkgICAgaWYgKCFJU19UQlNTIChzZWMpKQotCSAg ICAgIGVuZCArPSBUT19BRERSIChzZWMtPnNpemUpOwotCSAgICBidW1wID0gZGVzaXJlZF9lbmQg LSBlbmQ7Ci0JICAgIC8qIFdlJ2QgbGlrZSB0byBpbmNyZWFzZSBTVEFSVCBieSBCVU1QLCBidXQg d2UgbXVzdCBoZWVkCi0JICAgICAgIGFsaWdubWVudCBzbyB0aGUgaW5jcmVhc2UgbWlnaHQgYmUg bGVzcyB0aGFuIG9wdGltdW0uICAqLwotCSAgICBzdGFydCArPSBidW1wOwotCSAgICBzdGFydCAm PSB+KCgoYmZkX3ZtYSkgMSA8PCBzZWMtPmFsaWdubWVudF9wb3dlcikgLSAxKTsKLQkgICAgLyog VGhpcyBpcyBub3cgdGhlIGRlc2lyZWQgZW5kIGZvciB0aGUgcHJldmlvdXMgc2VjdGlvbi4gICov Ci0JICAgIGRlc2lyZWRfZW5kID0gc3RhcnQ7CisJICAgIHJlbHJvX3NlYyA9IHNlYzsKIAkgICAg cHJldl9zZWMgPSBzZWMtPnByZXY7CisJICAgIGxhc3Rfc2VjX3N0YXR1cyA9IHJlbHJvX3NlY19p bjsKIAkgIH0KKwllbHNlCisJICBsYXN0X3NlY19zdGF0dXMgPSByZWxyb19zZWNfYmVmb3JlOwog ICAgICAgfQogCi0gIHNlZy0+cGhhc2UgPSBleHBfc2VnX3JlbHJvX2FkanVzdDsKLSAgQVNTRVJU IChkZXNpcmVkX2VuZCA+PSBzZWctPmJhc2UpOwotCi0gIGZvciAoOyBwcmV2X3NlYzsgcHJldl9z ZWMgPSBwcmV2X3NlYy0+cHJldikKLSAgICBpZiAoKHByZXZfc2VjLT5mbGFncyAmIFNFQ19BTExP QykgIT0gMCkKLSAgICAgIHsKLQlpZiAocHJldl9zZWMtPmFsaWdubWVudF9wb3dlciA+IG1heF9h bGlnbm1lbnRfcG93ZXIpCi0JICBtYXhfYWxpZ25tZW50X3Bvd2VyID0gcHJldl9zZWMtPmFsaWdu bWVudF9wb3dlcjsKLQotCWlmIChwcmV2X3NlYy0+c2l6ZSAhPSAwKQotCSAgewotCSAgICAvKiBU aGUgMS1wYWdlIGdhcCBiZWZvcmUgdGhlIFJFTFJPIHNlZ21lbnQgbWF5IGJlIHJlbW92ZWQuICAq LwotCSAgICByZW1vdmVfcGFnZV9nYXAgPSAoKHByZXZfc2VjLT52bWEgKyBwcmV2X3NlYy0+c2l6 ZQotCQkJCSsgc2VnLT5tYXhwYWdlc2l6ZSkgPCBkZXNpcmVkX2VuZCk7Ci0KLQkgICAgYnJlYWs7 Ci0JICB9Ci0gICAgICB9Ci0KLSAgaWYgKHJlbW92ZV9wYWdlX2dhcCkKKyAgaWYgKHJlbHJvX3Nl YykKICAgICB7Ci0gICAgICAvKiBGaW5kIHRoZSBtYXhpbXVtIHNlY3Rpb24gYWxpZ25tZW50LiAg Ki8KLSAgICAgIGZvciAoc2VjID0gcHJldl9zZWM7IHNlYzsgc2VjID0gc2VjLT5wcmV2KQotCWlm ICgoc2VjLT5mbGFncyAmIFNFQ19BTExPQykgIT0gMAotCSAgICAmJiBzZWMtPmFsaWdubWVudF9w b3dlciA+IG1heF9hbGlnbm1lbnRfcG93ZXIpCi0JICBtYXhfYWxpZ25tZW50X3Bvd2VyID0gc2Vj LT5hbGlnbm1lbnRfcG93ZXI7CisgICAgICAvKiBXaGVyZSBkbyB3ZSB3YW50IHRvIHB1dCB0aGlz IHNlY3Rpb24gc28gdGhhdCBpdCBlbmRzIGFzCisJIGRlc2lyZWQ/ICAqLworICAgICAgYmZkX3Zt YSBzdGFydCwgZW5kLCBidW1wOworCisgICAgICAvKiBGaW5kIHRoZSBmaXJzdCBub24tZW1wdHkg cHJlY2VkaW5nIHNlY3Rpb24uICAqLworICAgICAgZm9yICg7IHByZXZfc2VjOyBwcmV2X3NlYyA9 IHByZXZfc2VjLT5wcmV2KQorCWlmIChwcmV2X3NlYy0+c2l6ZSAhPSAwICYmIChwcmV2X3NlYy0+ ZmxhZ3MgJiBTRUNfQUxMT0MpICE9IDApCisJICBicmVhazsKIAotICAgICAgLyogUmVtb3ZlIHRo ZSAxLXBhZ2UgZ2FwIGJlZm9yZSB0aGUgUkVMUk8gc2VnbWVudCBvbmx5IGlmIHRoZQotCSBtYXhp bXVtIHBhZ2Ugc2l6ZSA+PSB0aGUgbWF4aW11bSBzZWN0aW9uIGFsaWdubWVudC4gICovCisgICAg ICBlbmQgPSBzdGFydCA9IHJlbHJvX3NlYy0+dm1hOworICAgICAgaWYgKCFJU19UQlNTIChyZWxy b19zZWMpKQorCWVuZCArPSBUT19BRERSIChyZWxyb19zZWMtPnNpemUpOworICAgICAgYnVtcCA9 IGRlc2lyZWRfZW5kIC0gZW5kOwogICAgICAgaWYgKHNlZy0+bWF4cGFnZXNpemUgPj0gKDFVIDw8 IG1heF9hbGlnbm1lbnRfcG93ZXIpKQogCXsKLQkgIC8qIElmIHRoZSBwcmVjZWRpbmcgc2VjdGlv biBzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bQotCSAgICAgcGFnZSBzaXplLCBzdWJ0 cmFjdCB0aGUgbWF4aW11bSBwYWdlIHNpemUuICBPdGhlcndpc2UsCi0JICAgICBhbGlnbiB0aGUg UkVMUk8gc2VnbWVudCB0byB0aGUgbWF4aW11bSBwYWdlIHNpemUuICAqLwotCSAgaWYgKHByZXZf c2VjLT5zaXplID4gc2VnLT5tYXhwYWdlc2l6ZSkKKwkgIC8qIERvbid0IGFkZCB0aGUgMS1wYWdl IGdhcCBiZWZvcmUgdGhlIHJlbHJvIHNlZ21lbnQgaWYgdGhlCisJICAgICBtYXhpbXVtIHBhZ2Ug c2l6ZSA+PSB0aGUgbWF4aW11bSBzZWN0aW9uIGFsaWdubWVudC4gICovCisJICBpZiAoYnVtcCA+ IHNlZy0+bWF4cGFnZXNpemUpCiAJICAgIHsKLQkgICAgICBkZXNpcmVkX2VuZCAtPSBzZWctPm1h eHBhZ2VzaXplOworCSAgICAgIGJ1bXAgLT0gc2VnLT5tYXhwYWdlc2l6ZTsKIAkgICAgICByZWxy b19lbmQgLT0gc2VnLT5tYXhwYWdlc2l6ZTsKIAkgICAgfQotCSAgZWxzZQorCSAgZWxzZSBpZiAo cHJldl9zZWMgIT0gTlVMTCkKIAkgICAgewotCSAgICAgIGRlc2lyZWRfZW5kICY9IH4oc2VnLT5t YXhwYWdlc2l6ZSAtIDEpOwotCSAgICAgIHJlbHJvX2VuZCAmPSB+KHNlZy0+bWF4cGFnZXNpemUg LSAxKTsKKwkgICAgICAvKiBBbGlnbiB0aGUgcmVscm8gc2VnbWVudCBpZiB0aGVyZSBpcyBhIDEt cGFnZSBnYXAKKwkJIGJlZm9yZSB0aGUgcmVscm8gc2VnbWVudC4gICovCisJICAgICAgYWxpZ25l ZF9zdGFydCA9IHN0YXJ0ICsgYnVtcDsKKwkgICAgICBhbGlnbmVkX3N0YXJ0ICY9IH4oKChiZmRf dm1hKSAxIDw8IHJlbHJvX3NlYy0+YWxpZ25tZW50X3Bvd2VyKQorCQkJICAgICAtIDEpOworCSAg ICAgIGlmICgocHJldl9zZWMtPnZtYSArIHByZXZfc2VjLT5zaXplICsgc2VnLT5tYXhwYWdlc2l6 ZSkKKwkJICA8IGFsaWduZWRfc3RhcnQpCisJCXsKKwkJICBhbGlnbmVkX3N0YXJ0ICY9IH4oc2Vn LT5tYXhwYWdlc2l6ZSAtIDEpOworCQkgIHJlbHJvX2VuZCAmPSB+KHNlZy0+bWF4cGFnZXNpemUg LSAxKTsKKwkJfQogCSAgICB9Ci0JICB9Ci0gICAgICB9CisJfQorICAgICAgLyogV2UnZCBsaWtl IHRvIGluY3JlYXNlIFNUQVJUIGJ5IEJVTVAsIGJ1dCB3ZSBtdXN0IGhlZWQKKwkgYWxpZ25tZW50 IHNvIHRoZSBpbmNyZWFzZSBtaWdodCBiZSBsZXNzIHRoYW4gb3B0aW11bS4gICovCisgICAgICBp ZiAoYWxpZ25lZF9zdGFydCAhPSAwKQorCXN0YXJ0ID0gYWxpZ25lZF9zdGFydDsKKyAgICAgIGVs c2UKKwl7CisJICBzdGFydCArPSBidW1wOworCSAgc3RhcnQgJj0gfigoKGJmZF92bWEpIDEgPDwg cmVscm9fc2VjLT5hbGlnbm1lbnRfcG93ZXIpIC0gMSk7CisJfQorICAgICAgLyogVGhpcyBpcyBu b3cgdGhlIGRlc2lyZWQgZW5kIGZvciB0aGUgcHJldmlvdXMgc2VjdGlvbi4gICovCisgICAgICBk ZXNpcmVkX2VuZCA9IHN0YXJ0OworICAgIH0KIAorICBzZWctPnBoYXNlID0gZXhwX3NlZ19yZWxy b19hZGp1c3Q7CisgIEFTU0VSVCAoYWxpZ25lZF9zdGFydCAhPSAwIHx8IGRlc2lyZWRfZW5kID49 IHNlZy0+YmFzZSk7CiAgIHNlZy0+YmFzZSA9IGRlc2lyZWRfZW5kOwogICByZXR1cm4gcmVscm9f ZW5kOwogfQpkaWZmIC0tZ2l0IGEvbGQvdGVzdHN1aXRlL2xkLXg4Ni02NC9wcjI4NzQzLTEuZCBi L2xkL3Rlc3RzdWl0ZS9sZC14ODYtNjQvcHIyODc0My0xLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjM2Mjk3ZDI4NGU4Ci0tLSAvZGV2L251bGwKKysrIGIvbGQvdGVz dHN1aXRlL2xkLXg4Ni02NC9wcjI4NzQzLTEuZApAQCAtMCwwICsxLDUyIEBACisjYXM6IC0tNjQK KyNsZDogLW1lbGZfeDg2XzY0IC1zaGFyZWQgLXogcmVscm8gLXogbm93IC0taGFzaC1zdHlsZT1z eXN2IC16IG1heC1wYWdlLXNpemU9MHgxMDAwIC16IG5vc2VwYXJhdGUtY29kZSAkTk9fRFRfUkVM Ul9MREZMQUdTCisjcmVhZGVsZjogLVMgLWwgLS13aWRlCisjdGFyZ2V0OiB4ODZfNjQtKi1saW51 eCoKKworVGhlcmUgYXJlIDE3IHNlY3Rpb24gaGVhZGVycywgc3RhcnRpbmcgYXQgb2Zmc2V0IDB4 MTAxMjI4OgorCitTZWN0aW9uIEhlYWRlcnM6CisgIFxbTnJcXSBOYW1lICAgICAgICAgICAgICBU eXBlICAgICAgICAgICAgQWRkcmVzcyAgICAgICAgICBPZmYgICAgU2l6ZSAgIEVTIEZsZyBMayBJ bmYgQWwKKyAgXFsgMFxdICAgICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAwMDAwMDAw MDAwMDAwMDAwIDAwMDAwMCAwMDAwMDAgMDAgICAgICAwICAgMCAgMAorICBcWyAxXF0gLmhhc2gg ICAgICAgICAgICAgSEFTSCAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAxNTggMDAwMTU4IDAwMDAx OCAwNCAgIEEgIDIgICAwICA4CisgIFxbIDJcXSAuZHluc3ltICAgICAgICAgICBEWU5TWU0gICAg ICAgICAgMDAwMDAwMDAwMDAwMDE3MCAwMDAxNzAgMDAwMDQ4IDE4ICAgQSAgMyAgIDEgIDgKKyAg XFsgM1xdIC5keW5zdHIgICAgICAgICAgIFNUUlRBQiAgICAgICAgICAwMDAwMDAwMDAwMDAwMWI4 IDAwMDFiOCAwMDAwMGEgMDAgICBBICAwICAgMCAgMQorICBcWyA0XF0gLnJlbGEuZHluICAgICAg ICAgUkVMQSAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAxYzggMDAwMWM4IDAwMDAxOCAxOCAgIEEg IDIgICAwICA4CisgIFxbIDVcXSAucGx0ICAgICAgICAgICAgICBQUk9HQklUUyAgICAgICAgMDAw MDAwMDAwMDAwMDFlMCAwMDAxZTAgMDAwMDEwIDEwICBBWCAgMCAgIDAgMTYKKyAgXFsgNlxdIC5w bHQuZ290ICAgICAgICAgIFBST0dCSVRTICAgICAgICAwMDAwMDAwMDAwMDAwMWYwIDAwMDFmMCAw MDAwMDggMDggIEFYICAwICAgMCAgOAorICBcWyA3XF0gLnRleHQgICAgICAgICAgICAgUFJPR0JJ VFMgICAgICAgIDAwMDAwMDAwMDAwMDAxZjggMDAwMWY4IDAwMDAwYyAwMCAgQVggIDAgICAwICAx CisgIFxbIDhcXSAuZWhfZnJhbWUgICAgICAgICBQUk9HQklUUyAgICAgICAgMDAwMDAwMDAwMDAw MDIwOCAwMDAyMDggMDAwMDZjIDAwICAgQSAgMCAgIDAgIDgKKyAgXFsgOVxdIC5pbml0X2FycmF5 ICAgICAgIElOSVRfQVJSQVkgICAgICAwMDAwMDAwMDAwMDAxMjc4IDAwMDI3OCAwMDAwMDQgMDgg IFdBICAwICAgMCAgOAorICBcWzEwXF0gLmZpbmlfYXJyYXkgICAgICAgRklOSV9BUlJBWSAgICAg IDAwMDAwMDAwMDAxMDAwMDAgMTAwMDAwIDAwMDEwMCAwOCAgV0EgIDAgICAwIDEwNDg1NzYKKyAg XFsxMVxdIC5keW5hbWljICAgICAgICAgIERZTkFNSUMgICAgICAgICAwMDAwMDAwMDAwMTAwMTAw IDEwMDEwMCAwMDAxNTAgMTAgIFdBICAzICAgMCAgOAorICBcWzEyXF0gLmdvdCAgICAgICAgICAg ICAgUFJPR0JJVFMgICAgICAgIDAwMDAwMDAwMDAxMDAyNTAgMTAwMjUwIDAwMDAyMCAwOCAgV0Eg IDAgICAwICA4CisgIFxbMTNcXSAuZGF0YSAgICAgICAgICAgICBQUk9HQklUUyAgICAgICAgMDAw MDAwMDAwMDEwMTAwMCAxMDEwMDAgMDAwMTAwIDAwICBXQSAgMCAgIDAgIDEKKyAgXFsxNFxdIC5z eW10YWIgICAgICAgICAgIFNZTVRBQiAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDEwMTEwMCAw MDAwNzggMTggICAgIDE1ICAgMyAgOAorICBcWzE1XF0gLnN0cnRhYiAgICAgICAgICAgU1RSVEFC ICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMTAxMTc4IDAwMDAyOSAwMCAgICAgIDAgICAwICAx CisgIFxbMTZcXSAuc2hzdHJ0YWIgICAgICAgICBTVFJUQUIgICAgICAgICAgMDAwMDAwMDAwMDAw MDAwMCAxMDExYTEgMDAwMDgwIDAwICAgICAgMCAgIDAgIDEKK0tleSB0byBGbGFnczoKKyAgVyBc KHdyaXRlXCksIEEgXChhbGxvY1wpLCBYIFwoZXhlY3V0ZVwpLCBNIFwobWVyZ2VcKSwgUyBcKHN0 cmluZ3NcKSwgSSBcKGluZm9cKSwKKyAgTCBcKGxpbmsgb3JkZXJcKSwgTyBcKGV4dHJhIE9TIHBy b2Nlc3NpbmcgcmVxdWlyZWRcKSwgRyBcKGdyb3VwXCksIFQgXChUTFNcKSwKKyAgQyBcKGNvbXBy ZXNzZWRcKSwgeCBcKHVua25vd25cKSwgbyBcKE9TIHNwZWNpZmljXCksIEUgXChleGNsdWRlXCks CisgIEQgXChtYmluZFwpLCBsIFwobGFyZ2VcKSwgcCBcKHByb2Nlc3NvciBzcGVjaWZpY1wpCisK K0VsZiBmaWxlIHR5cGUgaXMgRFlOIFwoU2hhcmVkIG9iamVjdCBmaWxlXCkKK0VudHJ5IHBvaW50 IDB4MAorVGhlcmUgYXJlIDUgcHJvZ3JhbSBoZWFkZXJzLCBzdGFydGluZyBhdCBvZmZzZXQgNjQK KworUHJvZ3JhbSBIZWFkZXJzOgorICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAg ICAgICAgICAgUGh5c0FkZHIgICAgICAgICAgIEZpbGVTaXogIE1lbVNpeiAgIEZsZyBBbGlnbgor ICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDAwMDAwMDAwMDAwMDAgMHgwMDAwMDAwMDAw MDAwMDAwIDB4MDAwMjc0IDB4MDAwMjc0IFIgRSAweDEwMDAKKyAgTE9BRCAgICAgICAgICAgMHgw MDAyNzggMHgwMDAwMDAwMDAwMDAxMjc4IDB4MDAwMDAwMDAwMDAwMTI3OCAweDAwMDAwNCAweDAw MDAwNCBSVyAgMHgxMDAwCisgIExPQUQgICAgICAgICAgIDB4MTAwMDAwIDB4MDAwMDAwMDAwMDEw MDAwMCAweDAwMDAwMDAwMDAxMDAwMDAgMHgwMDExMDAgMHgwMDExMDAgUlcgIDB4MTAwMDAwCisg IERZTkFNSUMgICAgICAgIDB4MTAwMTAwIDB4MDAwMDAwMDAwMDEwMDEwMCAweDAwMDAwMDAwMDAx MDAxMDAgMHgwMDAxNTAgMHgwMDAxNTAgUlcgIDB4OAorICBHTlVfUkVMUk8gICAgICAweDAwMDI3 OCAweDAwMDAwMDAwMDAwMDEyNzggMHgwMDAwMDAwMDAwMDAxMjc4IDB4MDAwMDA0IDB4MGZmZDg4 IFIgICAweDEKKworIFNlY3Rpb24gdG8gU2VnbWVudCBtYXBwaW5nOgorICBTZWdtZW50IFNlY3Rp b25zLi4uCisgICAwMCAgICAgLmhhc2ggLmR5bnN5bSAuZHluc3RyIC5yZWxhLmR5biAucGx0IC5w bHQuZ290IC50ZXh0IC5laF9mcmFtZSAKKyAgIDAxICAgICAuaW5pdF9hcnJheSAKKyAgIDAyICAg ICAuZmluaV9hcnJheSAuZHluYW1pYyAuZ290IC5kYXRhIAorICAgMDMgICAgIC5keW5hbWljIAor ICAgMDQgICAgIC5pbml0X2FycmF5IAorI3Bhc3MKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9s ZC14ODYtNjQvcHIyODc0My0xLnMgYi9sZC90ZXN0c3VpdGUvbGQteDg2LTY0L3ByMjg3NDMtMS5z Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZTlhMTUwMzc0MQotLS0g L2Rldi9udWxsCisrKyBiL2xkL3Rlc3RzdWl0ZS9sZC14ODYtNjQvcHIyODc0My0xLnMKQEAgLTAs MCArMSwxNiBAQAorCS50ZXh0CisJLmdsb2JsIGZvbworCS50eXBlIGZvbywgQGZ1bmN0aW9uCitm b286CisJLmNmaV9zdGFydHByb2MKKwljYWxsCWZ1bmNAcGx0CisJbW92cQlmdW5jQEdPVFBDUkVM KCVyaXApLCAlcmF4CisJLmNmaV9lbmRwcm9jCisJLnNlY3Rpb24gLmluaXRfYXJyYXksImF3IixA aW5pdF9hcnJheQorCS5wMmFsaWduIDMKKwkuemVybyAweDQKKwkuc2VjdGlvbiAuZmluaV9hcnJh eSwiYXciLEBmaW5pX2FycmF5CisJLnAyYWxpZ24gMjAKKwkuemVybyAweDEwMAorCS5kYXRhCisJ Lnplcm8gMHgxMDAKZGlmZiAtLWdpdCBhL2xkL3Rlc3RzdWl0ZS9sZC14ODYtNjQveDg2LTY0LmV4 cCBiL2xkL3Rlc3RzdWl0ZS9sZC14ODYtNjQveDg2LTY0LmV4cAppbmRleCAzYmZjNWU2ZTQ2Ny4u NWVmNjZhMjM3ZWYgMTAwNjQ0Ci0tLSBhL2xkL3Rlc3RzdWl0ZS9sZC14ODYtNjQveDg2LTY0LmV4 cAorKysgYi9sZC90ZXN0c3VpdGUvbGQteDg2LTY0L3g4Ni02NC5leHAKQEAgLTUxMSw2ICs1MTEs NyBAQCBydW5fZHVtcF90ZXN0ICJkdC1yZWxyLTFhIgogcnVuX2R1bXBfdGVzdCAiZHQtcmVsci0x YS14MzIiCiBydW5fZHVtcF90ZXN0ICJkdC1yZWxyLTFiIgogcnVuX2R1bXBfdGVzdCAiZHQtcmVs ci0xYi14MzIiCitydW5fZHVtcF90ZXN0ICJwcjI4NzQzLTEiCiAKIGlmICFbaXN0YXJnZXQgIng4 Nl82NC0qLWxpbnV4KiJdIHsKICAgICByZXR1cm4KLS0gCjIuMzQuMQoK --00000000000083687805d5d38a23--