From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 127868 invoked by alias); 22 Jun 2017 18:42:54 -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 122964 invoked by uid 89); 22 Jun 2017 18:42:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=45pm, 45PM X-HELO: mail-yb0-f182.google.com Received: from mail-yb0-f182.google.com (HELO mail-yb0-f182.google.com) (209.85.213.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 22 Jun 2017 18:42:49 +0000 Received: by mail-yb0-f182.google.com with SMTP id e201so7305846ybb.1 for ; Thu, 22 Jun 2017 11:42:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=CYSVxbElB9VuJ21ei3Hw8edeyNlH70WJ34nz2HAJ7rU=; b=iagRsLJ5Bo8CXN9KyV1/1PLObfvcL6qutHjLYCsBF9+ivWZzn0fx3VrBlAD5hP5EQ+ 1d9JfVJxoNn74zpjjg2gTlrxG8eqQwdo112QQ2TMtbTshJcijiwwk77UKUIxoMX4cuk0 bKYY1hrsG1GyXAPWVMSjeMmPLfBUAdMC7IebV+7Y1v4ZN4CoegNjqTOw5th6bFW43tXw DgQm2uVKUVPyVvet8ab9lNL6aJ9nhSC9fiIiFb9Bs7/HAcciR2jFqyYAxuTuRdeWwK8O hanXsIwFiSNe1gn4273QHpbxBVq4YMKeyaF021IrfvN230eH0psMjGllPGkHG/xRj17S S5RQ== X-Gm-Message-State: AKS2vOxpbW3lDfFADheJJf3tgDDyRM5c6U+3mJns7QgHDknw83Df6idU VHVdLxbK2boFDcMw6JN3beaHYpEy8KOZOXcQnw== X-Received: by 10.37.47.215 with SMTP id v206mr2809761ybv.194.1498156967625; Thu, 22 Jun 2017 11:42:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.53.8 with HTTP; Thu, 22 Jun 2017 11:42:46 -0700 (PDT) In-Reply-To: <587CE7EC.6090208@foss.arm.com> References: <58765E2D.5030609@foss.arm.com> <20170113163549.GC39391@arm.com> <587CE7EC.6090208@foss.arm.com> From: Yvan Roux Date: Thu, 22 Jun 2017 18:42:00 -0000 Message-ID: Subject: Re: [PATCH][AArch64][GCC 6] PR target/79041: Correct -mpc-relative-literal-loads logic in aarch64_classify_symbol To: GCC Patches Cc: Kyrill Tkachov , Wilco Dijkstra , James Greenhalgh , Richard Earnshaw Content-Type: multipart/mixed; boundary="001a1140be98dfcce2055290d9de" X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg01708.txt.bz2 --001a1140be98dfcce2055290d9de Content-Type: text/plain; charset="UTF-8" Content-length: 3428 Hi all, On 16 January 2017 at 16:34, Kyrill Tkachov wrote: > > On 13/01/17 16:35, James Greenhalgh wrote: >> >> On Wed, Jan 11, 2017 at 04:32:45PM +0000, Kyrill Tkachov wrote: >>> >>> Hi all, >>> >>> In this PR we generated ADRP/ADD instructions with :lo12: relocations on >>> symbols even though -mpc-relative-literal-loads is used. This is due to >>> the >>> confusing double-negative logic of the nopcrelative_literal_loads aarch64 >>> variable and its relation to the aarch64_nopcrelative_literal_loads >>> global >>> variable in the GCC 6 branch. >>> >>> Wilco fixed this on trunk as part of a larger patch (r237607) and parts >>> of >>> that patch were backported, but other parts weren't and that patch now >>> doesn't apply cleanly to the branch. >> >> As I commented to Jakub at the time he made the first partial backport, >> I'd much rather just see all of Wilco's patch backported. We're not on >> the verge of a 6 release now, so please just backport Wilco's patch (as >> should have been done all along if this had been correctly identified as >> a fix rather than a clean-up). > > > Unfortunately simply backporting the patch does not fix this PR. > The aarch64_classify_symbol changes do not have the desired effect > and the :lo12: relocations are generated. > I'll look into it, but I believe that would require a bigger change than > this one-liner. Here is the backport of Wilco's patch (r237607) along with Kyrill's one (r244643, which removed the remaining occurences of aarch64_nopcrelative_literal_loads). To fix the issue the original patch has to be modified, to keep aarch64_pcrelative_literal_loads test for large models in aarch64_classify_symbol. On trunk and gcc-7-branch the :lo12: relocations are not generated because of Wilco's fix for pr78733 (r243456 and 243486), but my understanding is that the bug is still present since compiling gcc.target/aarch64/pr78733.c with -mcmodel=large brings back the :lo12: relocations (I'll submit a patch to add the test back if my understanding is correct). Cross built and regtested without issue for aarch64-linux-gnu, aarch64-none-elf and aarch64_be-none-elf targets OK for gcc-6-branch ? Thanks Yvan gcc/ChangeLog 2017-06-22 Yvan Roux PR target/79041 Backport from mainline 2016-06-20 Wilco Dijkstra * config/aarch64/aarch64.opt (mpc-relative-literal-loads): Rename internal option name. * config/aarch64/aarch64.c (aarch64_nopcrelative_literal_loads): Rename to aarch64_pcrelative_literal_loads. (aarch64_expand_mov_immediate): Likewise. (aarch64_secondary_reload): Likewise. (aarch64_can_use_per_function_literal_pools_p): Likewise. (aarch64_classify_symbol): Likewise. (aarch64_override_options_after_change_1): Rename and simplify logic. 2016-01-19 Kyrylo Tkachov * config/aarch64/aarch64-protos.h(aarch64_nopcrelative_literal_loads): Delete. * config/aarch64/aarch64.md (aarch64_reload_movcp): Delete reference to aarch64_nopcrelative_literal_loads. (aarch64_reload_movcp): Likewise. gcc/testsuite/ChangeLog 2017-06-22 Yvan Roux PR target/79041 * gcc.target/aarch64/pr79041.c: New test. --001a1140be98dfcce2055290d9de Content-Type: text/x-patch; charset="US-ASCII"; name="pr79041.patch" Content-Disposition: attachment; filename="pr79041.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j48rxhzw0 Content-length: 10387 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rv cy5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKaW5k ZXggZmE5N2UyOS4uN2IxMGZmNiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQtcHJvdG9zLmgKQEAgLTQzNiw3ICs0MzYsNiBAQCBpbnQg YWFyY2g2NF9jY21wX21vZGVfdG9fY29kZSAoZW51bSBtYWNoaW5lX21vZGUg bW9kZSk7CiBib29sIGV4dHJhY3RfYmFzZV9vZmZzZXRfaW5fYWRkciAocnR4 IG1lbSwgcnR4ICpiYXNlLCBydHggKm9mZnNldCk7CiBib29sIGFhcmNoNjRf b3BlcmFuZHNfb2tfZm9yX2xkcHN0cCAocnR4ICosIGJvb2wsIGVudW0gbWFj aGluZV9tb2RlKTsKIGJvb2wgYWFyY2g2NF9vcGVyYW5kc19hZGp1c3Rfb2tf Zm9yX2xkcHN0cCAocnR4ICosIGJvb2wsIGVudW0gbWFjaGluZV9tb2RlKTsK LWV4dGVybiBib29sIGFhcmNoNjRfbm9wY3JlbGF0aXZlX2xpdGVyYWxfbG9h ZHM7CiAKIGV4dGVybiB2b2lkIGFhcmNoNjRfYXNtX291dHB1dF9wb29sX2Vw aWxvZ3VlIChGSUxFICosIGNvbnN0IGNoYXIgKiwKIAkJCQkJICAgICAgdHJl ZSwgSE9TVF9XSURFX0lOVCk7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC5jIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQu YwppbmRleCBlNzkxNjViLi45YjA2MzIwIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC5jCisrKyBiL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0LmMKQEAgLTE1Miw3ICsxNTIsNyBAQCBlbnVtIGFhcmNoNjRf cHJvY2Vzc29yIGFhcmNoNjRfdHVuZSA9IGNvcnRleGE1MzsKIHVuc2lnbmVk IGxvbmcgYWFyY2g2NF90dW5lX2ZsYWdzID0gMDsKIAogLyogR2xvYmFsIGZs YWcgZm9yIFBDIHJlbGF0aXZlIGxvYWRzLiAgKi8KLWJvb2wgYWFyY2g2NF9u b3BjcmVsYXRpdmVfbGl0ZXJhbF9sb2FkczsKK2Jvb2wgYWFyY2g2NF9wY3Jl bGF0aXZlX2xpdGVyYWxfbG9hZHM7CiAKIC8qIFN1cHBvcnQgZm9yIGNvbW1h bmQgbGluZSBwYXJzaW5nIG9mIGJvb2xlYW4gZmxhZ3MgaW4gdGhlIHR1bmlu ZwogICAgc3RydWN0dXJlcy4gICovCkBAIC0xNzAzLDcgKzE3MDMsNyBAQCBh YXJjaDY0X2V4cGFuZF9tb3ZfaW1tZWRpYXRlIChydHggZGVzdCwgcnR4IGlt bSkKIAkgICAgIHdlIG5lZWQgdG8gZXhwYW5kIHRoZSBsaXRlcmFsIHBvb2wg YWNjZXNzIGNhcmVmdWxseS4KIAkgICAgIFRoaXMgaXMgc29tZXRoaW5nIHRo YXQgbmVlZHMgdG8gYmUgZG9uZSBpbiBhIG51bWJlcgogCSAgICAgb2YgcGxh Y2VzLCBzbyBjb3VsZCB3ZWxsIGxpdmUgYXMgYSBzZXBhcmF0ZSBmdW5jdGlv bi4gICovCi0JICBpZiAoYWFyY2g2NF9ub3BjcmVsYXRpdmVfbGl0ZXJhbF9s b2FkcykKKwkgIGlmICghYWFyY2g2NF9wY3JlbGF0aXZlX2xpdGVyYWxfbG9h ZHMpCiAJICAgIHsKIAkgICAgICBnY2NfYXNzZXJ0IChjYW5fY3JlYXRlX3Bz ZXVkb19wICgpKTsKIAkgICAgICBiYXNlID0gZ2VuX3JlZ19ydHggKHB0cl9t b2RlKTsKQEAgLTQwMjgsNyArNDAyOCw3IEBAIGFhcmNoNjRfY2xhc3NpZnlf YWRkcmVzcyAoc3RydWN0IGFhcmNoNjRfYWRkcmVzc19pbmZvICppbmZvLAog CSAgcmV0dXJuICgoR0VUX0NPREUgKHN5bSkgPT0gTEFCRUxfUkVGCiAJCSAg IHx8IChHRVRfQ09ERSAoc3ltKSA9PSBTWU1CT0xfUkVGCiAJCSAgICAgICAm JiBDT05TVEFOVF9QT09MX0FERFJFU1NfUCAoc3ltKQotCQkgICAgICAgJiYg IWFhcmNoNjRfbm9wY3JlbGF0aXZlX2xpdGVyYWxfbG9hZHMpKSk7CisJCSAg ICAgICAmJiBhYXJjaDY0X3BjcmVsYXRpdmVfbGl0ZXJhbF9sb2FkcykpKTsK IAl9CiAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUxODMsNyArNTE4Myw3 IEBAIGFhcmNoNjRfc2Vjb25kYXJ5X3JlbG9hZCAoYm9vbCBpbl9wIEFUVFJJ QlVURV9VTlVTRUQsIHJ0eCB4LAogICBpZiAoTUVNX1AgKHgpICYmIEdFVF9D T0RFICh4KSA9PSBTWU1CT0xfUkVGICYmIENPTlNUQU5UX1BPT0xfQUREUkVT U19QICh4KQogICAgICAgJiYgKFNDQUxBUl9GTE9BVF9NT0RFX1AgKEdFVF9N T0RFICh4KSkKIAkgIHx8IHRhcmdldG0udmVjdG9yX21vZGVfc3VwcG9ydGVk X3AgKEdFVF9NT0RFICh4KSkpCi0gICAgICAmJiBhYXJjaDY0X25vcGNyZWxh dGl2ZV9saXRlcmFsX2xvYWRzKQorICAgICAgJiYgIWFhcmNoNjRfcGNyZWxh dGl2ZV9saXRlcmFsX2xvYWRzKQogICAgIHsKICAgICAgIHNyaS0+aWNvZGUg PSBhYXJjaDY0X2NvbnN0YW50X3Bvb2xfcmVsb2FkX2ljb2RlIChtb2RlKTsK ICAgICAgIHJldHVybiBOT19SRUdTOwpAQCAtNTUxNyw3ICs1NTE3LDcgQEAg YWFyY2g2NF91eHRfc2l6ZSAoaW50IHNoaWZ0LCBIT1NUX1dJREVfSU5UIG1h c2spCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFhcmNoNjRfY2FuX3VzZV9wZXJf ZnVuY3Rpb25fbGl0ZXJhbF9wb29sc19wICh2b2lkKQogewotICByZXR1cm4g KCFhYXJjaDY0X25vcGNyZWxhdGl2ZV9saXRlcmFsX2xvYWRzCisgIHJldHVy biAoYWFyY2g2NF9wY3JlbGF0aXZlX2xpdGVyYWxfbG9hZHMKIAkgIHx8IGFh cmNoNjRfY21vZGVsID09IEFBUkNINjRfQ01PREVMX0xBUkdFKTsKIH0KIApA QCAtODA0MywzMiArODA0MywzMSBAQCBhYXJjaDY0X292ZXJyaWRlX29wdGlv bnNfYWZ0ZXJfY2hhbmdlXzEgKHN0cnVjdCBnY2Nfb3B0aW9ucyAqb3B0cykK IAlvcHRzLT54X2FsaWduX2Z1bmN0aW9ucyA9IGFhcmNoNjRfdHVuZV9wYXJh bXMuZnVuY3Rpb25fYWxpZ247CiAgICAgfQogCi0gIC8qIElmIG5vcGNyZWxh dGl2ZV9saXRlcmFsX2xvYWRzIGlzIHNldCBvbiB0aGUgY29tbWFuZCBsaW5l LCB0aGlzCisgIC8qIFdlIGRlZmF1bHQgdG8gbm8gcGMtcmVsYXRpdmUgbGl0 ZXJhbCBsb2Fkcy4gICovCisKKyAgYWFyY2g2NF9wY3JlbGF0aXZlX2xpdGVy YWxfbG9hZHMgPSBmYWxzZTsKKworICAvKiBJZiAtbXBjLXJlbGF0aXZlLWxp dGVyYWwtbG9hZHMgaXMgc2V0IG9uIHRoZSBjb21tYW5kIGxpbmUsIHRoaXMK ICAgICAgaW1wbGllcyB0aGF0IHRoZSB1c2VyIGFza2VkIGZvciBQQyByZWxh dGl2ZSBsaXRlcmFsIGxvYWRzLiAgKi8KLSAgaWYgKG9wdHMtPnhfbm9wY3Jl bGF0aXZlX2xpdGVyYWxfbG9hZHMgPT0gMSkKLSAgICBhYXJjaDY0X25vcGNy ZWxhdGl2ZV9saXRlcmFsX2xvYWRzID0gZmFsc2U7CisgIGlmIChvcHRzLT54 X3BjcmVsYXRpdmVfbGl0ZXJhbF9sb2FkcyA9PSAxKQorICAgIGFhcmNoNjRf cGNyZWxhdGl2ZV9saXRlcmFsX2xvYWRzID0gdHJ1ZTsKIAotICAvKiBJZiBp dCBpcyBub3Qgc2V0IG9uIHRoZSBjb21tYW5kIGxpbmUsIHdlIGRlZmF1bHQg dG8gbm8gcGMKLSAgICAgcmVsYXRpdmUgbGl0ZXJhbCBsb2FkcywgdW5sZXNz IHRoZSB3b3JrYXJvdW5kIGZvciBDb3J0ZXgtQTUzCi0gICAgIGVycmF0dW0g ODQzNDE5IGlzIGluIGVmZmVjdC4gICovCiAgIC8qIFRoaXMgaXMgUFI3MDEx My4gV2hlbiBidWlsZGluZyB0aGUgTGludXgga2VybmVsIHdpdGgKICAgICAg Q09ORklHX0FSTTY0X0VSUkFUVU1fODQzNDE5LCBzdXBwb3J0IGZvciByZWxv Y2F0aW9ucwogICAgICBSX0FBUkNINjRfQURSX1BSRUxfUEdfSEkyMSBhbmQg Ul9BQVJDSDY0X0FEUl9QUkVMX1BHX0hJMjFfTkMgaXMKICAgICAgcmVtb3Zl ZCBmcm9tIHRoZSBrZXJuZWwgdG8gYXZvaWQgbG9hZGluZyBvYmplY3RzIHdp dGggcG9zc2libHkKLSAgICAgb2ZmZW5kaW5nIHNlcXVlbmNlcy4gV2l0aCBu b3BjcmVsYXRpdmVfbGl0ZXJhbF9sb2Fkcywgd2Ugd291bGQKKyAgICAgb2Zm ZW5kaW5nIHNlcXVlbmNlcy4gIFdpdGhvdXQgLW1wYy1yZWxhdGl2ZS1saXRl cmFsLWxvYWRzIHdlIHdvdWxkCiAgICAgIGdlbmVyYXRlIHN1Y2ggcmVsb2Nh dGlvbnMsIHByZXZlbnRpbmcgdGhlIGtlcm5lbCBidWlsZCBmcm9tCiAgICAg IHN1Y2NlZWRpbmcuICAqLwotICBpZiAob3B0cy0+eF9ub3BjcmVsYXRpdmVf bGl0ZXJhbF9sb2FkcyA9PSAyCi0gICAgICAmJiAhVEFSR0VUX0ZJWF9FUlJf QTUzXzg0MzQxOSkKLSAgICBhYXJjaDY0X25vcGNyZWxhdGl2ZV9saXRlcmFs X2xvYWRzID0gdHJ1ZTsKKyAgaWYgKG9wdHMtPnhfcGNyZWxhdGl2ZV9saXRl cmFsX2xvYWRzID09IDIKKyAgICAgICYmIFRBUkdFVF9GSVhfRVJSX0E1M184 NDM0MTkpCisgICAgYWFyY2g2NF9wY3JlbGF0aXZlX2xpdGVyYWxfbG9hZHMg PSB0cnVlOwogCi0gIC8qIEluIHRoZSB0aW55IG1lbW9yeSBtb2RlbCBpdCBt YWtlcyBubyBzZW5zZQotICAgICB0byBkaXNhbGxvdyBub24gUEMgcmVsYXRp dmUgbGl0ZXJhbCBwb29sIGxvYWRzCi0gICAgIGFzIG1hbnkgb3RoZXIgdGhp bmdzIHdpbGwgYnJlYWsgYW55d2F5LiAgKi8KLSAgaWYgKG9wdHMtPnhfbm9w Y3JlbGF0aXZlX2xpdGVyYWxfbG9hZHMKLSAgICAgICYmIChhYXJjaDY0X2Nt b2RlbCA9PSBBQVJDSDY0X0NNT0RFTF9USU5ZCi0JICB8fCBhYXJjaDY0X2Nt b2RlbCA9PSBBQVJDSDY0X0NNT0RFTF9USU5ZX1BJQykpCi0gICAgYWFyY2g2 NF9ub3BjcmVsYXRpdmVfbGl0ZXJhbF9sb2FkcyA9IGZhbHNlOworICAvKiBJ biB0aGUgdGlueSBtZW1vcnkgbW9kZWwgaXQgbWFrZXMgbm8gc2Vuc2UgdG8g ZGlzYWxsb3cgUEMgcmVsYXRpdmUKKyAgICAgbGl0ZXJhbCBwb29sIGxvYWRz LiAgKi8KKyAgaWYgKGFhcmNoNjRfY21vZGVsID09IEFBUkNINjRfQ01PREVM X1RJTlkKKyAgICAgIHx8IGFhcmNoNjRfY21vZGVsID09IEFBUkNINjRfQ01P REVMX1RJTllfUElDKQorICAgIGFhcmNoNjRfcGNyZWxhdGl2ZV9saXRlcmFs X2xvYWRzID0gdHJ1ZTsKIH0KIAogLyogJ1VucGFjaycgdXAgdGhlIGludGVy bmFsIHR1bmluZyBzdHJ1Y3RzIGFuZCB1cGRhdGUgdGhlIG9wdGlvbnMKQEAg LTkzMTQsNyArOTMxMyw3IEBAIGFhcmNoNjRfY2xhc3NpZnlfc3ltYm9sIChy dHggeCwgcnR4IG9mZnNldCkKIAkgIC8qIFRoaXMgaXMgYWxyaWdodCBldmVu IGluIFBJQyBjb2RlIGFzIHRoZSBjb25zdGFudAogCSAgICAgcG9vbCByZWZl cmVuY2UgaXMgYWx3YXlzIFBDIHJlbGF0aXZlIGFuZCB3aXRoaW4KIAkgICAg IHRoZSBzYW1lIHRyYW5zbGF0aW9uIHVuaXQuICAqLwotCSAgaWYgKG5vcGNy ZWxhdGl2ZV9saXRlcmFsX2xvYWRzCisJICBpZiAoIWFhcmNoNjRfcGNyZWxh dGl2ZV9saXRlcmFsX2xvYWRzCiAJICAgICAgJiYgQ09OU1RBTlRfUE9PTF9B RERSRVNTX1AgKHgpKQogCSAgICByZXR1cm4gU1lNQk9MX1NNQUxMX0FCU09M VVRFOwogCSAgZWxzZQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQubWQgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZApp bmRleCAyYzlmNDhjLi44YzNlMjE2IDEwMDY0NAotLS0gYS9nY2MvY29uZmln L2FhcmNoNjQvYWFyY2g2NC5tZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC5tZApAQCAtNDc3NSw3ICs0Nzc1LDcgQEAKICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpHUEZfVEYgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13IikK ICAgICAgICAobWVtOkdQRl9URiAobWF0Y2hfb3BlcmFuZCAxICJhYXJjaDY0 X2NvbnN0YW50X3Bvb2xfc3ltcmVmIiAiUyIpKSkKICAgKGNsb2JiZXIgKG1h dGNoX29wZXJhbmQ6UCAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSZyIikpXQot ICJUQVJHRVRfRkxPQVQgJiYgYWFyY2g2NF9ub3BjcmVsYXRpdmVfbGl0ZXJh bF9sb2FkcyIKKyAiVEFSR0VUX0ZMT0FUIgogIHsKICAgIGFhcmNoNjRfZXhw YW5kX21vdl9pbW1lZGlhdGUgKG9wZXJhbmRzWzJdLCBYRVhQIChvcGVyYW5k c1sxXSwgMCkpOwogICAgZW1pdF9tb3ZlX2luc24gKG9wZXJhbmRzWzBdLCBn ZW5fcnR4X01FTSAoPEdQRl9URjpNT0RFPm1vZGUsIG9wZXJhbmRzWzJdKSk7 CkBAIC00Nzg4LDcgKzQ3ODgsNyBAQAogIFsoc2V0IChtYXRjaF9vcGVyYW5k OlZBTEwgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13IikKICAgICAgICAobWVt OlZBTEwgKG1hdGNoX29wZXJhbmQgMSAiYWFyY2g2NF9jb25zdGFudF9wb29s X3N5bXJlZiIgIlMiKSkpCiAgIChjbG9iYmVyIChtYXRjaF9vcGVyYW5kOlAg MiAicmVnaXN0ZXJfb3BlcmFuZCIgIj0mciIpKV0KLSAiVEFSR0VUX0ZMT0FU ICYmIGFhcmNoNjRfbm9wY3JlbGF0aXZlX2xpdGVyYWxfbG9hZHMiCisgIlRB UkdFVF9GTE9BVCIKICB7CiAgICBhYXJjaDY0X2V4cGFuZF9tb3ZfaW1tZWRp YXRlIChvcGVyYW5kc1syXSwgWEVYUCAob3BlcmFuZHNbMV0sIDApKTsKICAg IGVtaXRfbW92ZV9pbnNuIChvcGVyYW5kc1swXSwgZ2VuX3J0eF9NRU0gKDxW QUxMOk1PREU+bW9kZSwgb3BlcmFuZHNbMl0pKTsKZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm9wdCBiL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0Lm9wdAppbmRleCBjNjM3ZmY0Li5iYzUwZWM5IDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5vcHQKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQub3B0CkBAIC0xNDYsNyArMTQ2 LDcgQEAgRW51bVZhbHVlCiBFbnVtKGFhcmNoNjRfYWJpKSBTdHJpbmcobHA2 NCkgVmFsdWUoQUFSQ0g2NF9BQklfTFA2NCkKIAogbXBjLXJlbGF0aXZlLWxp dGVyYWwtbG9hZHMKLVRhcmdldCBSZXBvcnQgU2F2ZSBWYXIobm9wY3JlbGF0 aXZlX2xpdGVyYWxfbG9hZHMpIEluaXQoMikgU2F2ZQorVGFyZ2V0IFJlcG9y dCBTYXZlIFZhcihwY3JlbGF0aXZlX2xpdGVyYWxfbG9hZHMpIEluaXQoMikg U2F2ZQogUEMgcmVsYXRpdmUgbGl0ZXJhbCBsb2Fkcy4KIAogbWxvdy1wcmVj aXNpb24tcmVjaXAtc3FydApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvcHI3OTA0MS5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvcHI3OTA0MS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjllYzk3YjIKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9wcjc5MDQxLmMK QEAgLTAsMCArMSwyNiBAQAorLyogUFIgdGFyZ2V0Lzc5MDQxLiAgQ2hlY2sg dGhhdCB3ZSBkb24ndCBnZW5lcmF0ZSB0aGUgTE8xMiByZWxvY2F0aW9ucwor ICAgZm9yIC1tcGMtcmVsYXRpdmUtbGl0ZXJhbC1sb2Fkcy4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1j bW9kZWw9bGFyZ2UgLW1wYy1yZWxhdGl2ZS1saXRlcmFsLWxvYWRzIiB9ICov CisKK2V4dGVybiBpbnQgc3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqKTsKK2V4dGVybiBjaGFyICogc3RyY3B5KGNoYXIgKixjb25zdCBjaGFy ICopOworCitzdGF0aWMgc3RydWN0IHsKKyAgICBjaGFyICpiOworICAgIGNo YXIgKmM7Cit9IGRbXSA9IHsKKyAgICAgIHsgIjAiLCAiMDAwMDAwMDAwMDAw MDAwIiB9LAorICAgICAgeyAiMSIsICIxMTExMTExMTExMTExMTEiIH0sCit9 OworCit2b2lkCitlIChjb25zdCBjaGFyICpiLCBjaGFyICpjKQoreworICAg IGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCAxOyArK2kpCisgICAgICBp ZiAoIXN0cmNtcChkW2ldLmIsIGIpKQorCXN0cmNweShjLCBkW2ldLmMpOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICI6bG8x MjoiIH0gfSAqLwo= --001a1140be98dfcce2055290d9de--