From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5244 invoked by alias); 20 Aug 2018 17:37:17 -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 5230 invoked by uid 89); 20 Aug 2018 17:37:16 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=non, steve, Steve, bc X-HELO: NAM02-CY1-obe.outbound.protection.outlook.com Received: from mail-cys01nam02on0067.outbound.protection.outlook.com (HELO NAM02-CY1-obe.outbound.protection.outlook.com) (104.47.37.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 20 Aug 2018 17:37:12 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zpRNbN6IE2wqMbJk2F0c8bAaRxnKt676NZP5qCbubcw=; b=eULhXi0BSLg8OeNkA/LY4nGrBkGc2sSteFWAbuxHCi6M4FGD4JD50dvEhxd/K+m5OXuQ4WSMjlFcP4tLzr2awmbo7/9gbqq/PntIL6U+XVJAc/CNm0SmCVTeRqbE25yLHlfa86us5ZLyIGKZKr65iZegF446UnFmGlJCkSToJGE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Received: from sellcey-dt.caveonetworks.com (50.233.148.155) by BL0PR07MB5028.namprd07.prod.outlook.com (2603:10b6:208:49::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1059.19; Mon, 20 Aug 2018 17:37:07 +0000 Message-ID: <1534786623.20144.12.camel@cavium.com> Subject: Re: [Patch][Aarch64] Implement Aarch64 SIMD ABI and aarch64_vector_pcs attribute From: Steve Ellcey Reply-To: sellcey@cavium.com To: Segher Boessenkool Cc: Kyrill Tkachov , gcc-patches , Wilco Dijkstra , Richard Sandiford , Richard Earnshaw , James Greenhalgh , Marcus Shawcroft Date: Mon, 20 Aug 2018 17:37:00 -0000 In-Reply-To: <20180807171509.GH31204@gate.crashing.org> References: <1533075888.3879.14.camel@cavium.com> <5B61A40E.1040501@foss.arm.com> <1533593632.3879.90.camel@cavium.com> <20180807171509.GH31204@gate.crashing.org> Content-Type: multipart/mixed; boundary="=-Ye7u5v+Vj4anM6i7YJhh" Mime-Version: 1.0 Return-Path: sellcey@cavium.com Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-SW-Source: 2018-08/txt/msg01168.txt.bz2 --=-Ye7u5v+Vj4anM6i7YJhh Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Content-length: 2384 On Tue, 2018-08-07 at 12:15 -0500, Segher Boessenkool wrote: > > +/* { dg-final { scan-assembler-not "\[ \t\]stp\tq\[01234567\]" } } > > */ > That's [0-7] but maybe you find [01234567] more readable here. Segher,  I fixed all the issues you pointed out except this one.  Since there are some uses of non consecutive numbers in one of the tests I  decided to leave [01234567] instead of using [0-7].  Here is the  latest version of the patch, there are no semantic changes, just syntactical ones to address the issues that you pointed out. Steve Ellcey sellcey@cavium.com 2018-08-20  Steve Ellcey   * config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p): New prototype. (aarch64_epilogue_uses): Ditto. * config/aarch64/aarch64.c (aarch64_attribute_table): New array. (aarch64_simd_decl_p): New function. (aarch64_reg_save_mode): New function. (aarch64_is_simd_call_p): New function. (aarch64_function_ok_for_sibcall): Check for simd calls. (aarch64_layout_frame): Check for simd function. (aarch64_gen_storewb_pair): Handle E_TFmode. (aarch64_push_regs): Use aarch64_reg_save_mode to get mode. (aarch64_gen_loadwb_pair): Handle E_TFmode. (aarch64_pop_regs): Use aarch64_reg_save_mode to get mode. (aarch64_gen_store_pair): Handle E_TFmode. (aarch64_gen_load_pair): Ditto. (aarch64_save_callee_saves): Handle different mode sizes. (aarch64_restore_callee_saves): Ditto. (aarch64_components_for_bb): Check for simd function. (aarch64_epilogue_uses): New function. (aarch64_process_components): Check for simd function. (aarch64_expand_prologue): Ditto. (aarch64_expand_epilogue): Ditto. (aarch64_expand_call): Ditto. (TARGET_ATTRIBUTE_TABLE): New define. * config/aarch64/aarch64.h (EPILOGUE_USES): Redefine. (FP_SIMD_SAVED_REGNUM_P): New macro. * config/aarch64/aarch64.md (V23_REGNUM) New constant. (simple_return): New define_expand. (load_pair_dw_tftf): New instruction. (store_pair_dw_tftf): Ditto. (loadwb_pair_): Ditto. ("storewb_pair_): Ditto. 2018-08-20  Steve Ellcey   * gcc.target/aarch64/torture/aarch64-torture.exp: New file. * gcc.target/aarch64/torture/simd-abi-1.c: New test. * gcc.target/aarch64/torture/simd-abi-2.c: Ditto. * gcc.target/aarch64/torture/simd-abi-3.c: Ditto. * gcc.target/aarch64/torture/simd-abi-4.c: Ditto. --=-Ye7u5v+Vj4anM6i7YJhh Content-Disposition: attachment; filename="gcc-vect-abi.patch" Content-Type: text/x-patch; name="gcc-vect-abi.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 27886 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rv cy5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKaW5k ZXggYWY1ZGI5Yy4uOTljOTYyZiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9hYXJj aDY0L2FhcmNoNjQtcHJvdG9zLmgKQEAgLTQyMyw2ICs0MjMsNyBAQCBib29s IGFhcmNoNjRfc3BsaXRfZGltb2RlX2NvbnN0X3N0b3JlIChydHgsIHJ0eCk7 CiBib29sIGFhcmNoNjRfc3ltYm9saWNfYWRkcmVzc19wIChydHgpOwogYm9v bCBhYXJjaDY0X3VpbW0xMl9zaGlmdCAoSE9TVF9XSURFX0lOVCk7CiBib29s IGFhcmNoNjRfdXNlX3JldHVybl9pbnNuX3AgKHZvaWQpOworYm9vbCBhYXJj aDY0X3VzZV9zaW1wbGVfcmV0dXJuX2luc25fcCAodm9pZCk7CiBjb25zdCBj aGFyICphYXJjaDY0X21hbmdsZV9idWlsdGluX3R5cGUgKGNvbnN0X3RyZWUp OwogY29uc3QgY2hhciAqYWFyY2g2NF9vdXRwdXRfY2FzZXNpIChydHggKik7 CiAKQEAgLTUwNyw2ICs1MDgsOCBAQCB2b2lkIGFhcmNoNjRfc3BsaXRfc2lt ZF9tb3ZlIChydHgsIHJ0eCk7CiAvKiBDaGVjayBmb3IgYSBsZWdpdGltYXRl IGZsb2F0aW5nIHBvaW50IGNvbnN0YW50IGZvciBGTU9WLiAgKi8KIGJvb2wg YWFyY2g2NF9mbG9hdF9jb25zdF9yZXByZXNlbnRhYmxlX3AgKHJ0eCk7CiAK K2V4dGVybiBpbnQgYWFyY2g2NF9lcGlsb2d1ZV91c2VzIChpbnQpOworCiAj aWYgZGVmaW5lZCAoUlRYX0NPREUpCiB2b2lkIGFhcmNoNjRfZ2VuX3VubGlr ZWx5X2NicmFuY2ggKGVudW0gcnR4X2NvZGUsIG1hY2hpbmVfbW9kZSBjY19t b2RlLAogCQkJCSAgIHJ0eCBsYWJlbF9yZWYpOwpkaWZmIC0tZ2l0IGEvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYyBiL2djYy9jb25maWcvYWFyY2g2 NC9hYXJjaDY0LmMKaW5kZXggZmEwMTQ3NS4uOWNmZmVjOCAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYworKysgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC5jCkBAIC0xMDI3LDYgKzEwMjcsMTUgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jZXNzb3IgKnNlbGVjdGVkX3R1bmU7 CiAvKiBUaGUgY3VycmVudCB0dW5pbmcgc2V0LiAgKi8KIHN0cnVjdCB0dW5l X3BhcmFtcyBhYXJjaDY0X3R1bmVfcGFyYW1zID0gZ2VuZXJpY190dW5pbmdz OwogCisvKiBUYWJsZSBvZiBtYWNoaW5lIGF0dHJpYnV0ZXMuICAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBhYXJjaDY0X2F0dHJp YnV0ZV90YWJsZVtdID0KK3sKKyAgLyogeyBuYW1lLCBtaW5fbGVuLCBtYXhf bGVuLCBkZWNsX3JlcSwgdHlwZV9yZXEsIGZuX3R5cGVfcmVxLAorICAgICAg IGFmZmVjdHNfdHlwZV9pZGVudGl0eSwgaGFuZGxlciwgZXhjbHVkZSB9ICov CisgIHsgImFhcmNoNjRfdmVjdG9yX3BjcyIsIDAsIDAsIHRydWUsICBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBOVUxMLCBOVUxMIH0sCisgIHsgTlVMTCwgICAg ICAgICAgICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBOVUxMLCBOVUxMIH0KK307CisKICNkZWZpbmUgQUFSQ0g2NF9DUFVfREVG QVVMVF9GTEFHUyAoKHNlbGVjdGVkX2NwdSkgPyBzZWxlY3RlZF9jcHUtPmZs YWdzIDogMCkKIAogLyogQW4gSVNBIGV4dGVuc2lvbiBpbiB0aGUgY28tcHJv Y2Vzc29yIGFuZCBtYWluIGluc3RydWN0aW9uIHNldCBzcGFjZS4gICovCkBA IC0xNDA1LDYgKzE0MTQsMzEgQEAgYWFyY2g2NF9oYXJkX3JlZ25vX21vZGVf b2sgKHVuc2lnbmVkIHJlZ25vLCBtYWNoaW5lX21vZGUgbW9kZSkKICAgcmV0 dXJuIGZhbHNlOwogfQogCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGEg ZGVmaW5pdGlvbiBvZiBhIHZlY3Rvcml6ZWQgc2ltZCBmdW5jdGlvbi4gICov CisKK3N0YXRpYyBib29sCithYXJjaDY0X3NpbWRfZGVjbF9wICh0cmVlIGZu ZGVjbCkKK3sKKyAgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJhYXJjaDY0X3Zl Y3Rvcl9wY3MiLCBERUNMX0FUVFJJQlVURVMgKGZuZGVjbCkpICE9IE5VTEwp CisgICAgcmV0dXJuIHRydWU7CisgIGlmIChsb29rdXBfYXR0cmlidXRlICgi c2ltZCIsIERFQ0xfQVRUUklCVVRFUyAoZm5kZWNsKSkgPT0gTlVMTCkKKyAg ICByZXR1cm4gZmFsc2U7CisgIHJldHVybiAoVkVDVE9SX1RZUEVfUCAoVFJF RV9UWVBFIChUUkVFX1RZUEUgKGZuZGVjbCkpKSk7Cit9CisKKy8qIFJldHVy biB0aGUgbW9kZSBhIHJlZ2lzdGVyIHNhdmUvcmVzdG9yZSBzaG91bGQgdXNl LiAgREltb2RlIGZvciBpbnRlZ2VyCisgICByZWdpc3RlcnMsIERGbW9kZSBm b3IgRlAgcmVnaXN0ZXJzIGluIG5vbi1TSU1EIGZ1bmN0aW9ucyAodGhleSBv bmx5IHNhdmUKKyAgIHRoZSBib3R0b20gaGFsZiBvZiBhIDEyOCBiaXQgcmVn aXN0ZXIpLCBvciBURm1vZGUgZm9yIEZQIHJlZ2lzdGVycyBpbgorICAgU0lN RCBmdW5jdGlvbnMuICAqLworCitzdGF0aWMgbWFjaGluZV9tb2RlCithYXJj aDY0X3JlZ19zYXZlX21vZGUgKHRyZWUgZm5kZWNsLCB1bnNpZ25lZCByZWdu bykKK3sKKyAgcmV0dXJuIEdQX1JFR05VTV9QIChyZWdubykKKwkgICA/IEVf REltb2RlCisJICAgOiAoYWFyY2g2NF9zaW1kX2RlY2xfcCAoZm5kZWNsKSA/ IEVfVEZtb2RlIDogRV9ERm1vZGUpOworfQorCiAvKiBJbXBsZW1lbnQgVEFS R0VUX0hBUkRfUkVHTk9fQ0FMTF9QQVJUX0NMT0JCRVJFRC4gIFRoZSBjYWxs ZWUgb25seSBzYXZlcwogICAgdGhlIGxvd2VyIDY0IGJpdHMgb2YgYSAxMjgt Yml0IHJlZ2lzdGVyLiAgVGVsbCB0aGUgY29tcGlsZXIgdGhlIGNhbGxlZQog ICAgY2xvYmJlcnMgdGhlIHRvcCA2NCBiaXRzIHdoZW4gcmVzdG9yaW5nIHRo ZSBib3R0b20gNjQgYml0cy4gICovCkBAIC0zMjcyLDcgKzMzMDYsOSBAQCBz dGF0aWMgYm9vbAogYWFyY2g2NF9mdW5jdGlvbl9va19mb3Jfc2liY2FsbCAo dHJlZSBkZWNsIEFUVFJJQlVURV9VTlVTRUQsCiAJCQkJIHRyZWUgZXhwIEFU VFJJQlVURV9VTlVTRUQpCiB7Ci0gIC8qIEN1cnJlbnRseSwgYWx3YXlzIHRy dWUuICAqLworICBpZiAoYWFyY2g2NF9zaW1kX2RlY2xfcCAoY2Z1bi0+ZGVj bCkpCisgICAgcmV0dXJuIGZhbHNlOworCiAgIHJldHVybiB0cnVlOwogfQog CkBAIC00MDM1LDYgKzQwNzEsNyBAQCBhYXJjaDY0X2xheW91dF9mcmFtZSAo dm9pZCkKIHsKICAgSE9TVF9XSURFX0lOVCBvZmZzZXQgPSAwOwogICBpbnQg cmVnbm8sIGxhc3RfZnBfcmVnID0gSU5WQUxJRF9SRUdOVU07CisgIGJvb2wg c2ltZF9mdW5jdGlvbiA9IGFhcmNoNjRfc2ltZF9kZWNsX3AgKGNmdW4tPmRl Y2wpOwogCiAgIGlmIChyZWxvYWRfY29tcGxldGVkICYmIGNmdW4tPm1hY2hp bmUtPmZyYW1lLmxhaWRfb3V0KQogICAgIHJldHVybjsKQEAgLTQwNDcsNiAr NDA4NCwxNyBAQCBhYXJjaDY0X2xheW91dF9mcmFtZSAodm9pZCkKICAgY2Z1 bi0+bWFjaGluZS0+ZnJhbWUud2JfY2FuZGlkYXRlMSA9IElOVkFMSURfUkVH TlVNOwogICBjZnVuLT5tYWNoaW5lLT5mcmFtZS53Yl9jYW5kaWRhdGUyID0g SU5WQUxJRF9SRUdOVU07CiAKKyAgLyogSWYgdGhpcyBpcyBhIG5vbi1sZWFm IHNpbWQgZnVuY3Rpb24gd2l0aCBjYWxscyB3ZSBhc3N1bWUgdGhhdAorICAg ICBhdCBsZWFzdCBvbmUgb2YgdGhvc2UgY2FsbHMgaXMgdG8gYSBub24tc2lt ZCBmdW5jdGlvbiBhbmQgdGh1cworICAgICB3ZSBtdXN0IHNhdmUgVjggdG8g VjIzIGluIHRoZSBwcm9sb2d1ZS4gICovCisKKyAgaWYgKHNpbWRfZnVuY3Rp b24gJiYgIWNydGwtPmlzX2xlYWYpCisgICAgeworICAgICAgZm9yIChyZWdu byA9IFYwX1JFR05VTTsgcmVnbm8gPD0gVjMxX1JFR05VTTsgcmVnbm8rKykK KwlpZiAoRlBfU0lNRF9TQVZFRF9SRUdOVU1fUCAocmVnbm8pKQorIAkgIGRm X3NldF9yZWdzX2V2ZXJfbGl2ZSAocmVnbm8sIHRydWUpOworICAgIH0KKwog ICAvKiBGaXJzdCBtYXJrIGFsbCB0aGUgcmVnaXN0ZXJzIHRoYXQgcmVhbGx5 IG5lZWQgdG8gYmUgc2F2ZWQuLi4gICovCiAgIGZvciAocmVnbm8gPSBSMF9S RUdOVU07IHJlZ25vIDw9IFIzMF9SRUdOVU07IHJlZ25vKyspCiAgICAgY2Z1 bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub10gPSBTTE9UX05P VF9SRVFVSVJFRDsKQEAgLTQwNjksNyArNDExNyw4IEBAIGFhcmNoNjRfbGF5 b3V0X2ZyYW1lICh2b2lkKQogCiAgIGZvciAocmVnbm8gPSBWMF9SRUdOVU07 IHJlZ25vIDw9IFYzMV9SRUdOVU07IHJlZ25vKyspCiAgICAgaWYgKGRmX3Jl Z3NfZXZlcl9saXZlX3AgKHJlZ25vKQotCSYmICFjYWxsX3VzZWRfcmVnc1ty ZWdub10pCisJJiYgKCFjYWxsX3VzZWRfcmVnc1tyZWdub10KKwkgICAgfHwg KHNpbWRfZnVuY3Rpb24gJiYgRlBfU0lNRF9TQVZFRF9SRUdOVU1fUCAocmVn bm8pKSkpCiAgICAgICB7CiAJY2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29m ZnNldFtyZWdub10gPSBTTE9UX1JFUVVJUkVEOwogCWxhc3RfZnBfcmVnID0g cmVnbm87CkBAIC00MTA2LDcgKzQxNTUsOCBAQCBhYXJjaDY0X2xheW91dF9m cmFtZSAodm9pZCkKICAgICAgIHsKIAkvKiBJZiB0aGVyZSBpcyBhbiBhbGln bm1lbnQgZ2FwIGJldHdlZW4gaW50ZWdlciBhbmQgZnAgY2FsbGVlLXNhdmVz LAogCSAgIGFsbG9jYXRlIHRoZSBsYXN0IGZwIHJlZ2lzdGVyIHRvIGl0IGlm IHBvc3NpYmxlLiAgKi8KLQlpZiAocmVnbm8gPT0gbGFzdF9mcF9yZWcgJiYg aGFzX2FsaWduX2dhcCAmJiAob2Zmc2V0ICYgOCkgPT0gMCkKKwlpZiAocmVn bm8gPT0gbGFzdF9mcF9yZWcgJiYgaGFzX2FsaWduX2dhcAorCSAgICAmJiAh c2ltZF9mdW5jdGlvbiAmJiAob2Zmc2V0ICYgOCkgPT0gMCkKIAkgIHsKIAkg ICAgY2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub10gPSBt YXhfaW50X29mZnNldDsKIAkgICAgYnJlYWs7CkBAIC00MTE4LDcgKzQxNjgs NyBAQCBhYXJjaDY0X2xheW91dF9mcmFtZSAodm9pZCkKIAllbHNlIGlmIChj ZnVuLT5tYWNoaW5lLT5mcmFtZS53Yl9jYW5kaWRhdGUyID09IElOVkFMSURf UkVHTlVNCiAJCSAmJiBjZnVuLT5tYWNoaW5lLT5mcmFtZS53Yl9jYW5kaWRh dGUxID49IFYwX1JFR05VTSkKIAkgIGNmdW4tPm1hY2hpbmUtPmZyYW1lLndi X2NhbmRpZGF0ZTIgPSByZWdubzsKLQlvZmZzZXQgKz0gVU5JVFNfUEVSX1dP UkQ7CisJb2Zmc2V0ICs9IHNpbWRfZnVuY3Rpb24gPyBVTklUU19QRVJfVlJF RyA6IFVOSVRTX1BFUl9XT1JEOwogICAgICAgfQogCiAgIG9mZnNldCA9IFJP VU5EX1VQIChvZmZzZXQsIFNUQUNLX0JPVU5EQVJZIC8gQklUU19QRVJfVU5J VCk7CkBAIC00MjYxLDYgKzQzMTEsMTAgQEAgYWFyY2g2NF9nZW5fc3RvcmV3 Yl9wYWlyIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGJhc2UsIHJ0eCByZWcs IHJ0eCByZWcyLAogICAgICAgcmV0dXJuIGdlbl9zdG9yZXdiX3BhaXJkZl9k aSAoYmFzZSwgYmFzZSwgcmVnLCByZWcyLAogCQkJCSAgICBHRU5fSU5UICgt YWRqdXN0bWVudCksCiAJCQkJICAgIEdFTl9JTlQgKFVOSVRTX1BFUl9XT1JE IC0gYWRqdXN0bWVudCkpOworICAgIGNhc2UgRV9URm1vZGU6CisgICAgICBy ZXR1cm4gZ2VuX3N0b3Jld2JfcGFpcnRmX2RpIChiYXNlLCBiYXNlLCByZWcs IHJlZzIsCisJCQkJICAgIEdFTl9JTlQgKC1hZGp1c3RtZW50KSwKKwkJCQkg ICAgR0VOX0lOVCAoVU5JVFNfUEVSX1ZSRUcgLSBhZGp1c3RtZW50KSk7CiAg ICAgZGVmYXVsdDoKICAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKICAgICB9 CkBAIC00MjczLDcgKzQzMjcsNyBAQCBzdGF0aWMgdm9pZAogYWFyY2g2NF9w dXNoX3JlZ3MgKHVuc2lnbmVkIHJlZ25vMSwgdW5zaWduZWQgcmVnbm8yLCBI T1NUX1dJREVfSU5UIGFkanVzdG1lbnQpCiB7CiAgIHJ0eF9pbnNuICppbnNu OwotICBtYWNoaW5lX21vZGUgbW9kZSA9IChyZWdubzEgPD0gUjMwX1JFR05V TSkgPyBFX0RJbW9kZSA6IEVfREZtb2RlOworICBtYWNoaW5lX21vZGUgbW9k ZSA9IGFhcmNoNjRfcmVnX3NhdmVfbW9kZSAoY2Z1bi0+ZGVjbCwgcmVnbm8x KTsKIAogICBpZiAocmVnbm8yID09IElOVkFMSURfUkVHTlVNKQogICAgIHJl dHVybiBhYXJjaDY0X3B1c2h3Yl9zaW5nbGVfcmVnIChtb2RlLCByZWdubzEs IGFkanVzdG1lbnQpOwpAQCAtNDMwMyw2ICs0MzU3LDkgQEAgYWFyY2g2NF9n ZW5fbG9hZHdiX3BhaXIgKG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYmFzZSwg cnR4IHJlZywgcnR4IHJlZzIsCiAgICAgY2FzZSBFX0RGbW9kZToKICAgICAg IHJldHVybiBnZW5fbG9hZHdiX3BhaXJkZl9kaSAoYmFzZSwgYmFzZSwgcmVn LCByZWcyLCBHRU5fSU5UIChhZGp1c3RtZW50KSwKIAkJCQkgICBHRU5fSU5U IChVTklUU19QRVJfV09SRCkpOworICAgIGNhc2UgRV9URm1vZGU6CisgICAg ICByZXR1cm4gZ2VuX2xvYWR3Yl9wYWlydGZfZGkgKGJhc2UsIGJhc2UsIHJl ZywgcmVnMiwgR0VOX0lOVCAoYWRqdXN0bWVudCksCisJCQkJICAgR0VOX0lO VCAoVU5JVFNfUEVSX1ZSRUcpKTsKICAgICBkZWZhdWx0OgogICAgICAgZ2Nj X3VucmVhY2hhYmxlICgpOwogICAgIH0KQEAgLTQzMTYsNyArNDM3Myw3IEBA IHN0YXRpYyB2b2lkCiBhYXJjaDY0X3BvcF9yZWdzICh1bnNpZ25lZCByZWdu bzEsIHVuc2lnbmVkIHJlZ25vMiwgSE9TVF9XSURFX0lOVCBhZGp1c3RtZW50 LAogCQkgIHJ0eCAqY2ZpX29wcykKIHsKLSAgbWFjaGluZV9tb2RlIG1vZGUg PSAocmVnbm8xIDw9IFIzMF9SRUdOVU0pID8gRV9ESW1vZGUgOiBFX0RGbW9k ZTsKKyAgbWFjaGluZV9tb2RlIG1vZGUgPSBhYXJjaDY0X3JlZ19zYXZlX21v ZGUgKGNmdW4tPmRlY2wsIHJlZ25vMSk7CiAgIHJ0eCByZWcxID0gZ2VuX3J0 eF9SRUcgKG1vZGUsIHJlZ25vMSk7CiAKICAgKmNmaV9vcHMgPSBhbGxvY19y ZWdfbm90ZSAoUkVHX0NGQV9SRVNUT1JFLCByZWcxLCAqY2ZpX29wcyk7CkBA IC00MzUxLDYgKzQ0MDgsOSBAQCBhYXJjaDY0X2dlbl9zdG9yZV9wYWlyICht YWNoaW5lX21vZGUgbW9kZSwgcnR4IG1lbTEsIHJ0eCByZWcxLCBydHggbWVt MiwKICAgICBjYXNlIEVfREZtb2RlOgogICAgICAgcmV0dXJuIGdlbl9zdG9y ZV9wYWlyX2R3X2RmZGYgKG1lbTEsIHJlZzEsIG1lbTIsIHJlZzIpOwogCisg ICAgY2FzZSBFX1RGbW9kZToKKyAgICAgIHJldHVybiBnZW5fc3RvcmVfcGFp cl9kd190ZnRmIChtZW0xLCByZWcxLCBtZW0yLCByZWcyKTsKKwogICAgIGRl ZmF1bHQ6CiAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CiAgICAgfQpAQCAt NDM3MSw2ICs0NDMxLDkgQEAgYWFyY2g2NF9nZW5fbG9hZF9wYWlyIChtYWNo aW5lX21vZGUgbW9kZSwgcnR4IHJlZzEsIHJ0eCBtZW0xLCBydHggcmVnMiwK ICAgICBjYXNlIEVfREZtb2RlOgogICAgICAgcmV0dXJuIGdlbl9sb2FkX3Bh aXJfZHdfZGZkZiAocmVnMSwgbWVtMSwgcmVnMiwgbWVtMik7CiAKKyAgICBj YXNlIEVfVEZtb2RlOgorICAgICAgcmV0dXJuIGdlbl9sb2FkX3BhaXJfZHdf dGZ0ZiAocmVnMSwgbWVtMSwgcmVnMiwgbWVtMik7CisKICAgICBkZWZhdWx0 OgogICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOwogICAgIH0KQEAgLTQ0MDMs NiArNDQ2NiwxMCBAQCBhYXJjaDY0X3NhdmVfY2FsbGVlX3NhdmVzIChtYWNo aW5lX21vZGUgbW9kZSwgcG9seV9pbnQ2NCBzdGFydF9vZmZzZXQsCiAgIHJ0 eF9pbnNuICppbnNuOwogICB1bnNpZ25lZCByZWdubzsKICAgdW5zaWduZWQg cmVnbm8yOworICBIT1NUX1dJREVfSU5UIG1vZGVfc2l6ZTsKKworICBpZiAo IUdFVF9NT0RFX1NJWkUgKG1vZGUpLmlzX2NvbnN0YW50KCZtb2RlX3NpemUp KQorICAgIGdjY191bnJlYWNoYWJsZSAoKTsKIAogICBmb3IgKHJlZ25vID0g YWFyY2g2NF9uZXh0X2NhbGxlZV9zYXZlIChzdGFydCwgbGltaXQpOwogICAg ICAgIHJlZ25vIDw9IGxpbWl0OwpAQCAtNDQyOCw3ICs0NDk1LDcgQEAgYWFy Y2g2NF9zYXZlX2NhbGxlZV9zYXZlcyAobWFjaGluZV9tb2RlIG1vZGUsIHBv bHlfaW50NjQgc3RhcnRfb2Zmc2V0LAogCiAgICAgICBpZiAocmVnbm8yIDw9 IGxpbWl0CiAJICAmJiAhY2Z1bi0+bWFjaGluZS0+cmVnX2lzX3dyYXBwZWRf c2VwYXJhdGVseVtyZWdubzJdCi0JICAmJiAoKGNmdW4tPm1hY2hpbmUtPmZy YW1lLnJlZ19vZmZzZXRbcmVnbm9dICsgVU5JVFNfUEVSX1dPUkQpCisJICAm JiAoKGNmdW4tPm1hY2hpbmUtPmZyYW1lLnJlZ19vZmZzZXRbcmVnbm9dICsg bW9kZV9zaXplKQogCSAgICAgID09IGNmdW4tPm1hY2hpbmUtPmZyYW1lLnJl Z19vZmZzZXRbcmVnbm8yXSkpCiAKIAl7CkBAIC00NDY5LDYgKzQ1MzYsOSBA QCBhYXJjaDY0X3Jlc3RvcmVfY2FsbGVlX3NhdmVzIChtYWNoaW5lX21vZGUg bW9kZSwKICAgdW5zaWduZWQgcmVnbm87CiAgIHVuc2lnbmVkIHJlZ25vMjsK ICAgcG9seV9pbnQ2NCBvZmZzZXQ7CisgIEhPU1RfV0lERV9JTlQgbW9kZV9z aXplOworCisgIGdjY19hc3NlcnQgKEdFVF9NT0RFX1NJWkUgKG1vZGUpLmlz X2NvbnN0YW50KCZtb2RlX3NpemUpKTsKIAogICBmb3IgKHJlZ25vID0gYWFy Y2g2NF9uZXh0X2NhbGxlZV9zYXZlIChzdGFydCwgbGltaXQpOwogICAgICAg IHJlZ25vIDw9IGxpbWl0OwpAQCAtNDQ5Miw3ICs0NTYyLDcgQEAgYWFyY2g2 NF9yZXN0b3JlX2NhbGxlZV9zYXZlcyAobWFjaGluZV9tb2RlIG1vZGUsCiAK ICAgICAgIGlmIChyZWdubzIgPD0gbGltaXQKIAkgICYmICFjZnVuLT5tYWNo aW5lLT5yZWdfaXNfd3JhcHBlZF9zZXBhcmF0ZWx5W3JlZ25vMl0KLQkgICYm ICgoY2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub10gKyBV TklUU19QRVJfV09SRCkKKwkgICYmICgoY2Z1bi0+bWFjaGluZS0+ZnJhbWUu cmVnX29mZnNldFtyZWdub10gKyBtb2RlX3NpemUpCiAJICAgICAgPT0gY2Z1 bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdubzJdKSkKIAl7CiAJ ICBydHggcmVnMiA9IGdlbl9ydHhfUkVHIChtb2RlLCByZWdubzIpOwpAQCAt NDYyOSwxMyArNDY5OSwxNSBAQCBhYXJjaDY0X2NvbXBvbmVudHNfZm9yX2Ji IChiYXNpY19ibG9jayBiYikKICAgYml0bWFwIGluID0gREZfTElWRV9JTiAo YmIpOwogICBiaXRtYXAgZ2VuID0gJkRGX0xJVkVfQkJfSU5GTyAoYmIpLT5n ZW47CiAgIGJpdG1hcCBraWxsID0gJkRGX0xJVkVfQkJfSU5GTyAoYmIpLT5r aWxsOworICBib29sIHNpbWRfZnVuY3Rpb24gPSBhYXJjaDY0X3NpbWRfZGVj bF9wIChjZnVuLT5kZWNsKTsKIAogICBzYml0bWFwIGNvbXBvbmVudHMgPSBz Yml0bWFwX2FsbG9jIChMQVNUX1NBVkVEX1JFR05VTSArIDEpOwogICBiaXRt YXBfY2xlYXIgKGNvbXBvbmVudHMpOwogCiAgIC8qIEdQUnMgYXJlIHVzZWQg aW4gYSBiYiBpZiB0aGV5IGFyZSBpbiB0aGUgSU4sIEdFTiwgb3IgS0lMTCBz ZXRzLiAgKi8KICAgZm9yICh1bnNpZ25lZCByZWdubyA9IDA7IHJlZ25vIDw9 IExBU1RfU0FWRURfUkVHTlVNOyByZWdubysrKQotICAgIGlmICgoIWNhbGxf dXNlZF9yZWdzW3JlZ25vXSkKKyAgICBpZiAoKCFjYWxsX3VzZWRfcmVnc1ty ZWdub10KKwl8fCAoc2ltZF9mdW5jdGlvbiAmJiBGUF9TSU1EX1NBVkVEX1JF R05VTV9QIChyZWdubykpKQogICAgICAgICYmIChiaXRtYXBfYml0X3AgKGlu LCByZWdubykKIAkgICB8fCBiaXRtYXBfYml0X3AgKGdlbiwgcmVnbm8pCiAJ ICAgfHwgYml0bWFwX2JpdF9wIChraWxsLCByZWdubykpKQpAQCAtNDcwNyw4 ICs0Nzc5LDEwIEBAIGFhcmNoNjRfcHJvY2Vzc19jb21wb25lbnRzIChzYml0 bWFwIGNvbXBvbmVudHMsIGJvb2wgcHJvbG9ndWVfcCkKICAgd2hpbGUgKHJl Z25vICE9IGxhc3RfcmVnbm8pCiAgICAgewogICAgICAgLyogQUFQQ1M2NCBz ZWN0aW9uIDUuMS4yIHJlcXVpcmVzIG9ubHkgdGhlIGJvdHRvbSA2NCBiaXRz IHRvIGJlIHNhdmVkCi0JIHNvIERGbW9kZSBmb3IgdGhlIHZlY3RvciByZWdp c3RlcnMgaXMgZW5vdWdoLiAgKi8KLSAgICAgIG1hY2hpbmVfbW9kZSBtb2Rl ID0gR1BfUkVHTlVNX1AgKHJlZ25vKSA/IEVfREltb2RlIDogRV9ERm1vZGU7 CisJIHNvIERGbW9kZSBmb3IgdGhlIHZlY3RvciByZWdpc3RlcnMgaXMgZW5v dWdoLiAgRm9yIHNpbWQgZnVuY3Rpb25zCisgICAgICAgICB3ZSB3YW50IHRv IHNhdmUgdGhlIGVudGlyZSByZWdpc3Rlci4gICovCisgICAgICBtYWNoaW5l X21vZGUgbW9kZSA9IGFhcmNoNjRfcmVnX3NhdmVfbW9kZSAoY2Z1bi0+ZGVj bCwgcmVnbm8pOworICAgICAgCiAgICAgICBydHggcmVnID0gZ2VuX3J0eF9S RUcgKG1vZGUsIHJlZ25vKTsKICAgICAgIHBvbHlfaW50NjQgb2Zmc2V0ID0g Y2Z1bi0+bWFjaGluZS0+ZnJhbWUucmVnX29mZnNldFtyZWdub107CiAgICAg ICBpZiAoIWZyYW1lX3BvaW50ZXJfbmVlZGVkKQpAQCAtNDczNyw2ICs0ODEx LDcgQEAgYWFyY2g2NF9wcm9jZXNzX2NvbXBvbmVudHMgKHNiaXRtYXAgY29t cG9uZW50cywgYm9vbCBwcm9sb2d1ZV9wKQogCSBtZXJnZWFibGUgd2l0aCB0 aGUgY3VycmVudCBvbmUgaW50byBhIHBhaXIuICAqLwogICAgICAgaWYgKCFz YXRpc2ZpZXNfY29uc3RyYWludF9VbXAgKG1lbSkKIAkgIHx8IEdQX1JFR05V TV9QIChyZWdubykgIT0gR1BfUkVHTlVNX1AgKHJlZ25vMikKKwkgIHx8IChh YXJjaDY0X3NpbWRfZGVjbF9wIChjZnVuLT5kZWNsKSAmJiAoRlBfUkVHTlVN X1AgKHJlZ25vKSkpCiAJICB8fCBtYXliZV9uZSAoKG9mZnNldDIgLSBjZnVu LT5tYWNoaW5lLT5mcmFtZS5yZWdfb2Zmc2V0W3JlZ25vXSksCiAJCSAgICAg ICBHRVRfTU9ERV9TSVpFIChtb2RlKSkpCiAJewpAQCAtNDgwOCw2ICs0ODgz LDI1IEBAIGFhcmNoNjRfc2V0X2hhbmRsZWRfY29tcG9uZW50cyAoc2JpdG1h cCBjb21wb25lbnRzKQogICAgICAgY2Z1bi0+bWFjaGluZS0+cmVnX2lzX3dy YXBwZWRfc2VwYXJhdGVseVtyZWdub10gPSB0cnVlOwogfQogCisvKiBSZXR1 cm4gMSBpZiB0aGUgcmVnaXN0ZXIgaXMgdXNlZCBieSB0aGUgZXBpbG9ndWUu ICBXZSBuZWVkIHRvIHNheSB0aGUKKyAgIHJldHVybiByZWdpc3RlciBpcyB1 c2VkLCBidXQgb25seSBhZnRlciBlcGlsb2d1ZSBnZW5lcmF0aW9uIGlzIGNv bXBsZXRlLgorICAgTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIHNpYmNhbGxz LCB0aGUgdmFsdWVzICJ1c2VkIGJ5IHRoZSBlcGlsb2d1ZSIgYXJlCisgICBj b25zaWRlcmVkIGxpdmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBjYWxsZWQgZnVu Y3Rpb24uCisKKyAgIEZvciBTSU1EIGZ1bmN0aW9ucyB3ZSBuZWVkIHRvIHJl dHVybiAxIGZvciBGUCByZWdpc3RlcnMgdGhhdCBhcmUgc2F2ZWQgYW5kCisg ICByZXN0b3JlZCBieSBhIGZ1bmN0aW9uIGJ1dCBub3QgemVybyBpbiBjYWxs X3VzZWRfcmVncy4gIElmIHdlIGRvIG5vdCBkbyAKKyAgIHRoaXMgb3B0aW1p emF0aW9ucyBtYXkgcmVtb3ZlIHRoZSByZXN0b3JlIG9mIHRoZSByZWdpc3Rl ci4gICovCisKK2ludAorYWFyY2g2NF9lcGlsb2d1ZV91c2VzIChpbnQgcmVn bm8pCit7CisgIGlmIChlcGlsb2d1ZV9jb21wbGV0ZWQgJiYgcmVnbm8gPT0g TFJfUkVHTlVNKQorICAgIHJldHVybiAxOworICBpZiAoYWFyY2g2NF9zaW1k X2RlY2xfcCAoY2Z1bi0+ZGVjbCkgJiYgRlBfU0lNRF9TQVZFRF9SRUdOVU1f UCAocmVnbm8pKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKwog LyogQWRkIGEgUkVHX0NGQV9FWFBSRVNTSU9OIG5vdGUgdG8gSU5TTiB0byBz YXkgdGhhdCByZWdpc3RlciBSRUcKICAgIGlzIHNhdmVkIGF0IEJBU0UgKyBP RkZTRVQuICAqLwogCkBAIC00OTU5LDggKzUwNTMsMTIgQEAgYWFyY2g2NF9l eHBhbmRfcHJvbG9ndWUgKHZvaWQpCiAKICAgYWFyY2g2NF9zYXZlX2NhbGxl ZV9zYXZlcyAoREltb2RlLCBjYWxsZWVfb2Zmc2V0LCBSMF9SRUdOVU0sIFIz MF9SRUdOVU0sCiAJCQkgICAgIGNhbGxlZV9hZGp1c3QgIT0gMCB8fCBlbWl0 X2ZyYW1lX2NoYWluKTsKLSAgYWFyY2g2NF9zYXZlX2NhbGxlZV9zYXZlcyAo REZtb2RlLCBjYWxsZWVfb2Zmc2V0LCBWMF9SRUdOVU0sIFYzMV9SRUdOVU0s Ci0JCQkgICAgIGNhbGxlZV9hZGp1c3QgIT0gMCB8fCBlbWl0X2ZyYW1lX2No YWluKTsKKyAgaWYgKGFhcmNoNjRfc2ltZF9kZWNsX3AgKGNmdW4tPmRlY2wp KQorICAgIGFhcmNoNjRfc2F2ZV9jYWxsZWVfc2F2ZXMgKFRGbW9kZSwgY2Fs bGVlX29mZnNldCwgVjBfUkVHTlVNLCBWMzFfUkVHTlVNLAorCQkJICAgICAg IGNhbGxlZV9hZGp1c3QgIT0gMCB8fCBlbWl0X2ZyYW1lX2NoYWluKTsKKyAg ZWxzZQorICAgIGFhcmNoNjRfc2F2ZV9jYWxsZWVfc2F2ZXMgKERGbW9kZSwg Y2FsbGVlX29mZnNldCwgVjBfUkVHTlVNLCBWMzFfUkVHTlVNLAorCQkJICAg ICAgIGNhbGxlZV9hZGp1c3QgIT0gMCB8fCBlbWl0X2ZyYW1lX2NoYWluKTsK ICAgYWFyY2g2NF9zdWJfc3AgKGlwMV9ydHgsIGlwMF9ydHgsIGZpbmFsX2Fk anVzdCwgIWZyYW1lX3BvaW50ZXJfbmVlZGVkKTsKIH0KIApAQCAtNDk4NCw2 ICs1MDgyLDE5IEBAIGFhcmNoNjRfdXNlX3JldHVybl9pbnNuX3AgKHZvaWQp CiAgIHJldHVybiBrbm93bl9lcSAoY2Z1bi0+bWFjaGluZS0+ZnJhbWUuZnJh bWVfc2l6ZSwgMCk7CiB9CiAKKy8qIFJldHVybiBmYWxzZSBmb3Igbm9uLWxl YWYgU0lNRCBmdW5jdGlvbnMgaW4gb3JkZXIgdG8gYXZvaWQKKyAgIHNocmlu ay13cmFwcGluZyB0aGVtLiAgRG9pbmcgdGhpcyB3aWxsIGxvc2UgdGhlIG5l Y2Vzc2FyeQorICAgc2F2ZS9yZXN0b3JlIG9mIEZQIHJlZ2lzdGVycy4gICov CisKK2Jvb2wKK2FhcmNoNjRfdXNlX3NpbXBsZV9yZXR1cm5faW5zbl9wICh2 b2lkKQoreworICBpZiAoYWFyY2g2NF9zaW1kX2RlY2xfcCAoY2Z1bi0+ZGVj bCkgJiYgIWNydGwtPmlzX2xlYWYpCisgICAgcmV0dXJuIGZhbHNlOworCisg IHJldHVybiB0cnVlOworfQorCiAvKiBHZW5lcmF0ZSB0aGUgZXBpbG9ndWUg aW5zdHJ1Y3Rpb25zIGZvciByZXR1cm5pbmcgZnJvbSBhIGZ1bmN0aW9uLgog ICAgVGhpcyBpcyBhbG1vc3QgZXhhY3RseSB0aGUgcmV2ZXJzZSBvZiB0aGUg cHJvbG9nIHNlcXVlbmNlLCBleGNlcHQKICAgIHRoYXQgd2UgbmVlZCB0byBp bnNlcnQgYmFycmllcnMgdG8gYXZvaWQgc2NoZWR1bGluZyBsb2FkcyB0aGF0 IHJlYWQKQEAgLTUwNDEsOCArNTE1MiwxMiBAQCBhYXJjaDY0X2V4cGFuZF9l cGlsb2d1ZSAoYm9vbCBmb3Jfc2liY2FsbCkKIAogICBhYXJjaDY0X3Jlc3Rv cmVfY2FsbGVlX3NhdmVzIChESW1vZGUsIGNhbGxlZV9vZmZzZXQsIFIwX1JF R05VTSwgUjMwX1JFR05VTSwKIAkJCQljYWxsZWVfYWRqdXN0ICE9IDAsICZj Zmlfb3BzKTsKLSAgYWFyY2g2NF9yZXN0b3JlX2NhbGxlZV9zYXZlcyAoREZt b2RlLCBjYWxsZWVfb2Zmc2V0LCBWMF9SRUdOVU0sIFYzMV9SRUdOVU0sCi0J CQkJY2FsbGVlX2FkanVzdCAhPSAwLCAmY2ZpX29wcyk7CisgIGlmIChhYXJj aDY0X3NpbWRfZGVjbF9wIChjZnVuLT5kZWNsKSkKKyAgICBhYXJjaDY0X3Jl c3RvcmVfY2FsbGVlX3NhdmVzIChURm1vZGUsIGNhbGxlZV9vZmZzZXQsIFYw X1JFR05VTSwgVjMxX1JFR05VTSwKKwkJCQkgIGNhbGxlZV9hZGp1c3QgIT0g MCwgJmNmaV9vcHMpOworICBlbHNlCisgICAgYWFyY2g2NF9yZXN0b3JlX2Nh bGxlZV9zYXZlcyAoREZtb2RlLCBjYWxsZWVfb2Zmc2V0LCBWMF9SRUdOVU0s IFYzMV9SRUdOVU0sCisJCQkJICBjYWxsZWVfYWRqdXN0ICE9IDAsICZjZmlf b3BzKTsKIAogICBpZiAobmVlZF9iYXJyaWVyX3ApCiAgICAgZW1pdF9pbnNu IChnZW5fc3RhY2tfdGllIChzdGFja19wb2ludGVyX3J0eCwgc3RhY2tfcG9p bnRlcl9ydHgpKTsKQEAgLTYyODcsNyArNjQwMiw3IEBAIGFhcmNoNjRfZml4 ZWRfY29uZGl0aW9uX2NvZGVfcmVncyAodW5zaWduZWQgaW50ICpwMSwgdW5z aWduZWQgaW50ICpwMikKIHZvaWQKIGFhcmNoNjRfZXhwYW5kX2NhbGwgKHJ0 eCByZXN1bHQsIHJ0eCBtZW0sIGJvb2wgc2liY2FsbCkKIHsKLSAgcnR4IGNh bGwsIGNhbGxlZSwgdG1wOworICBydHggY2FsbCwgY2FsbF9pbnNuLCBjYWxs ZWUsIHRtcDsKICAgcnR2ZWMgdmVjOwogICBtYWNoaW5lX21vZGUgbW9kZTsK IApAQCAtNjMwNSw3ICs2NDIwLDggQEAgYWFyY2g2NF9leHBhbmRfY2FsbCAo cnR4IHJlc3VsdCwgcnR4IG1lbSwgYm9vbCBzaWJjYWxsKQogICAgICAgOiAh UkVHX1AgKGNhbGxlZSkpCiAgICAgWEVYUCAobWVtLCAwKSA9IGZvcmNlX3Jl ZyAobW9kZSwgY2FsbGVlKTsKIAotICBjYWxsID0gZ2VuX3J0eF9DQUxMIChW T0lEbW9kZSwgbWVtLCBjb25zdDBfcnR4KTsKKyAgY2FsbF9pbnNuID0gZ2Vu X3J0eF9DQUxMIChWT0lEbW9kZSwgbWVtLCBjb25zdDBfcnR4KTsKKyAgY2Fs bCA9IGNhbGxfaW5zbjsKIAogICBpZiAocmVzdWx0ICE9IE5VTExfUlRYKQog ICAgIGNhbGwgPSBnZW5fcnR4X1NFVCAocmVzdWx0LCBjYWxsKTsKQEAgLTE4 MjEwLDYgKzE4MzI2LDkgQEAgYWFyY2g2NF9saWJnY2NfZmxvYXRpbmdfbW9k ZV9zdXBwb3J0ZWRfcAogI3VuZGVmIFRBUkdFVF9TRUxFQ1RfRUFSTFlfUkVN QVRfTU9ERVMKICNkZWZpbmUgVEFSR0VUX1NFTEVDVF9FQVJMWV9SRU1BVF9N T0RFUyBhYXJjaDY0X3NlbGVjdF9lYXJseV9yZW1hdF9tb2RlcwogCisjdW5k ZWYgVEFSR0VUX0FUVFJJQlVURV9UQUJMRQorI2RlZmluZSBUQVJHRVRfQVRU UklCVVRFX1RBQkxFIGFhcmNoNjRfYXR0cmlidXRlX3RhYmxlCisKICNpZiBD SEVDS0lOR19QCiAjdW5kZWYgVEFSR0VUX1JVTl9UQVJHRVRfU0VMRlRFU1RT CiAjZGVmaW5lIFRBUkdFVF9SVU5fVEFSR0VUX1NFTEZURVNUUyBzZWxmdGVz dDo6YWFyY2g2NF9ydW5fc2VsZnRlc3RzCmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2Fh cmNoNjQuaAppbmRleCBjMTIxODUwLi44OWY4ZTA2IDEwMDY0NAotLS0gYS9n Y2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5oCisrKyBiL2djYy9jb25maWcv YWFyY2g2NC9hYXJjaDY0LmgKQEAgLTM5MiwxMyArMzkyLDcgQEAgZXh0ZXJu IHVuc2lnbmVkIGFhcmNoNjRfYXJjaGl0ZWN0dXJlX3ZlcnNpb247CiAgICAg Vl9BTElBU0VTKDI4KSwgVl9BTElBU0VTKDI5KSwgVl9BTElBU0VTKDMwKSwg Vl9BTElBU0VTKDMxKSAgXAogICB9CiAKLS8qIFNheSB0aGF0IHRoZSByZXR1 cm4gYWRkcmVzcyByZWdpc3RlciBpcyB1c2VkIGJ5IHRoZSBlcGlsb2d1ZSwg YnV0IG9ubHkgYWZ0ZXIKLSAgIGVwaWxvZ3VlIGdlbmVyYXRpb24gaXMgY29t cGxldGUuICBOb3RlIHRoYXQgaW4gdGhlIGNhc2Ugb2Ygc2liY2FsbHMsIHRo ZQotICAgdmFsdWVzICJ1c2VkIGJ5IHRoZSBlcGlsb2d1ZSIgYXJlIGNvbnNp ZGVyZWQgbGl2ZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGNhbGxlZAotICAgZnVu Y3Rpb24uICAqLwotCi0jZGVmaW5lIEVQSUxPR1VFX1VTRVMoUkVHTk8pIFwK LSAgKGVwaWxvZ3VlX2NvbXBsZXRlZCAmJiAoUkVHTk8pID09IExSX1JFR05V TSkKKyNkZWZpbmUgRVBJTE9HVUVfVVNFUyhSRUdOTykgKGFhcmNoNjRfZXBp bG9ndWVfdXNlcyAoUkVHTk8pKQogCiAvKiBFWElUX0lHTk9SRV9TVEFDSyBz aG91bGQgYmUgbm9uemVybyBpZiwgd2hlbiByZXR1cm5pbmcgZnJvbSBhIGZ1 bmN0aW9uLAogICAgdGhlIHN0YWNrIHBvaW50ZXIgZG9lcyBub3QgbWF0dGVy LiAgVGhpcyBpcyBvbmx5IHRydWUgaWYgdGhlIGZ1bmN0aW9uCkBAIC01MDMs NiArNDk3LDggQEAgZXh0ZXJuIHVuc2lnbmVkIGFhcmNoNjRfYXJjaGl0ZWN0 dXJlX3ZlcnNpb247CiAjZGVmaW5lIFBSX0xPX1JFR05VTV9QKFJFR05PKVwK ICAgKCgodW5zaWduZWQpIChSRUdOTyAtIFAwX1JFR05VTSkpIDw9IChQN19S RUdOVU0gLSBQMF9SRUdOVU0pKQogCisjZGVmaW5lIEZQX1NJTURfU0FWRURf UkVHTlVNX1AoUkVHTk8pCQkJXAorICAoKCh1bnNpZ25lZCkgKFJFR05PIC0g VjhfUkVHTlVNKSkgPD0gKFYyM19SRUdOVU0gLSBWOF9SRUdOVU0pKQogDAog LyogUmVnaXN0ZXIgYW5kIGNvbnN0YW50IGNsYXNzZXMuICAqLwogCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZCBiL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kCmluZGV4IGU5YzE2ZjkuLjVjZjNj Y2YgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1k CisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0Lm1kCkBAIC02Myw2 ICs2Myw3IEBACiAgICAgKFYxNV9SRUdOVU0JCTQ3KQogICAgIChWMTZfUkVH TlVNCQk0OCkKICAgICAoVjIwX1JFR05VTQkJNTIpCisgICAgKFYyM19SRUdO VU0JCTU1KQogICAgIChWMjRfUkVHTlVNCQk1NikKICAgICAoVjI4X1JFR05V TQkJNjApCiAgICAgKFYzMV9SRUdOVU0JCTYzKQpAQCAtNjc3LDcgKzY3OCwx MyBAQAogICAiIgogKQogCi0oZGVmaW5lX2luc24gInNpbXBsZV9yZXR1cm4i CisoZGVmaW5lX2V4cGFuZCAic2ltcGxlX3JldHVybiIKKyAgWyhzaW1wbGVf cmV0dXJuKV0KKyAgImFhcmNoNjRfdXNlX3NpbXBsZV9yZXR1cm5faW5zbl9w ICgpIgorICAiIgorKQorCisoZGVmaW5lX2luc24gIipzaW1wbGVfcmV0dXJu IgogICBbKHNpbXBsZV9yZXR1cm4pXQogICAiIgogICAicmV0IgpAQCAtMTM0 Niw2ICsxMzUzLDIxIEBACiAgICAoc2V0X2F0dHIgImZwIiAiKix5ZXMiKV0K ICkKIAorKGRlZmluZV9pbnNuICJsb2FkX3BhaXJfZHdfdGZ0ZiIKKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VEYgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13 IikKKwkobWF0Y2hfb3BlcmFuZDpURiAxICJhYXJjaDY0X21lbV9wYWlyX29w ZXJhbmQiICJVbXAiKSkKKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6VEYgMiAi cmVnaXN0ZXJfb3BlcmFuZCIgIj13IikKKwkobWF0Y2hfb3BlcmFuZDpURiAz ICJtZW1vcnlfb3BlcmFuZCIgIm0iKSldCisgICAiVEFSR0VUX1NJTUQKKyAg ICAmJiBydHhfZXF1YWxfcCAoWEVYUCAob3BlcmFuZHNbM10sIDApLAorCQkg ICAgcGx1c19jb25zdGFudCAoUG1vZGUsCisJCQkJICAgWEVYUCAob3BlcmFu ZHNbMV0sIDApLAorCQkJCSAgIEdFVF9NT0RFX1NJWkUgKFRGbW9kZSkpKSIK KyAgImxkcFxcdCVxMCwgJXEyLCAlMSIKKyAgWyhzZXRfYXR0ciAidHlwZSIg Im5lb25fbGRwX3EiKQorICAgKHNldF9hdHRyICJmcCIgInllcyIpXQorKQor CiA7OyBPcGVyYW5kcyAwIGFuZCAyIGFyZSB0aWVkIHRvZ2V0aGVyIGJ5IHRo ZSBmaW5hbCBjb25kaXRpb247IHNvIHdlIGFsbG93CiA7OyBmYWlybHkgbGF4 IGNoZWNraW5nIG9uIHRoZSBzZWNvbmQgbWVtb3J5IG9wZXJhdGlvbi4KIChk ZWZpbmVfaW5zbiAic3RvcmVfcGFpcl9zd188U1g6bW9kZT48U1gyOm1vZGU+ IgpAQCAtMTM4MSwxOCArMTQwMywzMyBAQAogICAgKHNldF9hdHRyICJmcCIg IioseWVzIildCiApCiAKKyhkZWZpbmVfaW5zbiAic3RvcmVfcGFpcl9kd190 ZnRmIgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpURiAwICJhYXJjaDY0X21l bV9wYWlyX29wZXJhbmQiICI9VW1wIikKKwkobWF0Y2hfb3BlcmFuZDpURiAx ICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKQorICAgKHNldCAobWF0Y2hfb3Bl cmFuZDpURiAyICJtZW1vcnlfb3BlcmFuZCIgIj1tIikKKwkobWF0Y2hfb3Bl cmFuZDpURiAzICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKV0KKyAgICJUQVJH RVRfU0lNRCAmJgorICAgIHJ0eF9lcXVhbF9wIChYRVhQIChvcGVyYW5kc1sy XSwgMCksCisJCSBwbHVzX2NvbnN0YW50IChQbW9kZSwKKwkJCQlYRVhQIChv cGVyYW5kc1swXSwgMCksCisJCQkJR0VUX01PREVfU0laRSAoVEZtb2RlKSkp IgorICAic3RwXFx0JXExLCAlcTMsICUwIgorICBbKHNldF9hdHRyICJ0eXBl IiAibmVvbl9zdHBfcSIpCisgICAoc2V0X2F0dHIgImZwIiAieWVzIildCisp CisKIDs7IExvYWQgcGFpciB3aXRoIHBvc3QtaW5kZXggd3JpdGViYWNrLiAg VGhpcyBpcyBwcmltYXJpbHkgdXNlZCBpbiBmdW5jdGlvbgogOzsgZXBpbG9n dWVzLgogKGRlZmluZV9pbnNuICJsb2Fkd2JfcGFpcjxHUEk6bW9kZT5fPFA6 bW9kZT4iCiAgIFsocGFyYWxsZWwKICAgICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpQIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ayIpCi0gICAgICAgICAgKHBs dXM6UCAobWF0Y2hfb3BlcmFuZDpQIDEgInJlZ2lzdGVyX29wZXJhbmQiICIw IikKLSAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlAgNCAiYWFy Y2g2NF9tZW1fcGFpcl9vZmZzZXQiICJuIikpKQorCSAgKHBsdXM6UCAobWF0 Y2hfb3BlcmFuZDpQIDEgInJlZ2lzdGVyX29wZXJhbmQiICIwIikKKwkJICAo bWF0Y2hfb3BlcmFuZDpQIDQgImFhcmNoNjRfbWVtX3BhaXJfb2Zmc2V0IiAi biIpKSkKICAgICAgKHNldCAobWF0Y2hfb3BlcmFuZDpHUEkgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgIj1yIikKLSAgICAgICAgICAobWVtOkdQSSAobWF0Y2hf ZHVwIDEpKSkKKwkgIChtZW06R1BJIChtYXRjaF9kdXAgMSkpKQogICAgICAo c2V0IChtYXRjaF9vcGVyYW5kOkdQSSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXIiKQotICAgICAgICAgIChtZW06R1BJIChwbHVzOlAgKG1hdGNoX2R1cCAx KQotICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlAgNSAiY29u c3RfaW50X29wZXJhbmQiICJuIikpKSldKV0KKwkgIChtZW06R1BJIChwbHVz OlAgKG1hdGNoX2R1cCAxKQorCQkgICAobWF0Y2hfb3BlcmFuZDpQIDUgImNv bnN0X2ludF9vcGVyYW5kIiAibiIpKSkpXSldCiAgICJJTlRWQUwgKG9wZXJh bmRzWzVdKSA9PSBHRVRfTU9ERV9TSVpFICg8R1BJOk1PREU+bW9kZSkiCiAg ICJsZHBcXHQlPHc+MiwgJTx3PjMsIFslMV0sICU0IgogICBbKHNldF9hdHRy ICJ0eXBlIiAibG9hZF88bGRwc3RwX3N6PiIpXQpAQCAtMTQxMyw2ICsxNDUw LDIxIEBACiAgIFsoc2V0X2F0dHIgInR5cGUiICJuZW9uX2xvYWQxXzJyZWci KV0KICkKIAorKGRlZmluZV9pbnNuICJsb2Fkd2JfcGFpcjxUWDptb2RlPl88 UDptb2RlPiIKKyAgWyhwYXJhbGxlbAorICAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlAgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1rIikKKyAgICAgICAgICAo cGx1czpQIChtYXRjaF9vcGVyYW5kOlAgMSAicmVnaXN0ZXJfb3BlcmFuZCIg IjAiKQorICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6UCA0ICJh YXJjaDY0X21lbV9wYWlyX29mZnNldCIgIm4iKSkpCisgICAgIChzZXQgKG1h dGNoX29wZXJhbmQ6VFggMiAicmVnaXN0ZXJfb3BlcmFuZCIgIj13IikKKyAg ICAgICAgICAobWVtOlRYIChtYXRjaF9kdXAgMSkpKQorICAgICAoc2V0ICht YXRjaF9vcGVyYW5kOlRYIDMgInJlZ2lzdGVyX29wZXJhbmQiICI9dyIpCisg ICAgICAgICAgKG1lbTpUWCAocGx1czpQIChtYXRjaF9kdXAgMSkKKyAgICAg ICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlAgNSAiY29uc3RfaW50X29w ZXJhbmQiICJuIikpKSldKV0KKyAgIlRBUkdFVF9TSU1EICYmIElOVFZBTCAo b3BlcmFuZHNbNV0pID09IEdFVF9NT0RFX1NJWkUgKDxUWDpNT0RFPm1vZGUp IgorICAibGRwXFx0JXEyLCAlcTMsIFslMV0sICU0IgorICBbKHNldF9hdHRy ICJ0eXBlIiAibmVvbl9sZHBfcSIpXQorKQorCiA7OyBTdG9yZSBwYWlyIHdp dGggcHJlLWluZGV4IHdyaXRlYmFjay4gIFRoaXMgaXMgcHJpbWFyaWx5IHVz ZWQgaW4gZnVuY3Rpb24KIDs7IHByb2xvZ3Vlcy4KIChkZWZpbmVfaW5zbiAi c3RvcmV3Yl9wYWlyPEdQSTptb2RlPl88UDptb2RlPiIKQEAgLTE0NDcsNiAr MTQ5OSwyMyBAQAogICBbKHNldF9hdHRyICJ0eXBlIiAibmVvbl9zdG9yZTFf MnJlZzxxPiIpXQogKQogCisoZGVmaW5lX2luc24gInN0b3Jld2JfcGFpcjxU WDptb2RlPl88UDptb2RlPiIKKyAgWyhwYXJhbGxlbAorICAgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlAgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj0mayIpCisg ICAgICAgICAgKHBsdXM6UCAobWF0Y2hfb3BlcmFuZDpQIDEgInJlZ2lzdGVy X29wZXJhbmQiICIwIikKKyAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVy YW5kOlAgNCAiYWFyY2g2NF9tZW1fcGFpcl9vZmZzZXQiICJuIikpKQorICAg ICAoc2V0IChtZW06VFggKHBsdXM6UCAobWF0Y2hfZHVwIDApCisgICAgICAg ICAgICAgICAgICAobWF0Y2hfZHVwIDQpKSkKKyAgICAgICAgICAobWF0Y2hf b3BlcmFuZDpUWCAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidyIpKQorICAgICAo c2V0IChtZW06VFggKHBsdXM6UCAobWF0Y2hfZHVwIDApCisgICAgICAgICAg ICAgICAgICAobWF0Y2hfb3BlcmFuZDpQIDUgImNvbnN0X2ludF9vcGVyYW5k IiAibiIpKSkKKyAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpUWCAzICJyZWdp c3Rlcl9vcGVyYW5kIiAidyIpKV0pXQorICAiVEFSR0VUX1NJTUQgJiYKKyAg IElOVFZBTCAob3BlcmFuZHNbNV0pID09IElOVFZBTCAob3BlcmFuZHNbNF0p ICsgR0VUX01PREVfU0laRSAoPFRYOk1PREU+bW9kZSkiCisgICJzdHBcXHQl cTIsICVxMywgWyUwLCAlNF0hIgorICBbKHNldF9hdHRyICJ0eXBlIiAibmVv bl9zdHBfcSIpXQorKQorCiA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA7 OyBTaWduL1plcm8gZXh0ZW5zaW9uCiA7OyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCg== --=-Ye7u5v+Vj4anM6i7YJhh Content-Disposition: attachment; filename="gcc-vect-abi-test.patch" Content-Type: text/x-patch; name="gcc-vect-abi-test.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 Content-length: 11948 ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L3RvcnR1cmUvYWFyY2g2NC10b3J0dXJlLmV4cCBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUvYWFyY2g2NC10b3J0dXJlLmV4 cAppbmRleCBlNjlkZTI5Li4yMmYwOGZmIDEwMDY0NAotLS0gYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC90b3J0dXJlL2FhcmNoNjQtdG9y dHVyZS5leHAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvdG9ydHVyZS9hYXJjaDY0LXRvcnR1cmUuZXhwCkBAIC0wLDAgKzEsNDEg QEAKKyMgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMg CisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorIyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkcz LiAgSWYgbm90IHNlZQorIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisKKyMgR0NDIHRlc3RzdWl0ZSB0aGF0IHVzZXMgdGhlIGBnY2MtZGcu ZXhwJyBkcml2ZXIsIGxvb3Bpbmcgb3ZlcgorIyBvcHRpbWl6YXRpb24gb3B0 aW9ucy4KKworIyBFeGl0IGltbWVkaWF0ZWx5IGlmIHRoaXMgaXNuJ3QgYSBB YXJjaDY0IHRhcmdldC4KK2lmIHsgIVtpc3RhcmdldCBhYXJjaDY0Ki0qLSpd IH0gdGhlbiB7CisgIHJldHVybgorfQorCisjIExvYWQgc3VwcG9ydCBwcm9j cy4KK2xvYWRfbGliIGdjYy1kZy5leHAKKworIyBJZiBhIHRlc3RjYXNlIGRv ZXNuJ3QgaGF2ZSBzcGVjaWFsIG9wdGlvbnMsIHVzZSB0aGVzZS4KK2dsb2Jh bCBERUZBVUxUX0NGTEFHUworaWYgIVtpbmZvIGV4aXN0cyBERUZBVUxUX0NG TEFHU10gdGhlbiB7CisgICAgc2V0IERFRkFVTFRfQ0ZMQUdTICIgLWFuc2kg LXBlZGFudGljLWVycm9ycyIKK30KKworIyBJbml0aWFsaXplIGBkZycuCitk Zy1pbml0CisKKyMgTWFpbiBsb29wLgorZ2NjLWRnLXJ1bnRlc3QgW2xzb3J0 IFtnbG9iIC1ub2NvbXBsYWluICRzcmNkaXIvJHN1YmRpci8qLlxbY1NcXV1d ICIiICRERUZBVUxUX0NGTEFHUworCisjIEFsbCBkb25lLgorZGctZmluaXNo CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC90b3J0dXJlL3NpbWQtYWJpLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmktMS5jCmluZGV4IGU2OWRl MjkuLjI0OTU1NGUgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmktMS5jCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3RvcnR1cmUvc2ltZC1hYmkt MS5jCkBAIC0wLDAgKzEsNDEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisKK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKGFhcmNoNjRfdmVjdG9yX3Bjcykp CitmICh2b2lkKQoreworICAvKiBDbG9iYmVyIGFsbCBmcC9zaW1kIHJlZ3Mg YW5kIHZlcmlmeSB0aGF0IHRoZSBjb3JyZWN0IG9uZXMgYXJlIHNhdmVkCisg ICAgIGFuZCByZXN0b3JlZCBpbiB0aGUgcHJvbG9ndWUgYW5kIGVwaWxvZ3Vl IG9mIGEgU0lNRCBmdW5jdGlvbi4gKi8KKyAgX19hc21fXyBfX3ZvbGF0aWxl X18gKCIiIDo6OiAgInEwIiwgICJxMSIsICAicTIiLCAgInEzIik7CisgIF9f YXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogICJxNCIsICAicTUiLCAgInE2 IiwgICJxNyIpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOjo6ICAi cTgiLCAgInE5IiwgInExMCIsICJxMTEiKTsKKyAgX19hc21fXyBfX3ZvbGF0 aWxlX18gKCIiIDo6OiAicTEyIiwgInExMyIsICJxMTQiLCAicTE1Iik7Cisg IF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogInExNiIsICJxMTciLCAi cTE4IiwgInExOSIpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOjo6 ICJxMjAiLCAicTIxIiwgInEyMiIsICJxMjMiKTsKKyAgX19hc21fXyBfX3Zv bGF0aWxlX18gKCIiIDo6OiAicTI0IiwgInEyNSIsICJxMjYiLCAicTI3Iik7 CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogInEyOCIsICJxMjki LCAicTMwIiwgInEzMSIpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIge1xzc3RwXHRxOCwgcTl9IH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0cTEwLCBxMTF9IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0cTEyLCBx MTN9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtc c3N0cFx0cTE0LCBxMTV9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyIHtcc3N0cFx0cTE2LCBxMTd9IH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0cTE4LCBxMTl9IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0cTIw LCBxMjF9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy IHtcc3N0cFx0cTIyLCBxMjN9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyIHtcc2xkcFx0cTgsIHE5fSB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdHExMCwgcTExfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdHEx MiwgcTEzfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciB7XHNsZHBcdHExNCwgcTE1fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciB7XHNsZHBcdHExNiwgcTE3fSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdHExOCwgcTE5fSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBc dHEyMCwgcTIxfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciB7XHNsZHBcdHEyMiwgcTIzfSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3Qge1xzc3RwXHRxWzAzNDU2N119IH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHNsZHBc dHFbMDM0NTY3XX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtcc3N0cFx0cTJbNDU2Nzg5XX0gfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcc2xkcFx0cTJbNDU2Nzg5 XX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 IHtcc3N0cFx0ZH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtcc2xkcFx0ZH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHtcc3N0clx0fSB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xzbGRyXHR9IH0gfSAqLwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv dG9ydHVyZS9zaW1kLWFiaS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTIuYwppbmRleCBlNjlkZTI5 Li5iZjZlNjRhIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTIuYworKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTIu YwpAQCAtMCwwICsxLDMzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor Cit2b2lkCitmICh2b2lkKQoreworICAvKiBDbG9iYmVyIGFsbCBmcC9zaW1k IHJlZ3MgYW5kIHZlcmlmeSB0aGF0IHRoZSBjb3JyZWN0IG9uZXMgYXJlIHNh dmVkCisgICAgIGFuZCByZXN0b3JlZCBpbiB0aGUgcHJvbG9ndWUgYW5kIGVw aWxvZ3VlIG9mIGEgU0lNRCBmdW5jdGlvbi4gKi8KKyAgX19hc21fXyBfX3Zv bGF0aWxlX18gKCIiIDo6OiAgInEwIiwgICJxMSIsICAicTIiLCAgInEzIik7 CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogICJxNCIsICAicTUi LCAgInE2IiwgICJxNyIpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIg Ojo6ICAicTgiLCAgInE5IiwgInExMCIsICJxMTEiKTsKKyAgX19hc21fXyBf X3ZvbGF0aWxlX18gKCIiIDo6OiAicTEyIiwgInExMyIsICJxMTQiLCAicTE1 Iik7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogInExNiIsICJx MTciLCAicTE4IiwgInExOSIpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo IiIgOjo6ICJxMjAiLCAicTIxIiwgInEyMiIsICJxMjMiKTsKKyAgX19hc21f XyBfX3ZvbGF0aWxlX18gKCIiIDo6OiAicTI0IiwgInEyNSIsICJxMjYiLCAi cTI3Iik7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OjogInEyOCIs ICJxMjkiLCAicTMwIiwgInEzMSIpOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIge1xzc3RwXHRkOCwgZDl9IH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0ZDEwLCBkMTF9IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0 ZDEyLCBkMTN9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyIHtcc3N0cFx0ZDE0LCBkMTV9IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyIHtcc2xkcFx0ZDgsIGQ5fSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdGQxMCwgZDExfSB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBc dGQxMiwgZDEzfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciB7XHNsZHBcdGQxNCwgZDE1fSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlci1ub3Qge1xzc3RwXHRxfSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xzbGRwXHRxfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xzc3Rw XHRxWzAxMjM0NTY3XX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90IHtcc2xkcFx0cVswMTIzNDU2N119IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHNzdHBcdHExWzY3 ODldfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3Qge1xzbGRwXHRxMVs2Nzg5XX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItbm90IHtcc3N0clx0fSB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge1xzbGRyXHR9IH0gfSAqLwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv dG9ydHVyZS9zaW1kLWFiaS0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTMuYwppbmRleCBlNjlkZTI5 Li43ZDRmNTRmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTMuYworKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTMu YwpAQCAtMCwwICsxLDM0IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor CitleHRlcm4gdm9pZCBnICh2b2lkKTsKKwordm9pZCBfX2F0dHJpYnV0ZV9f ICgoYWFyY2g2NF92ZWN0b3JfcGNzKSkKK2YgKHZvaWQpCit7CisJZygpOwor fQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIge1xzc3RwXHRx OCwgcTl9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy IHtcc3N0cFx0cTEwLCBxMTF9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyIHtcc3N0cFx0cTEyLCBxMTN9IH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0cTE0LCBxMTV9IH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0 cTE2LCBxMTd9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyIHtcc3N0cFx0cTE4LCBxMTl9IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0cTIwLCBxMjF9IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc3N0cFx0cTIyLCBxMjN9 IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcc2xk cFx0cTgsIHE5fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciB7XHNsZHBcdHExMCwgcTExfSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdHExMiwgcTEzfSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdHExNCwgcTE1 fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNs ZHBcdHExNiwgcTE3fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciB7XHNsZHBcdHExOCwgcTE5fSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdHEyMCwgcTIxfSB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHNsZHBcdHEyMiwg cTIzfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3Qge1xzc3RwXHRxWzAzNDU2N119IH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLW5vdCB7XHNsZHBcdHFbMDM0NTY3XX0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcc3N0cFx0 cTJbNDU2Nzg5XX0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtcc2xkcFx0cTJbNDU2Nzg5XX0gfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcc3N0cFx0ZH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtcc2xkcFx0 ZH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90 IHtcc3N0clx0fSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3Qge1xzbGRyXHR9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdG9ydHVyZS9zaW1kLWFiaS00 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC90b3J0dXJl L3NpbWQtYWJpLTQuYwppbmRleCBlNjlkZTI5Li5lMzk5NjkwIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC90b3J0dXJl L3NpbWQtYWJpLTQuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC90b3J0dXJlL3NpbWQtYWJpLTQuYwpAQCAtMCwwICsxLDM0IEBA CisvKiBkZy1kbyBydW4gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItc3RkPWM5OSIgfSAgKi8KKworCisKKy8qIFRoZXJlIGlzIG5vdGhpbmcg c3BlY2lhbCBhYm91dCB0aGUgY2FsY3VsYXRpb25zIGhlcmUsIHRoaXMgaXMg anVzdAorICAgYSB0ZXN0IHRoYXQgY2FuIGJlIGNvbXBpbGVkIGFuZCBydW4u ICAqLworCitleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisKK19fRmxvYXQ2 NHgyX3QgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lLCBhYXJjaDY0X3ZlY3Rv cl9wY3MpKQorZm9vKF9fRmxvYXQ2NHgyX3QgYSwgX19GbG9hdDY0eDJfdCBi LCBfX0Zsb2F0NjR4Ml90IGMsCisgICAgX19GbG9hdDY0eDJfdCBkLCBfX0Zs b2F0NjR4Ml90IGUsIF9fRmxvYXQ2NHgyX3QgZiwKKyAgICBfX0Zsb2F0NjR4 Ml90IGcsIF9fRmxvYXQ2NHgyX3QgaCwgX19GbG9hdDY0eDJfdCBpKQorewor CV9fRmxvYXQ2NHgyX3QgdywgeCwgeSwgejsKKwl3ID0gYSArIGIgKiBjOwor CXggPSBkICsgZSAqIGY7CisJeSA9IGcgKyBoICogaTsKKwlyZXR1cm4gdyAr IHggKiB5OworfQorCisKK2ludCBtYWluKCkKK3sKKwlfX0Zsb2F0NjR4Ml90 IGEsIGIsIGMsIGQ7CisJYSA9IChfX0Zsb2F0NjR4Ml90KSB7IDEuMCwgMi4w IH07CisJYiA9IChfX0Zsb2F0NjR4Ml90KSB7IDMuMCwgNC4wIH07CisJYyA9 IChfX0Zsb2F0NjR4Ml90KSB7IDUuMCwgNi4wIH07CisJZCA9IGZvbyAoYSwg YiwgYywgKGErYiksIChiK2MpLCAoYStjKSwgKGEtYiksIChiLWMpLCAoYS1j KSkgKyBhICsgYiArIGM7CisJaWYgKGRbMF0gIT0gMzM3LjAgfHwgZFsxXSAh PSA1NTQuMCkKKwkJYWJvcnQgKCk7CisJcmV0dXJuIDA7Cit9Cg== --=-Ye7u5v+Vj4anM6i7YJhh--