From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 125109 invoked by alias); 2 Sep 2019 20:04: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 125101 invoked by uid 89); 2 Sep 2019 20:04:53 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-15.3 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.1 spammy=thumb, course!, emit_move_insn, UD:arm.md X-HELO: mail-lj1-f172.google.com Received: from mail-lj1-f172.google.com (HELO mail-lj1-f172.google.com) (209.85.208.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 02 Sep 2019 20:04:50 +0000 Received: by mail-lj1-f172.google.com with SMTP id t14so13875254lji.4 for ; Mon, 02 Sep 2019 13:04:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=+ReVdFn5YFHvh1D9+t48hCfeTmIHSqbi3kiLhOFKxOo=; b=imQ6eGSUNhttLQ8I8cxZ6MjBXYaAqq9PrZzd3LXz0B3E+9juf5QU4C8fMK5WfDeNjY wGPrIHs08HmNVJbBM90JNFZX3LRX/VwvRZUJxmo2bvHDNdvFZHLDLr9Bb4I30D2mp64E MUnUZw9qTsz5Wrr66tM0XqYxYTr8beqfnVjySrbx3BHWHhB7bWKhABwI/J2lpSzCAjKW jMEuVFG/gce8MGtsrxCMHF/uahftoevaq5EZ96xy7WXDU4OYdPvvs2aXXC4mx5LSBSoK MurWf7+gjwXJD934nFfwt6kkPC8kXqRbjHmLIoXebAO5Uo+eG7R8VE25colFDxd19Ay4 dXSw== MIME-Version: 1.0 References: <20190515124006.25840-1-christophe.lyon@st.com> <20190515124006.25840-5-christophe.lyon@st.com> In-Reply-To: From: Christophe Lyon Date: Mon, 02 Sep 2019 20:04:00 -0000 Message-ID: Subject: Re: [ARM/FDPIC v5 04/21] [ARM] FDPIC: Add support for FDPIC for arm architecture To: Christophe Lyon , gcc Patches , Richard Sandiford Content-Type: multipart/mixed; boundary="000000000000db63d50591977b37" X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00074.txt.bz2 --000000000000db63d50591977b37 Content-Type: text/plain; charset="UTF-8" Content-length: 2606 On Mon, 2 Sep 2019 at 18:12, Richard Sandiford wrote: > > Sorry for the slow reply. > > Christophe Lyon writes: > > On 16/07/2019 13:58, Richard Sandiford wrote: > >> Christophe Lyon writes: > >>> +(define_insn "*restore_pic_register_after_call" > >>> + [(parallel [(unspec [(match_operand:SI 0 "s_register_operand" "=r,r") > >>> + (match_operand:SI 1 "nonimmediate_operand" "r,m")] > >>> + UNSPEC_PIC_RESTORE) > >>> + (use (match_dup 1)) > >>> + (clobber (match_dup 0))]) > >>> + ] > >>> + "" > >>> + "@ > >>> + mov\t%0, %1 > >>> + ldr\t%0, %1" > >>> +) > >>> + > >>> (define_expand "call_internal" > >>> [(parallel [(call (match_operand 0 "memory_operand" "") > >>> (match_operand 1 "general_operand" "")) > >> > >> Since operand 0 is significant after the instruction, I think this > >> should be: > >> > >> (define_insn "*restore_pic_register_after_call" > >> [(set (match_operand:SI 0 "s_register_operand" "+r,r") > >> (unspec:SI [(match_dup 0) > >> (match_operand:SI 1 "nonimmediate_operand" "r,m")] > >> UNSPEC_PIC_RESTORE))] > >> ... > >> > >> The (use (match_dup 1)) looks redundant, since the unspec itself > >> uses operand 1. > >> > > When I try that, I have cases where the restore instruction is discarded, when the call happens just before function return. Since r9 is caller-saved, it should be restored but after dse2 the dumps say: > > (insn (set (reg:SI 9 r9) > > (unspec:SI [ > > (reg:SI 9 r9) > > (reg:SI 4 r4 [121]) > > ] UNSPEC_PIC_RESTORE)) > > (expr_list:REG_UNUSED (reg:SI 9 r9) (nil)))) > > > > and this is later removed by cprop_hardreg (which says the exit block uses r4, sp, and lr: should I make it use r9?) > > But if it's caller-saved (i.e. call-clobbered), function A shouldn't > need to restore r9 after a call unless A needs the value of r9 for > something. I.e. A shouldn't need to restore r9 for A's own caller, > because the caller should be doing that iself. > > So if r9 is caller-saved and not referenced between the call and > function exit, deleting the restore sounds like the right thing to do. > Of course! I should have found that myself: I tried this change before I removed an "optimization" we had that avoided restoring r9 before calling functions in the same module... thus breaking the ABI. Since the previous patch I send didn't have this "optimization", the above now works. New patch attached. Thanks! Christophe > Richard --000000000000db63d50591977b37 Content-Type: text/x-patch; charset="UTF-8"; name="0004-ARM-FDPIC-Add-support-for-FDPIC-for-arm-architecture.patch" Content-Disposition: attachment; filename="0004-ARM-FDPIC-Add-support-for-FDPIC-for-arm-architecture.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k02u1hmt0 Content-length: 26592 Y29tbWl0IDdiNjA2YzM5ODM0YzVmZWZiZGUzMGEzMTMxZjliMTIzZDAyZTc0 OTEKQXV0aG9yOiBDaHJpc3RvcGhlIEx5b24gPGNocmlzdG9waGUubHlvbkBs aW5hcm8ub3JnPgpEYXRlOiAgIFRodSBGZWIgOCAxMToxMDo1MSAyMDE4ICsw MTAwCgogICAgW0FSTV0gRkRQSUM6IEFkZCBzdXBwb3J0IGZvciBGRFBJQyBm b3IgYXJtIGFyY2hpdGVjdHVyZQogICAgCiAgICBUaGUgRkRQSUMgcmVnaXN0 ZXIgaXMgaGFyZC1jb2RlZCB0byByOSwgYXMgZGVmaW5lZCBpbiB0aGUgQUJJ LgogICAgCiAgICBXZSBoYXZlIHRvIGRpc2FibGUgdGFpbGNhbGwgb3B0aW1p emF0aW9ucyBpZiB3ZSBkb24ndCBrbm93IGlmIHRoZQogICAgdGFyZ2V0IGZ1 bmN0aW9uIGlzIGluIHRoZSBzYW1lIG1vZHVsZS4gSWYgbm90LCB3ZSBoYXZl IHRvIHNldCByOSB0bwogICAgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0 aGUgdGFyZ2V0IG1vZHVsZS4KICAgIAogICAgV2hlbiBnZW5lcmF0aW5nIGEg c3ltYm9sIGFkZHJlc3MsIHdlIGhhdmUgdG8gdGFrZSBpbnRvIGFjY291bnQg d2hldGhlcgogICAgaXQgaXMgYSBwb2ludGVyIHRvIGRhdGEgb3IgdG8gYSBm dW5jdGlvbiwgYmVjYXVzZSBkaWZmZXJlbnQKICAgIHJlbG9jYXRpb25zIGFy ZSBuZWVkZWQuCiAgICAKICAgIDIwMTktWFgtWFggIENocmlzdG9waGUgTHlv biAgPGNocmlzdG9waGUubHlvbkBzdC5jb20+CiAgICAJTWlja2HDq2wgR3XD qm7DqSA8bWlja2FlbC5ndWVuZUBzdC5jb20+CiAgICAKICAgIAlnY2MvCiAg ICAJKiBjb25maWcvYXJtL2FybS1jLmMgKF9fRkRQSUNfXyk6IERlZmluZSBu ZXcgcHJlLXByb2Nlc3NvciBtYWNybwogICAgCWluIEZEUElDIG1vZGUuCiAg ICAJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaCAoYXJtX2xvYWRfZnVuY3Rp b25fZGVzY3JpcHRvcik6IERlY2xhcmUKICAgIAluZXcgZnVuY3Rpb24uCiAg ICAJKiBjb25maWcvYXJtL2FybS5jIChhcm1fb3B0aW9uX292ZXJyaWRlKTog RGVmaW5lIHBpYyByZWdpc3RlciB0bwogICAgCUZEUElDX1JFR05VTS4KICAg IAkoYXJtX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsKTogRGlzYWJsZSBzaWJj YWxsIG9wdGltaXphdGlvbiBpZiB3ZQogICAgCWhhdmUgbm8gZGVjbCBvciBn byB0aHJvdWdoIFBMVC4KICAgIAkoY2FsY3VsYXRlX3BpY19hZGRyZXNzX2Nv bnN0YW50KTogTmV3IGZ1bmN0aW9uLgogICAgCShsZWdpdGltaXplX3BpY19h ZGRyZXNzKTogQ2FsbCBjYWxjdWxhdGVfcGljX2FkZHJlc3NfY29uc3RhbnQu CiAgICAJKGFybV9sb2FkX3BpY19yZWdpc3Rlcik6IEhhbmRsZSBUQVJHRVRf RkRQSUMuCiAgICAJKGFybV9pc19zZWdtZW50X2luZm9fa25vd24pOiBOZXcg ZnVuY3Rpb24uCiAgICAJKGFybV9waWNfc3RhdGljX2FkZHIpOiBBZGQgc3Vw cG9ydCBmb3IgRkRQSUMuCiAgICAJKGFybV9sb2FkX2Z1bmN0aW9uX2Rlc2Ny aXB0b3IpOiBOZXcgZnVuY3Rpb24uCiAgICAJKGFybV9lbWl0X2NhbGxfaW5z bik6IEFkZCBzdXBwb3J0IGZvciBGRFBJQy4KICAgIAkoYXJtX2Fzc2VtYmxl X2ludGVnZXIpOiBBZGQgc3VwcG9ydCBmb3IgRkRQSUMuCiAgICAJKiBjb25m aWcvYXJtL2FybS5oIChQSUNfT0ZGU0VUX1RBQkxFX1JFR19DQUxMX0NMT0JC RVJFRCk6CiAgICAJRGVmaW5lLiAoRkRQSUNfUkVHTlVNKTogTmV3IGRlZmlu ZS4KICAgIAkqIGNvbmZpZy9hcm0vYXJtLm1kIChjYWxsKTogQWRkIHN1cHBv cnQgZm9yIEZEUElDLgogICAgCShjYWxsX3ZhbHVlKTogTGlrZXdpc2UuCiAg ICAJKHJlc3RvcmVfcGljX3JlZ2lzdGVyX2FmdGVyX2NhbGwpOiBOZXcgcGF0 dGVybi4KICAgIAkodW50eXBlZF9jYWxsKTogRGlzYWJsZSBpZiBGRFBJQy4K ICAgIAkodW50eXBlZF9yZXR1cm4pOiBMaWtld2lzZS4KICAgIAkqIGNvbmZp Zy9hcm0vdW5zcGVjcy5tZCAoVU5TUEVDX1BJQ19SRVNUT1JFKTogTmV3Lgog ICAgCiAgICAJZ2NjL3Rlc3RzdWl0ZS8KICAgIAkqIGdjYy50YXJnZXQvYXJt L2ZwMTYtYWFwY3MtMi5jOiBBZGp1c3Qgc2Nhbi1hc3NlbWJsZXItdGltZXMu CiAgICAJKiBnY2MudGFyZ2V0L2FybS9mcDE2LWFhcGNzLTQuYzogTGlrZXdp c2UuCiAgICAKICAgIENoYW5nZS1JZDogSTFlOTZkMjYwMDc0YWI3Yjc1ZDM2 Y2RmZjVkMzRhZDg5OGYzNWM2NmYKCmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2FybS9hcm0tYy5jIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLWMuYwppbmRleCA2 ZTI1NmVlLi4zNDY5NWZhIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9h cm0tYy5jCisrKyBiL2djYy9jb25maWcvYXJtL2FybS1jLmMKQEAgLTIwMyw2 ICsyMDMsOCBAQCBhcm1fY3B1X2J1aWx0aW5zIChzdHJ1Y3QgY3BwX3JlYWRl ciogcGZpbGUpCiAgICAgICBidWlsdGluX2RlZmluZSAoIl9fQVJNX0VBQklf XyIpOwogICAgIH0KIAorICBkZWZfb3JfdW5kZWZfbWFjcm8gKHBmaWxlLCAi X19GRFBJQ19fIiwgVEFSR0VUX0ZEUElDKTsKKwogICBkZWZfb3JfdW5kZWZf bWFjcm8gKHBmaWxlLCAiX19BUk1fQVJDSF9FWFRfSURJVl9fIiwgVEFSR0VU X0lESVYpOwogICBkZWZfb3JfdW5kZWZfbWFjcm8gKHBmaWxlLCAiX19BUk1f RkVBVFVSRV9JRElWIiwgVEFSR0VUX0lESVYpOwogCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL2FybS9hcm0tcHJvdG9zLmggYi9nY2MvY29uZmlnL2FybS9h cm0tcHJvdG9zLmgKaW5kZXggNDg1YmM2OC4uMjcyOTY4YSAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLXByb3Rvcy5oCisrKyBiL2djYy9jb25m aWcvYXJtL2FybS1wcm90b3MuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGV4dGVy biBpbnQgYXJtX21heF9jb25zdF9kb3VibGVfaW5saW5lX2Nvc3QgKHZvaWQp OwogZXh0ZXJuIGludCBhcm1fY29uc3RfZG91YmxlX2lubGluZV9jb3N0IChy dHgpOwogZXh0ZXJuIGJvb2wgYXJtX2NvbnN0X2RvdWJsZV9ieV9wYXJ0cyAo cnR4KTsKIGV4dGVybiBib29sIGFybV9jb25zdF9kb3VibGVfYnlfaW1tZWRp YXRlcyAocnR4KTsKK2V4dGVybiBydHggYXJtX2xvYWRfZnVuY3Rpb25fZGVz Y3JpcHRvciAocnR4IGZ1bmNkZXNjKTsKIGV4dGVybiB2b2lkIGFybV9lbWl0 X2NhbGxfaW5zbiAocnR4LCBydHgsIGJvb2wpOwogYm9vbCBkZXRlY3RfY21z ZV9ub25zZWN1cmVfY2FsbCAodHJlZSk7CiBleHRlcm4gY29uc3QgY2hhciAq b3V0cHV0X2NhbGwgKHJ0eCAqKTsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv YXJtL2FybS5jIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKaW5kZXggNDVhYmNk OC4uZWE2ZWEzNyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMK KysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKQEAgLTM0ODUsNiArMzQ4NSwx NCBAQCBhcm1fb3B0aW9uX292ZXJyaWRlICh2b2lkKQogICBpZiAoZmxhZ19w aWMgJiYgVEFSR0VUX1ZYV09SS1NfUlRQKQogICAgIGFybV9waWNfcmVnaXN0 ZXIgPSA5OwogCisgIC8qIElmIGluIEZEUElDIG1vZGUgdGhlbiBmb3JjZSBh cm1fcGljX3JlZ2lzdGVyIHRvIGJlIHI5LiAgKi8KKyAgaWYgKFRBUkdFVF9G RFBJQykKKyAgICB7CisgICAgICBhcm1fcGljX3JlZ2lzdGVyID0gRkRQSUNf UkVHTlVNOworICAgICAgaWYgKFRBUkdFVF9USFVNQjEpCisJc29ycnkgKCJG RFBJQyBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gVGh1bWItMSBtb2RlLiIp OworICAgIH0KKwogICBpZiAoYXJtX3BpY19yZWdpc3Rlcl9zdHJpbmcgIT0g TlVMTCkKICAgICB7CiAgICAgICBpbnQgcGljX3JlZ2lzdGVyID0gZGVjb2Rl X3JlZ19uYW1lIChhcm1fcGljX3JlZ2lzdGVyX3N0cmluZyk7CkBAIC03Mjk1 LDYgKzczMDMsMjEgQEAgYXJtX2Z1bmN0aW9uX29rX2Zvcl9zaWJjYWxsICh0 cmVlIGRlY2wsIHRyZWUgZXhwKQogICBpZiAoY2Z1bi0+bWFjaGluZS0+c2li Y2FsbF9ibG9ja2VkKQogICAgIHJldHVybiBmYWxzZTsKIAorICBpZiAoVEFS R0VUX0ZEUElDKQorICAgIHsKKyAgICAgIC8qIEluIEZEUElDLCBuZXZlciB0 YWlsY2FsbCBzb21ldGhpbmcgZm9yIHdoaWNoIHdlIGhhdmUgbm8gZGVjbDoK KwkgdGhlIHRhcmdldCBmdW5jdGlvbiBjb3VsZCBiZSBpbiBhIGRpZmZlcmVu dCBtb2R1bGUsIHJlcXVpcmluZworCSBhIGRpZmZlcmVudCBGRFBJQyByZWdp c3RlciB2YWx1ZS4gICovCisgICAgICBpZiAoZGVjbCA9PSBOVUxMKQorCXJl dHVybiBmYWxzZTsKKworICAgICAgLyogRG9uJ3QgdGFpbGNhbGwgaWYgd2Ug Z28gdGhyb3VnaCB0aGUgUExUIHNpbmNlIHRoZSBGRFBJQworCSByZWdpc3Rl ciBpcyB0aGVuIGNvcnJ1cHRlZCBhbmQgd2UgZG9uJ3QgcmVzdG9yZSBpdCBh ZnRlcgorCSBzdGF0aWMgZnVuY3Rpb24gY2FsbHMuICAqLworICAgICAgaWYg KCF0YXJnZXRtLmJpbmRzX2xvY2FsX3AgKGRlY2wpKQorCXJldHVybiBmYWxz ZTsKKyAgICB9CisKICAgLyogTmV2ZXIgdGFpbGNhbGwgc29tZXRoaW5nIGlm IHdlIGFyZSBnZW5lcmF0aW5nIGNvZGUgZm9yIFRodW1iLTEuICAqLwogICBp ZiAoVEFSR0VUX1RIVU1CMSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC03NTAx LDYgKzc1MjQsMjQgQEAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKHJ0eCBwaWNf cmVnLCBib29sIGNvbXB1dGVfbm93KQogICAgIH0KIH0KIAorLyogR2VuZXJh dGUgaW5zbnMgdG8gY2FsY3VsYXRlIHRoZSBhZGRyZXNzIG9mIE9SSUcgaW4g cGljIG1vZGUuICAqLworc3RhdGljIHJ0eF9pbnNuICoKK2NhbGN1bGF0ZV9w aWNfYWRkcmVzc19jb25zdGFudCAocnR4IHJlZywgcnR4IHBpY19yZWcsIHJ0 eCBvcmlnKQoreworICBydHggcGF0OworICBydHggbWVtOworCisgIHBhdCA9 IGdlbl9jYWxjdWxhdGVfcGljX2FkZHJlc3MgKHJlZywgcGljX3JlZywgb3Jp Zyk7CisKKyAgLyogTWFrZSB0aGUgTUVNIGFzIGNsb3NlIHRvIGEgY29uc3Rh bnQgYXMgcG9zc2libGUuICAqLworICBtZW0gPSBTRVRfU1JDIChwYXQpOwor ICBnY2NfYXNzZXJ0IChNRU1fUCAobWVtKSAmJiAhTUVNX1ZPTEFUSUxFX1Ag KG1lbSkpOworICBNRU1fUkVBRE9OTFlfUCAobWVtKSA9IDE7CisgIE1FTV9O T1RSQVBfUCAobWVtKSA9IDE7CisKKyAgcmV0dXJuIGVtaXRfaW5zbiAocGF0 KTsKK30KKwogLyogTGVnaXRpbWl6ZSBQSUMgbG9hZCB0byBPUklHIGludG8g UkVHLiAgSWYgUkVHIGlzIE5VTEwsIGEgbmV3IHBzZXVkbyBpcwogICAgY3Jl YXRlZCB0byBob2xkIHRoZSByZXN1bHQgb2YgdGhlIGxvYWQuICBJZiBub3Qg TlVMTCwgUElDX1JFRyBpbmRpY2F0ZXMKICAgIHdoaWNoIHJlZ2lzdGVyIHRv IHVzZSBhcyBQSUMgcmVnaXN0ZXIsIG90aGVyd2lzZSBpdCBpcyBkZWNpZGVk IGJ5IHJlZ2lzdGVyCkBAIC03NTQ1LDI0ICs3NTg2LDEzIEBAIGxlZ2l0aW1p emVfcGljX2FkZHJlc3MgKHJ0eCBvcmlnLCBtYWNoaW5lX21vZGUgbW9kZSwg cnR4IHJlZywgcnR4IHBpY19yZWcsCiAJaW5zbiA9IGFybV9waWNfc3RhdGlj X2FkZHIgKG9yaWcsIHJlZyk7CiAgICAgICBlbHNlCiAJewotCSAgcnR4IHBh dDsKLQkgIHJ0eCBtZW07Ci0KIAkgIC8qIElmIHRoaXMgZnVuY3Rpb24gZG9l c24ndCBoYXZlIGEgcGljIHJlZ2lzdGVyLCBjcmVhdGUgb25lIG5vdy4gICov CiAJICByZXF1aXJlX3BpY19yZWdpc3RlciAocGljX3JlZywgY29tcHV0ZV9u b3cpOwogCiAJICBpZiAocGljX3JlZyA9PSBOVUxMX1JUWCkKIAkgICAgcGlj X3JlZyA9IGNmdW4tPm1hY2hpbmUtPnBpY19yZWc7CiAKLQkgIHBhdCA9IGdl bl9jYWxjdWxhdGVfcGljX2FkZHJlc3MgKHJlZywgcGljX3JlZywgb3JpZyk7 Ci0KLQkgIC8qIE1ha2UgdGhlIE1FTSBhcyBjbG9zZSB0byBhIGNvbnN0YW50 IGFzIHBvc3NpYmxlLiAgKi8KLQkgIG1lbSA9IFNFVF9TUkMgKHBhdCk7Ci0J ICBnY2NfYXNzZXJ0IChNRU1fUCAobWVtKSAmJiAhTUVNX1ZPTEFUSUxFX1Ag KG1lbSkpOwotCSAgTUVNX1JFQURPTkxZX1AgKG1lbSkgPSAxOwotCSAgTUVN X05PVFJBUF9QIChtZW0pID0gMTsKLQotCSAgaW5zbiA9IGVtaXRfaW5zbiAo cGF0KTsKKwkgIGluc24gPSBjYWxjdWxhdGVfcGljX2FkZHJlc3NfY29uc3Rh bnQgKHJlZywgcGljX3JlZywgb3JpZyk7CiAJfQogCiAgICAgICAvKiBQdXQg YSBSRUdfRVFVQUwgbm90ZSBvbiB0aGlzIGluc24sIHNvIHRoYXQgaXQgY2Fu IGJlIG9wdGltaXplZApAQCAtNzcxMSw3ICs3NzQxLDkgQEAgYXJtX2xvYWRf cGljX3JlZ2lzdGVyICh1bnNpZ25lZCBsb25nIHNhdmVkX3JlZ3MgQVRUUklC VVRFX1VOVVNFRCwgcnR4IHBpY19yZWcpCiB7CiAgIHJ0eCBsMSwgbGFiZWxu bywgcGljX3RtcCwgcGljX3J0eDsKIAotICBpZiAoY3J0bC0+dXNlc19waWNf b2Zmc2V0X3RhYmxlID09IDAgfHwgVEFSR0VUX1NJTkdMRV9QSUNfQkFTRSkK KyAgaWYgKGNydGwtPnVzZXNfcGljX29mZnNldF90YWJsZSA9PSAwCisgICAg ICB8fCBUQVJHRVRfU0lOR0xFX1BJQ19CQVNFCisgICAgICB8fCBUQVJHRVRf RkRQSUMpCiAgICAgcmV0dXJuOwogCiAgIGdjY19hc3NlcnQgKGZsYWdfcGlj KTsKQEAgLTc3ODAsMjggKzc4MTIsMTMyIEBAIGFybV9sb2FkX3BpY19yZWdp c3RlciAodW5zaWduZWQgbG9uZyBzYXZlZF9yZWdzIEFUVFJJQlVURV9VTlVT RUQsIHJ0eCBwaWNfcmVnKQogICBlbWl0X3VzZSAocGljX3JlZyk7CiB9CiAK Ky8qIFRyeSB0byBkZXRlcm1pbmUgd2hldGhlciBhbiBvYmplY3QsIHJlZmVy ZW5jZWQgdmlhIE9SSUcsIHdpbGwgYmUKKyAgIHBsYWNlZCBpbiB0aGUgdGV4 dCBvciBkYXRhIHNlZ21lbnQuICBUaGlzIGlzIHVzZWQgaW4gRkRQSUMgbW9k ZSwgdG8KKyAgIGRlY2lkZSB3aGljaCByZWxvY2F0aW9ucyB0byB1c2Ugd2hl biBhY2Nlc3NpbmcgT1JJRy4gICpJU19SRUFET05MWQorICAgaXMgc2V0IHRv IHRydWUgaWYgT1JJRyBpcyBhIHJlYWQtb25seSBsb2NhdGlvbiwgZmFsc2Ug b3RoZXJ3aXNlLgorICAgUmV0dXJuIHRydWUgaWYgd2UgY291bGQgZGV0ZXJt aW5lIHRoZSBsb2NhdGlvbiBvZiBPUklHLCBmYWxzZQorICAgb3RoZXJ3aXNl LiAgKklTX1JFQURPTkxZIGlzIHZhbGlkIG9ubHkgd2hlbiB3ZSByZXR1cm4g dHJ1ZS4gICovCitzdGF0aWMgYm9vbAorYXJtX2lzX3NlZ21lbnRfaW5mb19r bm93biAocnR4IG9yaWcsIGJvb2wgKmlzX3JlYWRvbmx5KQoreworICAqaXNf cmVhZG9ubHkgPSBmYWxzZTsKKworICBpZiAoR0VUX0NPREUgKG9yaWcpID09 IExBQkVMX1JFRikKKyAgICB7CisgICAgICAqaXNfcmVhZG9ubHkgPSB0cnVl OworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgIGlmIChTWU1CT0xf UkVGX1AgKG9yaWcpKQorICAgIHsKKyAgICAgIGlmIChDT05TVEFOVF9QT09M X0FERFJFU1NfUCAob3JpZykpCisJeworCSAgKmlzX3JlYWRvbmx5ID0gdHJ1 ZTsKKwkgIHJldHVybiB0cnVlOworCX0KKyAgICAgIGVsc2UgaWYgKFNZTUJP TF9SRUZfTE9DQUxfUCAob3JpZykKKwkgICAgICAgJiYgIVNZTUJPTF9SRUZf RVhURVJOQUxfUCAob3JpZykKKwkgICAgICAgJiYgU1lNQk9MX1JFRl9ERUNM IChvcmlnKQorCSAgICAgICAmJiAoIURFQ0xfUCAoU1lNQk9MX1JFRl9ERUNM IChvcmlnKSkKKwkJICAgfHwgIURFQ0xfQ09NTU9OIChTWU1CT0xfUkVGX0RF Q0wgKG9yaWcpKSkpCisJeworCSAgdHJlZSBkZWNsID0gU1lNQk9MX1JFRl9E RUNMIChvcmlnKTsKKwkgIHRyZWUgaW5pdCA9IChUUkVFX0NPREUgKGRlY2wp ID09IFZBUl9ERUNMKQorCSAgICA/IERFQ0xfSU5JVElBTCAoZGVjbCkgOiAo VFJFRV9DT0RFIChkZWNsKSA9PSBDT05TVFJVQ1RPUikKKwkgICAgPyBkZWNs IDogMDsKKwkgIGludCByZWxvYyA9IDA7CisJICBib29sIG5hbWVkX3NlY3Rp b24sIHJlYWRvbmx5OworCisJICBpZiAoaW5pdCAmJiBpbml0ICE9IGVycm9y X21hcmtfbm9kZSkKKwkgICAgcmVsb2MgPSBjb21wdXRlX3JlbG9jX2Zvcl9j b25zdGFudCAoaW5pdCk7CisKKwkgIG5hbWVkX3NlY3Rpb24gPSBUUkVFX0NP REUgKGRlY2wpID09IFZBUl9ERUNMCisJICAgICYmIGxvb2t1cF9hdHRyaWJ1 dGUgKCJzZWN0aW9uIiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSk7CisJICBy ZWFkb25seSA9IGRlY2xfcmVhZG9ubHlfc2VjdGlvbiAoZGVjbCwgcmVsb2Mp OworCisJICAvKiBXZSBkb24ndCBrbm93IHdoZXJlIHRoZSBsaW5rIHNjcmlw dCB3aWxsIHB1dCBhIG5hbWVkCisJICAgICBzZWN0aW9uLCBzbyByZXR1cm4g ZmFsc2UgaW4gc3VjaCBhIGNhc2UuICAqLworCSAgaWYgKG5hbWVkX3NlY3Rp b24pCisJICAgIHJldHVybiBmYWxzZTsKKworCSAgKmlzX3JlYWRvbmx5ID0g cmVhZG9ubHk7CisJICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgLyogV2UgZG9uJ3Qga25vdy4gICovCisJICByZXR1cm4gZmFsc2U7 CisJfQorICAgIH0KKyAgZWxzZQorICAgIGdjY191bnJlYWNoYWJsZSAoKTsK KworICByZXR1cm4gZmFsc2U7Cit9CisKIC8qIEdlbmVyYXRlIGNvZGUgdG8g bG9hZCB0aGUgYWRkcmVzcyBvZiBhIHN0YXRpYyB2YXIgd2hlbiBmbGFnX3Bp YyBpcyBzZXQuICAqLwogc3RhdGljIHJ0eF9pbnNuICoKIGFybV9waWNfc3Rh dGljX2FkZHIgKHJ0eCBvcmlnLCBydHggcmVnKQogewogICBydHggbDEsIGxh YmVsbm8sIG9mZnNldF9ydHg7CisgIHJ0eF9pbnNuICppbnNuOwogCiAgIGdj Y19hc3NlcnQgKGZsYWdfcGljKTsKIAotICAvKiBXZSB1c2UgYW4gVU5TUEVD IHJhdGhlciB0aGFuIGEgTEFCRUxfUkVGIGJlY2F1c2UgdGhpcyBsYWJlbAot ICAgICBuZXZlciBhcHBlYXJzIGluIHRoZSBjb2RlIHN0cmVhbS4gICovCi0g IGxhYmVsbm8gPSBHRU5fSU5UIChwaWNfbGFiZWxubysrKTsKLSAgbDEgPSBn ZW5fcnR4X1VOU1BFQyAoUG1vZGUsIGdlbl9ydHZlYyAoMSwgbGFiZWxubyks IFVOU1BFQ19QSUNfTEFCRUwpOwotICBsMSA9IGdlbl9ydHhfQ09OU1QgKFZP SURtb2RlLCBsMSk7CisgIGJvb2wgaXNfcmVhZG9ubHkgPSBmYWxzZTsKKyAg Ym9vbCBpbmZvX2tub3duID0gZmFsc2U7CisKKyAgaWYgKFRBUkdFVF9GRFBJ QworICAgICAgJiYgU1lNQk9MX1JFRl9QIChvcmlnKQorICAgICAgJiYgIVNZ TUJPTF9SRUZfRlVOQ1RJT05fUCAob3JpZykpCisgICAgaW5mb19rbm93biA9 IGFybV9pc19zZWdtZW50X2luZm9fa25vd24gKG9yaWcsICZpc19yZWFkb25s eSk7CisKKyAgaWYgKFRBUkdFVF9GRFBJQworICAgICAgJiYgU1lNQk9MX1JF Rl9QIChvcmlnKQorICAgICAgJiYgIVNZTUJPTF9SRUZfRlVOQ1RJT05fUCAo b3JpZykKKyAgICAgICYmICFpbmZvX2tub3duKQorICAgIHsKKyAgICAgIC8q IFdlIGRvbid0IGtub3cgd2hlcmUgb3JpZyBpcyBzdG9yZWQsIHNvIHdlIGhh dmUgYmUKKwkgcGVzc2ltaXN0aWMgYW5kIHVzZSBhIEdPVCByZWxvY2F0aW9u LiAgKi8KKyAgICAgIHJ0eCBwaWNfcmVnID0gZ2VuX3J0eF9SRUcgKFBtb2Rl LCBGRFBJQ19SRUdOVU0pOworCisgICAgICBpbnNuID0gY2FsY3VsYXRlX3Bp Y19hZGRyZXNzX2NvbnN0YW50IChyZWcsIHBpY19yZWcsIG9yaWcpOworICAg IH0KKyAgZWxzZSBpZiAoVEFSR0VUX0ZEUElDCisJICAgJiYgU1lNQk9MX1JF Rl9QIChvcmlnKQorCSAgICYmIChTWU1CT0xfUkVGX0ZVTkNUSU9OX1AgKG9y aWcpCisJICAgICAgIHx8IChpbmZvX2tub3duICYmICFpc19yZWFkb25seSkp KQorICAgIHsKKyAgICAgIC8qIFdlIHVzZSB0aGUgR09UT0ZGIHJlbG9jYXRp b24uICAqLworICAgICAgcnR4IHBpY19yZWcgPSBnZW5fcnR4X1JFRyAoUG1v ZGUsIEZEUElDX1JFR05VTSk7CisKKyAgICAgIHJ0eCBsMSA9IGdlbl9ydHhf VU5TUEVDIChQbW9kZSwgZ2VuX3J0dmVjICgxLCBvcmlnKSwgVU5TUEVDX1BJ Q19TWU0pOworICAgICAgZW1pdF9pbnNuIChnZW5fbW92c2kgKHJlZywgbDEp KTsKKyAgICAgIGluc24gPSBlbWl0X2luc24gKGdlbl9hZGRzaTMgKHJlZywg cmVnLCBwaWNfcmVnKSk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAg LyogTm90IEZEUElDLCBub3QgU1lNQk9MX1JFRl9QIG9yIHJlYWRvbmx5OiB3 ZSBjYW4gdXNlCisJIFBDLXJlbGF0aXZlIGFjY2Vzcy4gICovCisgICAgICAv KiBXZSB1c2UgYW4gVU5TUEVDIHJhdGhlciB0aGFuIGEgTEFCRUxfUkVGIGJl Y2F1c2UgdGhpcyBsYWJlbAorCSBuZXZlciBhcHBlYXJzIGluIHRoZSBjb2Rl IHN0cmVhbS4gICovCisgICAgICBsYWJlbG5vID0gR0VOX0lOVCAocGljX2xh YmVsbm8rKyk7CisgICAgICBsMSA9IGdlbl9ydHhfVU5TUEVDIChQbW9kZSwg Z2VuX3J0dmVjICgxLCBsYWJlbG5vKSwgVU5TUEVDX1BJQ19MQUJFTCk7Cisg ICAgICBsMSA9IGdlbl9ydHhfQ09OU1QgKFZPSURtb2RlLCBsMSk7CisKKyAg ICAgIC8qIE9uIHRoZSBBUk0gdGhlIFBDIHJlZ2lzdGVyIGNvbnRhaW5zICdk b3QgKyA4JyBhdCB0aGUgdGltZSBvZiB0aGUKKwkgYWRkaXRpb24sIG9uIHRo ZSBUaHVtYiBpdCBpcyAnZG90ICsgNCcuICAqLworICAgICAgb2Zmc2V0X3J0 eCA9IHBsdXNfY29uc3RhbnQgKFBtb2RlLCBsMSwgVEFSR0VUX0FSTSA/IDgg OiA0KTsKKyAgICAgIG9mZnNldF9ydHggPSBnZW5fcnR4X1VOU1BFQyAoUG1v ZGUsIGdlbl9ydHZlYyAoMiwgb3JpZywgb2Zmc2V0X3J0eCksCisJCQkJICAg VU5TUEVDX1NZTUJPTF9PRkZTRVQpOworICAgICAgb2Zmc2V0X3J0eCA9IGdl bl9ydHhfQ09OU1QgKFBtb2RlLCBvZmZzZXRfcnR4KTsKIAotICAvKiBPbiB0 aGUgQVJNIHRoZSBQQyByZWdpc3RlciBjb250YWlucyAnZG90ICsgOCcgYXQg dGhlIHRpbWUgb2YgdGhlCi0gICAgIGFkZGl0aW9uLCBvbiB0aGUgVGh1bWIg aXQgaXMgJ2RvdCArIDQnLiAgKi8KLSAgb2Zmc2V0X3J0eCA9IHBsdXNfY29u c3RhbnQgKFBtb2RlLCBsMSwgVEFSR0VUX0FSTSA/IDggOiA0KTsKLSAgb2Zm c2V0X3J0eCA9IGdlbl9ydHhfVU5TUEVDIChQbW9kZSwgZ2VuX3J0dmVjICgy LCBvcmlnLCBvZmZzZXRfcnR4KSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVTlNQRUNfU1lNQk9MX09GRlNFVCk7Ci0gIG9mZnNldF9ydHgg PSBnZW5fcnR4X0NPTlNUIChQbW9kZSwgb2Zmc2V0X3J0eCk7CisgICAgICBp bnNuID0gZW1pdF9pbnNuIChnZW5fcGljX2xvYWRfYWRkcl91bmlmaWVkIChy ZWcsIG9mZnNldF9ydHgsCisJCQkJCQkgICBsYWJlbG5vKSk7CisgICAgfQog Ci0gIHJldHVybiBlbWl0X2luc24gKGdlbl9waWNfbG9hZF9hZGRyX3VuaWZp ZWQgKHJlZywgb2Zmc2V0X3J0eCwgbGFiZWxubykpOworICByZXR1cm4gaW5z bjsKIH0KIAogLyogUmV0dXJuIG5vbnplcm8gaWYgWCBpcyB2YWxpZCBhcyBh biBBUk0gc3RhdGUgYWRkcmVzc2luZyByZWdpc3Rlci4gICovCkBAIC04NTEw LDcgKzg2NDYsNyBAQCBsb2FkX3Rsc19vcGVyYW5kIChydHggeCwgcnR4IHJl ZykKIHN0YXRpYyBydHhfaW5zbiAqCiBhcm1fY2FsbF90bHNfZ2V0X2FkZHIg KHJ0eCB4LCBydHggcmVnLCBydHggKnZhbHVlcCwgaW50IHJlbG9jKQogewot ICBydHggbGFiZWwsIGxhYmVsbm8sIHN1bTsKKyAgcnR4IGxhYmVsLCBsYWJl bG5vID0gTlVMTF9SVFgsIHN1bTsKIAogICBnY2NfYXNzZXJ0IChyZWxvYyAh PSBUTFNfREVTQ1NFUSk7CiAgIHN0YXJ0X3NlcXVlbmNlICgpOwpAQCAtMTYx MTIsOSArMTYyNDgsMzIgQEAgZ2V0X2p1bXBfdGFibGVfc2l6ZSAocnR4X2p1 bXBfdGFibGVfZGF0YSAqaW5zbikKICAgcmV0dXJuIDA7CiB9CiAKKy8qIEVt aXQgaW5zbnMgdG8gbG9hZCB0aGUgZnVuY3Rpb24gYWRkcmVzcyBmcm9tIEZV TkNERVNDIChhbiBGRFBJQworICAgZnVuY3Rpb24gZGVzY3JpcHRvcikgaW50 byBhIHJlZ2lzdGVyIGFuZCB0aGUgR09UIGFkZHJlc3MgaW50byB0aGUKKyAg IEZEUElDIHJlZ2lzdGVyLCByZXR1cm5pbmcgYW4gcnR4IGZvciB0aGUgcmVn aXN0ZXIgaG9sZGluZyB0aGUKKyAgIGZ1bmN0aW9uIGFkZHJlc3MuICAqLwor CitydHgKK2FybV9sb2FkX2Z1bmN0aW9uX2Rlc2NyaXB0b3IgKHJ0eCBmdW5j ZGVzYykKK3sKKyAgcnR4IGZuYWRkcl9yZWcgPSBnZW5fcmVnX3J0eCAoUG1v ZGUpOworICBydHggcGljX3JlZyA9IGdlbl9ydHhfUkVHIChQbW9kZSwgRkRQ SUNfUkVHTlVNKTsKKyAgcnR4IGZuYWRkciA9IGdlbl9ydHhfTUVNIChQbW9k ZSwgZnVuY2Rlc2MpOworICBydHggZ290YWRkciA9IGdlbl9ydHhfTUVNIChQ bW9kZSwgcGx1c19jb25zdGFudCAoUG1vZGUsIGZ1bmNkZXNjLCA0KSk7CisK KyAgZW1pdF9tb3ZlX2luc24gKGZuYWRkcl9yZWcsIGZuYWRkcik7CisKKyAg LyogVGhlIEFCSSByZXF1aXJlcyB0aGUgZW50cnkgcG9pbnQgYWRkcmVzcyB0 byBiZSBsb2FkZWQgZmlyc3QsIGJ1dAorICAgICBzaW5jZSB3ZSBjYW5ub3Qg c3VwcG9ydCBsYXp5IGJpbmRpbmcgZm9yIGxhY2sgb2YgYXRvbWljIGxvYWQg b2YKKyAgICAgdHdvIDMyLWJpdHMgdmFsdWVzLCB3ZSBkbyBub3QgbmVlZCB0 byBib3RoZXIgdG8gcHJldmVudCB0aGUKKyAgICAgcHJldmlvdXMgbG9hZCBm cm9tIGJlaW5nIG1vdmVkIGFmdGVyIHRoYXQgb2YgdGhlIEdPVCBhZGRyZXNz LiAgKi8KKyAgZW1pdF9pbnNuIChnZW5fcmVzdG9yZV9waWNfcmVnaXN0ZXJf YWZ0ZXJfY2FsbCAocGljX3JlZywgZ290YWRkcikpOworCisgIHJldHVybiBm bmFkZHJfcmVnOworfQorCiAvKiBSZXR1cm4gdGhlIG1heGltdW0gYW1vdW50 IG9mIHBhZGRpbmcgdGhhdCB3aWxsIGJlIGluc2VydGVkIGJlZm9yZQogICAg bGFiZWwgTEFCRUwuICAqLwotCiBzdGF0aWMgSE9TVF9XSURFX0lOVAogZ2V0 X2xhYmVsX3BhZGRpbmcgKHJ0eCBsYWJlbCkKIHsKQEAgLTE4MjQ5LDYgKzE4 NDA4LDEyIEBAIGFybV9lbWl0X2NhbGxfaW5zbiAocnR4IHBhdCwgcnR4IGFk ZHIsIGJvb2wgc2liY2FsbCkKICAgICAgIHVzZV9yZWcgKCZDQUxMX0lOU05f RlVOQ1RJT05fVVNBR0UgKGluc24pLCBjZnVuLT5tYWNoaW5lLT5waWNfcmVn KTsKICAgICB9CiAKKyAgaWYgKFRBUkdFVF9GRFBJQykKKyAgICB7CisgICAg ICBydHggZmRwaWNfcmVnID0gZ2VuX3J0eF9SRUcgKFBtb2RlLCBGRFBJQ19S RUdOVU0pOworICAgICAgdXNlX3JlZyAoJkNBTExfSU5TTl9GVU5DVElPTl9V U0FHRSAoaW5zbiksIGZkcGljX3JlZyk7CisgICAgfQorCiAgIGlmIChUQVJH RVRfQUFQQ1NfQkFTRUQpCiAgICAgewogICAgICAgLyogRm9yIEFBUENTLCBJ UCBhbmQgQ0MgY2FuIGJlIGNsb2JiZXJlZCBieSB2ZW5lZXJzIGluc2VydGVk IGJ5IHRoZQpAQCAtMjMwNjksOSArMjMyMzQsMzcgQEAgYXJtX2Fzc2VtYmxl X2ludGVnZXIgKHJ0eCB4LCB1bnNpZ25lZCBpbnQgc2l6ZSwgaW50IGFsaWdu ZWRfcCkKIAkJICAmJiAoIVNZTUJPTF9SRUZfTE9DQUxfUCAoeCkKIAkJICAg ICAgfHwgKFNZTUJPTF9SRUZfREVDTCAoeCkKIAkJCSAgPyBERUNMX1dFQUsg KFNZTUJPTF9SRUZfREVDTCAoeCkpIDogMCkpKSkKLQkgICAgZnB1dHMgKCIo R09UKSIsIGFzbV9vdXRfZmlsZSk7CisJICAgIHsKKwkgICAgICBpZiAoVEFS R0VUX0ZEUElDICYmIFNZTUJPTF9SRUZfRlVOQ1RJT05fUCAoeCkpCisJCWZw dXRzICgiKEdPVEZVTkNERVNDKSIsIGFzbV9vdXRfZmlsZSk7CisJICAgICAg ZWxzZQorCQlmcHV0cyAoIihHT1QpIiwgYXNtX291dF9maWxlKTsKKwkgICAg fQogCSAgZWxzZQotCSAgICBmcHV0cyAoIihHT1RPRkYpIiwgYXNtX291dF9m aWxlKTsKKwkgICAgeworCSAgICAgIGlmIChUQVJHRVRfRkRQSUMgJiYgU1lN Qk9MX1JFRl9GVU5DVElPTl9QICh4KSkKKwkJZnB1dHMgKCIoR09UT0ZGRlVO Q0RFU0MpIiwgYXNtX291dF9maWxlKTsKKwkgICAgICBlbHNlCisJCXsKKwkJ ICBib29sIGlzX3JlYWRvbmx5OworCisJCSAgaWYgKGFybV9pc19zZWdtZW50 X2luZm9fa25vd24gKHgsICZpc19yZWFkb25seSkpCisJCSAgICBmcHV0cyAo IihHT1RPRkYpIiwgYXNtX291dF9maWxlKTsKKwkJICBlbHNlCisJCSAgICBm cHV0cyAoIihHT1QpIiwgYXNtX291dF9maWxlKTsKKwkJfQorCSAgICB9CisJ fQorCisgICAgICAvKiBGb3IgRkRQSUMgd2UgYWxzbyBoYXZlIHRvIG1hcmsg c3ltYm9sIGZvciAuZGF0YSBzZWN0aW9uLiAgKi8KKyAgICAgIGlmIChUQVJH RVRfRkRQSUMKKwkgICYmIE5FRURfR09UX1JFTE9DCisJICAmJiBmbGFnX3Bp YworCSAgJiYgIW1ha2luZ19jb25zdF90YWJsZQorCSAgJiYgU1lNQk9MX1JF Rl9QICh4KSkKKwl7CisJICBpZiAoU1lNQk9MX1JFRl9GVU5DVElPTl9QICh4 KSkKKwkgICAgZnB1dHMgKCIoRlVOQ0RFU0MpIiwgYXNtX291dF9maWxlKTsK IAl9CiAgICAgICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsKICAgICAg IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJt LmggYi9nY2MvY29uZmlnL2FybS9hcm0uaAppbmRleCA0ODY2ZTFlLi43YjUw ZWY1IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9hcm0uaAorKysgYi9n Y2MvY29uZmlnL2FybS9hcm0uaApAQCAtODkyLDYgKzg5Miw5IEBAIGV4dGVy biBpbnQgYXJtX2FyY2hfY21zZTsKICAgIFBhc2NhbCksIHNvIHRoZSBmb2xs b3dpbmcgaXMgbm90IHRydWUuICAqLwogI2RlZmluZSBTVEFUSUNfQ0hBSU5f UkVHTlVNCTEyCiAKKy8qIHI5IGlzIHRoZSBGRFBJQyByZWdpc3RlciAoYmFz ZSByZWdpc3RlciBmb3IgR09UIGFuZCBGVU5DREVTQyBhY2Nlc3NlcykuICAq LworI2RlZmluZSBGRFBJQ19SRUdOVU0JCTkKKwogLyogRGVmaW5lIHRoaXMg dG8gYmUgd2hlcmUgdGhlIHJlYWwgZnJhbWUgcG9pbnRlciBpcyBpZiBpdCBp cyBub3QgcG9zc2libGUgdG8KICAgIHdvcmsgb3V0IHRoZSBvZmZzZXQgYmV0 d2VlbiB0aGUgZnJhbWUgcG9pbnRlciBhbmQgdGhlIGF1dG9tYXRpYyB2YXJp YWJsZXMKICAgIHVudGlsIGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRpb24gaGFz IHRha2VuIHBsYWNlLiAgRlJBTUVfUE9JTlRFUl9SRUdOVU0KQEAgLTE5NDgs NiArMTk1MSwxMCBAQCBleHRlcm4gdW5zaWduZWQgYXJtX3BpY19yZWdpc3Rl cjsKICAgIGRhdGEgYWRkcmVzc2VzIGluIG1lbW9yeS4gICovCiAjZGVmaW5l IFBJQ19PRkZTRVRfVEFCTEVfUkVHTlVNIGFybV9waWNfcmVnaXN0ZXIKIAor LyogRm9yIEZEUElDLCB0aGUgRkRQSUMgcmVnaXN0ZXIgaXMgY2FsbC1jbG9i YmVyZWQgKG90aGVyd2lzZSBQTFQKKyAgIGVudHJpZXMgd291bGQgbmVlZCB0 byBoYW5kbGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgaXQpLiAgKi8KKyNkZWZp bmUgUElDX09GRlNFVF9UQUJMRV9SRUdfQ0FMTF9DTE9CQkVSRUQgVEFSR0VU X0ZEUElDCisKIC8qIFdlIGNhbid0IGRpcmVjdGx5IGFjY2VzcyBhbnl0aGlu ZyB0aGF0IGNvbnRhaW5zIGEgc3ltYm9sLAogICAgbm9yIGNhbiB3ZSBpbmRp cmVjdCB2aWEgdGhlIGNvbnN0YW50IHBvb2wuICBPbmUgZXhjZXB0aW9uIGlz CiAgICBVTlNQRUNfVExTLCB3aGljaCBpcyBhbHdheXMgUElDLiAgKi8KZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS5tZCBiL2djYy9jb25maWcv YXJtL2FybS5tZAppbmRleCAwYWVjZDAzLi5iMGViYjEzIDEwMDY0NAotLS0g YS9nY2MvY29uZmlnL2FybS9hcm0ubWQKKysrIGIvZ2NjL2NvbmZpZy9hcm0v YXJtLm1kCkBAIC04MTQwLDYgKzgxNDAsMTEgQEAKIAk6ICFSRUdfUCAoY2Fs bGVlKSkKICAgICAgIFhFWFAgKG9wZXJhbmRzWzBdLCAwKSA9IGZvcmNlX3Jl ZyAoUG1vZGUsIGNhbGxlZSk7CiAKKyAgICBpZiAoVEFSR0VUX0ZEUElDICYm ICFTWU1CT0xfUkVGX1AgKFhFWFAgKG9wZXJhbmRzWzBdLCAwKSkpCisJLyog SW5kaXJlY3QgY2FsbDogc2V0IHI5IHdpdGggRkRQSUMgdmFsdWUgb2YgY2Fs bGVlLiAgKi8KKwlYRVhQIChvcGVyYW5kc1swXSwgMCkKKwkgID0gYXJtX2xv YWRfZnVuY3Rpb25fZGVzY3JpcHRvciAoWEVYUCAob3BlcmFuZHNbMF0sIDAp KTsKKwogICAgIGlmIChkZXRlY3RfY21zZV9ub25zZWN1cmVfY2FsbCAoYWRk cikpCiAgICAgICB7CiAJcGF0ID0gZ2VuX25vbnNlY3VyZV9jYWxsX2ludGVy bmFsIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCkBAIC04MTUxLDEwICs4 MTU2LDMzIEBACiAJcGF0ID0gZ2VuX2NhbGxfaW50ZXJuYWwgKG9wZXJhbmRz WzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOwogCWFybV9lbWl0X2Nh bGxfaW5zbiAocGF0LCBYRVhQIChvcGVyYW5kc1swXSwgMCksIGZhbHNlKTsK ICAgICAgIH0KKworICAgIC8qIFJlc3RvcmUgRkRQSUMgcmVnaXN0ZXIgKHI5 KSBhZnRlciBjYWxsLiAgKi8KKyAgICBpZiAoVEFSR0VUX0ZEUElDKQorICAg ICAgeworCXJ0eCBmZHBpY19yZWcgPSBnZW5fcnR4X1JFRyAoUG1vZGUsIEZE UElDX1JFR05VTSk7CisJcnR4IGluaXRpYWxfZmRwaWNfcmVnID0KKwkgICAg Z2V0X2hhcmRfcmVnX2luaXRpYWxfdmFsIChQbW9kZSwgRkRQSUNfUkVHTlVN KTsKKworCWVtaXRfaW5zbiAoZ2VuX3Jlc3RvcmVfcGljX3JlZ2lzdGVyX2Fm dGVyX2NhbGwgKGZkcGljX3JlZywKKwkJCQkJCQlpbml0aWFsX2ZkcGljX3Jl ZykpOworICAgICAgfQorCiAgICAgRE9ORTsKICAgfSIKICkKIAorKGRlZmlu ZV9pbnNuICJyZXN0b3JlX3BpY19yZWdpc3Rlcl9hZnRlcl9jYWxsIgorICBb KHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJzX3JlZ2lzdGVyX29wZXJhbmQi ICIrcixyIikKKyAgICAgICAgKHVuc3BlYzpTSSBbKG1hdGNoX2R1cCAwKQor ICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpTSSAxICJub25p bW1lZGlhdGVfb3BlcmFuZCIgInIsbSIpXQorICAgICAgICAgICAgICAgICAg IFVOU1BFQ19QSUNfUkVTVE9SRSkpXQorICAiIgorICAiQAorICBtb3ZcdCUw LCAlMQorICBsZHJcdCUwLCAlMSIKKykKKwogKGRlZmluZV9leHBhbmQgImNh bGxfaW50ZXJuYWwiCiAgIFsocGFyYWxsZWwgWyhjYWxsIChtYXRjaF9vcGVy YW5kIDAgIm1lbW9yeV9vcGVyYW5kIiAiIikKIAkgICAgICAgICAgICAobWF0 Y2hfb3BlcmFuZCAxICJnZW5lcmFsX29wZXJhbmQiICIiKSkKQEAgLTgyMjgs NiArODI1NiwxMSBAQAogCTogIVJFR19QIChjYWxsZWUpKQogICAgICAgWEVY UCAob3BlcmFuZHNbMV0sIDApID0gZm9yY2VfcmVnIChQbW9kZSwgY2FsbGVl KTsKIAorICAgIGlmIChUQVJHRVRfRkRQSUMgJiYgIVNZTUJPTF9SRUZfUCAo WEVYUCAob3BlcmFuZHNbMV0sIDApKSkKKwkvKiBJbmRpcmVjdCBjYWxsOiBz ZXQgcjkgd2l0aCBGRFBJQyB2YWx1ZSBvZiBjYWxsZWUuICAqLworCVhFWFAg KG9wZXJhbmRzWzFdLCAwKQorCSAgPSBhcm1fbG9hZF9mdW5jdGlvbl9kZXNj cmlwdG9yIChYRVhQIChvcGVyYW5kc1sxXSwgMCkpOworCiAgICAgaWYgKGRl dGVjdF9jbXNlX25vbnNlY3VyZV9jYWxsIChhZGRyKSkKICAgICAgIHsKIAlw YXQgPSBnZW5fbm9uc2VjdXJlX2NhbGxfdmFsdWVfaW50ZXJuYWwgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwKQEAgLTgyNDAsNiArODI3MywxOCBAQAog CQkJCSAgICAgICBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pOwogCWFybV9l bWl0X2NhbGxfaW5zbiAocGF0LCBYRVhQIChvcGVyYW5kc1sxXSwgMCksIGZh bHNlKTsKICAgICAgIH0KKworICAgIC8qIFJlc3RvcmUgRkRQSUMgcmVnaXN0 ZXIgKHI5KSBhZnRlciBjYWxsLiAgKi8KKyAgICBpZiAoVEFSR0VUX0ZEUElD KQorICAgICAgeworCXJ0eCBmZHBpY19yZWcgPSBnZW5fcnR4X1JFRyAoUG1v ZGUsIEZEUElDX1JFR05VTSk7CisJcnR4IGluaXRpYWxfZmRwaWNfcmVnID0K KwkgICAgZ2V0X2hhcmRfcmVnX2luaXRpYWxfdmFsIChQbW9kZSwgRkRQSUNf UkVHTlVNKTsKKworCWVtaXRfaW5zbiAoZ2VuX3Jlc3RvcmVfcGljX3JlZ2lz dGVyX2FmdGVyX2NhbGwgKGZkcGljX3JlZywKKwkJCQkJCQlpbml0aWFsX2Zk cGljX3JlZykpOworICAgICAgfQorCiAgICAgRE9ORTsKICAgfSIKICkKQEAg LTg1ODIsNyArODYyNyw3IEBACiAJCSAgICAoY29uc3RfaW50IDApKQogCSAg ICAgIChtYXRjaF9vcGVyYW5kIDEgIiIgIiIpCiAJICAgICAgKG1hdGNoX29w ZXJhbmQgMiAiIiAiIildKV0KLSAgIlRBUkdFVF9FSVRIRVIiCisgICJUQVJH RVRfRUlUSEVSICYmICFUQVJHRVRfRkRQSUMiCiAgICIKICAgewogICAgIGlu dCBpOwpAQCAtODY0OSw3ICs4Njk0LDcgQEAKIChkZWZpbmVfZXhwYW5kICJ1 bnR5cGVkX3JldHVybiIKICAgWyhtYXRjaF9vcGVyYW5kOkJMSyAwICJtZW1v cnlfb3BlcmFuZCIgIiIpCiAgICAobWF0Y2hfb3BlcmFuZCAxICIiICIiKV0K LSAgIlRBUkdFVF9FSVRIRVIiCisgICJUQVJHRVRfRUlUSEVSICYmICFUQVJH RVRfRkRQSUMiCiAgICIKICAgewogICAgIGludCBpOwpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5tZCBiL2djYy9jb25maWcvYXJtL3Vu c3BlY3MubWQKaW5kZXggMTc0YmNjNS4uYmRhMzVkNSAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5tZAorKysgYi9nY2MvY29uZmlnL2Fy bS91bnNwZWNzLm1kCkBAIC04OSw2ICs4OSw3IEBACiAgIFVOU1BFQ19TUF9T RVQJCTsgUmVwcmVzZW50IHRoZSBzZXR0aW5nIG9mIHN0YWNrIHByb3RlY3Rv cidzIGNhbmFyeQogICBVTlNQRUNfU1BfVEVTVAk7IFJlcHJlc2VudCB0aGUg dGVzdGluZyBvZiBzdGFjayBwcm90ZWN0b3IncyBjYW5hcnkKIAkJCTsgYWdh aW5zdCB0aGUgZ3VhcmQuCisgIFVOU1BFQ19QSUNfUkVTVE9SRQk7IFVzZSB0 byByZXN0b3JlIGZkcGljIHJlZ2lzdGVyCiBdKQogCiAoZGVmaW5lX2NfZW51 bSAidW5zcGVjIiBbCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYXJtL2ZwMTYtYWFwY3MtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FybS9mcDE2LWFhcGNzLTIuYwppbmRleCA0NzUzZTM2Li41MWE3 NmZjIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYXJt L2ZwMTYtYWFwY3MtMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hcm0vZnAxNi1hYXBjcy0yLmMKQEAgLTE3LDUgKzE3LDUgQEAgRiAoX19m cDE2IGEsIF9fZnAxNiBiLCBfX2ZwMTYgYykKIH0KIAogLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHttb3ZcdHJbMC05XSssIHJbMC0y XX0gMyB9IH0gICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt dGltZXMge21vdlx0cjEsIHIwfSAxIH0gfSAgKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci10aW1lcyB7bW92XHRyMSwgclswM119IDEgfSB9 ICAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtt b3ZcdHIwLCByWzAtOV0rfSAyIH0gfSAgKi8KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hcm0vZnAxNi1hYXBjcy00LmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYXJtL2ZwMTYtYWFwY3MtNC5jCmluZGV4 IDQxYzdhYjcuLmFlNjVmYjggMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hcm0vZnAxNi1hYXBjcy00LmMKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FybS9mcDE2LWFhcGNzLTQuYwpAQCAtMTYsNSAr MTYsNSBAQCBGIChfX2ZwMTYgYSwgX19mcDE2IGIsIF9fZnAxNiBjKQogfQog CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge21vdlx0 clswLTldKywgclswLTJdfSAzIH0gfSAgKi8KLS8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyB7bW92XHRyMSwgcjB9IDEgfSB9ICAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHttb3ZcdHIx LCByWzAzXX0gMSB9IH0gICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMge21vdlx0cjAsIHJbMC05XSt9IDIgfSB9ICAqLwo= --000000000000db63d50591977b37--