From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23535 invoked by alias); 22 Aug 2011 17:32:46 -0000 Received: (qmail 23527 invoked by uid 22791); 22 Aug 2011 17:32:43 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-qw0-f47.google.com (HELO mail-qw0-f47.google.com) (209.85.216.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 22 Aug 2011 17:32:27 +0000 Received: by qwh5 with SMTP id 5so3333787qwh.20 for ; Mon, 22 Aug 2011 10:32:26 -0700 (PDT) MIME-Version: 1.0 Received: by 10.224.203.5 with SMTP id fg5mr1538322qab.96.1314034345982; Mon, 22 Aug 2011 10:32:25 -0700 (PDT) Received: by 10.229.29.7 with HTTP; Mon, 22 Aug 2011 10:32:25 -0700 (PDT) In-Reply-To: References: <20110822053744.GM2687@tyan-ft48-01.lab.bos.redhat.com> Date: Mon, 22 Aug 2011 18:33:00 -0000 Message-ID: Subject: Re: PING: PATCH: PR target/46770: Use .init_array/.fini_array sections From: "H.J. Lu" To: Jakub Jelinek Cc: David Edelsohn , GCC Patches Content-Type: multipart/mixed; boundary=20cf3005dc626a3ba904ab1b76c4 X-IsSubscribed: yes 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 X-SW-Source: 2011-08/txt/msg01806.txt.bz2 --20cf3005dc626a3ba904ab1b76c4 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 841 On Mon, Aug 22, 2011 at 10:09 AM, H.J. Lu wrote: > On Sun, Aug 21, 2011 at 10:37 PM, Jakub Jelinek wrote: > nd/or add another test to it that tests >> that you can actually use >> .section .init_array >> and it will use correct section flags for the section. >> > > We need this information in config.gcc. But config.gcc is used > before assembler and readelf are detected. I am running out of > ideas. =A0Any suggestions? > > Thanks. > This is a much bigger change that I like and I don't feel very comfortable about it since I can only test it on Linux/x86. --=20 H.J. ---- 2011-08-22 H.J. Lu * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check if ".section .init_array" works. * configure.ac: Move binutils tests before gcc_AC_INITFINI_ARRAY. * configure: Regenerated. --20cf3005dc626a3ba904ab1b76c4 Content-Type: text/x-diff; charset=US-ASCII; name="gcc-init-array-1.patch" Content-Disposition: attachment; filename="gcc-init-array-1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_grnq2cx50 Content-length: 23038 ZGlmZiAtLWdpdCBhL2djYy9hY2luY2x1ZGUubTQgYi9nY2MvYWNpbmNsdWRl Lm00CmluZGV4IGE4ZWNkMmQuLjM4MjcwNDYgMTAwNjQ0Ci0tLSBhL2djYy9h Y2luY2x1ZGUubTQKKysrIGIvZ2NjL2FjaW5jbHVkZS5tNApAQCAtMzc2LDYg KzM3NiwxOCBAQCBBQ19ERUZVTihbZ2NjX0FDX0lOSVRGSU5JX0FSUkFZXSwK IEFDX0NBQ0hFX0NIRUNLKGZvciAucHJlaW5pdF9hcnJheS8uaW5pdF9hcnJh eS8uZmluaV9hcnJheSBzdXBwb3J0LAogCQkgZ2NjX2N2X2luaXRmaW5pX2Fy cmF5LCBbZG5sCiAgIGlmIHRlc3QgIngke2J1aWxkfSIgPSAieCR7dGFyZ2V0 fSIgJiYgdGVzdCAieCR7YnVpbGR9IiA9ICJ4JHtob3N0fSI7IHRoZW4KKyAg ICBpZiB0ZXN0IHgkZ2NjX2N2X2FzICE9IHggLWEgeCRnY2NfY3ZfcmVhZGVs ZiAhPSB4IDsgdGhlbgorICAgICAgZWNobyAiLnNlY3Rpb24gLmluaXRfYXJy YXk7IC5ieXRlIDAiID4gY29uZnRlc3QucworICAgICAgaWYgJGdjY19jdl9h cyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGwgMj4mMTsg dGhlbgorCWlmICRnY2NfY3ZfcmVhZGVsZiAtUyAtLXdpZGUgY29uZnRlc3Qu byAyPiYxIFwKKwkgICB8IGdyZXAgSU5JVF9BUlJBWSA+IC9kZXYvbnVsbCAy PiYxOyB0aGVuCisJICBnY2NfY3ZfYXNfaW5pdF9hcnJheT15ZXMKKwlmaQor ICAgICAgZmkKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LnMgY29uZnRlc3Qubwor ICAgIGZpCisgIGZpCisgIGlmIHRlc3QgIngke2djY19jdl9hc19pbml0X2Fy cmF5fSIgPSB4eWVzOyB0aGVuCiAgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFO R19TT1VSQ0UoWwogI2lmbmRlZiBfX0VMRl9fCiAjZXJyb3IgTm90IGFuIEVM RiBPUwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25m aWd1cmUuYWMKaW5kZXggZWQwMTkwNC4uM2NhZTU4YSAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZ3VyZS5hYworKysgYi9nY2MvY29uZmlndXJlLmFjCkBAIC0x MTUzLDYgKzExNTMsMjMxIEBAIGZpCiAjIFJlc3RvcmUgQ0ZMQUdTIGZyb20g YmVmb3JlIHRoZSBnY2NfQUNfTkVFRF9ERUNMQVJBVElPTlMgdGVzdHMuCiBD RkxBR1M9IiRzYXZlZF9DRkxBR1MiCiAKKyMgSWRlbnRpZnkgdGhlIGFzc2Vt YmxlciB3aGljaCB3aWxsIHdvcmsgaGFuZC1pbi1nbG92ZSB3aXRoIHRoZSBu ZXdseQorIyBidWlsdCBHQ0MsIHNvIHRoYXQgd2UgY2FuIGV4YW1pbmUgaXRz IGZlYXR1cmVzLiAgVGhpcyBpcyB0aGUgYXNzZW1ibGVyCisjIHdoaWNoIHdp bGwgYmUgZHJpdmVuIGJ5IHRoZSBkcml2ZXIgcHJvZ3JhbS4KKyMKKyMgSWYg YnVpbGQgIT0gaG9zdCwgYW5kIHdlIGFyZW4ndCBidWlsZGluZyBnYXMgaW4t dHJlZSwgd2UgaWRlbnRpZnkgYQorIyBidWlsZC0+dGFyZ2V0IGFzc2VtYmxl ciBhbmQgaG9wZSB0aGF0IGl0IHdpbGwgaGF2ZSB0aGUgc2FtZSBmZWF0dXJl cworIyBhcyB0aGUgaG9zdC0+dGFyZ2V0IGFzc2VtYmxlciB3ZSdsbCBiZSB1 c2luZy4KK2djY19jdl9nYXNfbWFqb3JfdmVyc2lvbj0KK2djY19jdl9nYXNf bWlub3JfdmVyc2lvbj0KK2djY19jdl9hc19nYXNfc3JjZGlyPWBlY2hvICRz cmNkaXIgfCBzZWQgLWUgJ3MsL2djYyQsLCdgL2dhcworCittNF9wYXR0ZXJu X2FsbG93KFtBU19GT1JfVEFSR0VUXSlkbmwKK0FTX1ZBUl9TRVRfSUYoZ2Nj X2N2X2FzLCwgWworaWYgdGVzdCAteCAiJERFRkFVTFRfQVNTRU1CTEVSIjsg dGhlbgorCWdjY19jdl9hcz0iJERFRkFVTFRfQVNTRU1CTEVSIgorZWxpZiB0 ZXN0IC1mICRnY2NfY3ZfYXNfZ2FzX3NyY2Rpci9jb25maWd1cmUuaW4gXAor ICAgICAmJiB0ZXN0IC1mIC4uL2dhcy9NYWtlZmlsZSBcCisgICAgICYmIHRl c3QgeCRidWlsZCA9IHgkaG9zdDsgdGhlbgorCWdjY19jdl9hcz0uLi9nYXMv YXMtbmV3JGJ1aWxkX2V4ZWV4dAorZWxpZiB0ZXN0IC14IGFzJGJ1aWxkX2V4 ZWV4dDsgdGhlbgorCSMgQnVpbGQgdXNpbmcgYXNzZW1ibGVyIGluIHRoZSBj dXJyZW50IGRpcmVjdG9yeS4KKwlnY2NfY3ZfYXM9Li9hcyRidWlsZF9leGVl eHQKK2VsaWYgKCBzZXQgZHVtbXkgJEFTX0ZPUl9UQVJHRVQ7IHRlc3QgLXgg JFsyXSApOyB0aGVuCisgICAgICAgIGdjY19jdl9hcz0iJEFTX0ZPUl9UQVJH RVQiCitlbHNlCisgICAgICAgIEFDX1BBVEhfUFJPRyhnY2NfY3ZfYXMsICRB U19GT1JfVEFSR0VUKQorZmldKQorCitPUklHSU5BTF9BU19GT1JfVEFSR0VU PSRnY2NfY3ZfYXMKK0FDX1NVQlNUKE9SSUdJTkFMX0FTX0ZPUl9UQVJHRVQp CitjYXNlICIkT1JJR0lOQUxfQVNfRk9SX1RBUkdFVCIgaW4KKyAgLi9hcyB8 IC4vYXMkYnVpbGRfZXhlZXh0KSA7OworICAqKSBBQ19DT05GSUdfRklMRVMo YXM6ZXhlYy10b29sLmluLCBbY2htb2QgK3ggYXNdKSA7OworZXNhYyAKKwor QUNfTVNHX0NIRUNLSU5HKHdoYXQgYXNzZW1ibGVyIHRvIHVzZSkKK2lmIHRl c3QgIiRnY2NfY3ZfYXMiID0gLi4vZ2FzL2FzLW5ldyRidWlsZF9leGVleHQ7 IHRoZW4KKyAgIyBTaW5nbGUgdHJlZSBidWlsZCB3aGljaCBpbmNsdWRlcyBn YXMuICBXZSB3YW50IHRvIHByZWZlciBpdAorICAjIG92ZXIgd2hhdGV2ZXIg bGlua2VyIHRvcC1sZXZlbCBtYXkgaGF2ZSBkZXRlY3RlZCwgc2luY2UKKyAg IyB3ZSdsbCB1c2Ugd2hhdCB3ZSdyZSBidWlsZGluZyBhZnRlciBpbnN0YWxs YXRpb24gYW55d2F5LgorICBBQ19NU0dfUkVTVUxUKG5ld2x5IGJ1aWx0IGdh cykKKyAgaW5fdHJlZV9nYXM9eWVzCisgIF9nY2NfQ09NUFVURV9HQVNfVkVS U0lPTgorICBpbl90cmVlX2dhc19pc19lbGY9bm8KKyAgaWYgZ3JlcCAnb2Jq X2Zvcm1hdCA9IGVsZicgLi4vZ2FzL01ha2VmaWxlID4gL2Rldi9udWxsIFwK KyAgICAgfHwgKGdyZXAgJ29ial9mb3JtYXQgPSBtdWx0aScgLi4vZ2FzL01h a2VmaWxlIFwKKyAgICAgICAgICYmIGdyZXAgJ2V4dHJhX29iamVjdHMgPS4q IG9iai1lbGYnIC4uL2dhcy9NYWtlZmlsZSkgPiAvZGV2L251bGwKKyAgdGhl bgorICAgIGluX3RyZWVfZ2FzX2lzX2VsZj15ZXMKKyAgZmkKK2Vsc2UKKyAg QUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzKQorICBpbl90cmVlX2dhcz1ubwor ZmkKKworIyBJZGVudGlmeSB0aGUgbGlua2VyIHdoaWNoIHdpbGwgd29yayBo YW5kLWluLWdsb3ZlIHdpdGggdGhlIG5ld2x5CisjIGJ1aWx0IEdDQywgc28g dGhhdCB3ZSBjYW4gZXhhbWluZSBpdHMgZmVhdHVyZXMuICBUaGlzIGlzIHRo ZSBsaW5rZXIKKyMgd2hpY2ggd2lsbCBiZSBkcml2ZW4gYnkgdGhlIGRyaXZl ciBwcm9ncmFtLgorIworIyBJZiBidWlsZCAhPSBob3N0LCBhbmQgd2UgYXJl bid0IGJ1aWxkaW5nIGdhcyBpbi10cmVlLCB3ZSBpZGVudGlmeSBhCisjIGJ1 aWxkLT50YXJnZXQgbGlua2VyIGFuZCBob3BlIHRoYXQgaXQgd2lsbCBoYXZl IHRoZSBzYW1lIGZlYXR1cmVzCisjIGFzIHRoZSBob3N0LT50YXJnZXQgbGlu a2VyIHdlJ2xsIGJlIHVzaW5nLgorZ2NjX2N2X2dsZF9tYWpvcl92ZXJzaW9u PQorZ2NjX2N2X2dsZF9taW5vcl92ZXJzaW9uPQorZ2NjX2N2X2xkX2dsZF9z cmNkaXI9YGVjaG8gJHNyY2RpciB8IHNlZCAtZSAncywvZ2NjJCwsJ2AvbGQK K2djY19jdl9sZF9iZmRfc3JjZGlyPWBlY2hvICRzcmNkaXIgfCBzZWQgLWUg J3MsL2djYyQsLCdgL2JmZAorCitBU19WQVJfU0VUX0lGKGdjY19jdl9sZCws IFsKK2lmIHRlc3QgLXggIiRERUZBVUxUX0xJTktFUiI7IHRoZW4KKwlnY2Nf Y3ZfbGQ9IiRERUZBVUxUX0xJTktFUiIKK2VsaWYgdGVzdCAtZiAkZ2NjX2N2 X2xkX2dsZF9zcmNkaXIvY29uZmlndXJlLmluIFwKKyAgICAgJiYgdGVzdCAt ZiAuLi9sZC9NYWtlZmlsZSBcCisgICAgICYmIHRlc3QgeCRidWlsZCA9IHgk aG9zdDsgdGhlbgorCWdjY19jdl9sZD0uLi9sZC9sZC1uZXckYnVpbGRfZXhl ZXh0CitlbGlmIHRlc3QgLXggY29sbGVjdC1sZCRidWlsZF9leGVleHQ7IHRo ZW4KKwkjIEJ1aWxkIHVzaW5nIGxpbmtlciBpbiB0aGUgY3VycmVudCBkaXJl Y3RvcnkuCisJZ2NjX2N2X2xkPS4vY29sbGVjdC1sZCRidWlsZF9leGVleHQK K2VsaWYgKCBzZXQgZHVtbXkgJExEX0ZPUl9UQVJHRVQ7IHRlc3QgLXggJFsy XSApOyB0aGVuCisgICAgICAgIGdjY19jdl9sZD0iJExEX0ZPUl9UQVJHRVQi CitlbHNlCisgICAgICAgIEFDX1BBVEhfUFJPRyhnY2NfY3ZfbGQsICRMRF9G T1JfVEFSR0VUKQorZmldKQorCitPUklHSU5BTF9QTFVHSU5fTERfRk9SX1RB UkdFVD0kZ2NjX2N2X2xkCitQTFVHSU5fTEQ9YGJhc2VuYW1lICRnY2NfY3Zf bGRgCitBQ19BUkdfV0lUSChwbHVnaW4tbGQsCitbQVNfSEVMUF9TVFJJTkco W1stLXdpdGgtcGx1Z2luLWxkPVtBUkddXV0sIFtzcGVjaWZ5IHRoZSBwbHVn aW4gbGlua2VyXSldLAorW2lmIHRlc3QgeCIkd2l0aHZhbCIgIT0geDsgdGhl bgorICAgT1JJR0lOQUxfUExVR0lOX0xEX0ZPUl9UQVJHRVQ9IiR3aXRodmFs IgorICAgUExVR0lOX0xEPSIkd2l0aHZhbCIKKyBmaV0pCitBQ19TVUJTVChP UklHSU5BTF9QTFVHSU5fTERfRk9SX1RBUkdFVCkKK0FDX0RFRklORV9VTlFV T1RFRChQTFVHSU5fTEQsICIkUExVR0lOX0xEIiwgW1NwZWNpZnkgcGx1Z2lu IGxpbmtlcl0pCisKKyMgQ2hlY2sgdG8gc2VlIGlmIHdlIGFyZSB1c2luZyBn b2xkIGluc3RlYWQgb2YgbGQKK0FDX01TR19DSEVDS0lORyh3aGV0aGVyIHdl IGFyZSB1c2luZyBnb2xkKQorbGRfaXNfZ29sZD1ubworaWYgdGVzdCB4JGdj Y19jdl9sZCAhPSB4OyB0aGVuCisgIGlmICRnY2NfY3ZfbGQgLS12ZXJzaW9u IDI+L2Rldi9udWxsIHwgc2VkIDFxIFwKKyAgICAgfCBncmVwICJHTlUgZ29s ZCIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBsZF9pc19nb2xkPXllcworICBm aQorZmkKK0FDX01TR19SRVNVTFQoJGxkX2lzX2dvbGQpCisKK09SSUdJTkFM X0xEX0ZPUl9UQVJHRVQ9JGdjY19jdl9sZAorQUNfU1VCU1QoT1JJR0lOQUxf TERfRk9SX1RBUkdFVCkKK2Nhc2UgIiRPUklHSU5BTF9MRF9GT1JfVEFSR0VU IiBpbgorICAuL2NvbGxlY3QtbGQgfCAuL2NvbGxlY3QtbGQkYnVpbGRfZXhl ZXh0KSA7OworICAqKSBBQ19DT05GSUdfRklMRVMoY29sbGVjdC1sZDpleGVj LXRvb2wuaW4sIFtjaG1vZCAreCBjb2xsZWN0LWxkXSkgOzsKK2VzYWMgCisK K0FDX01TR19DSEVDS0lORyh3aGF0IGxpbmtlciB0byB1c2UpCitpZiB0ZXN0 ICIkZ2NjX2N2X2xkIiA9IC4uL2xkL2xkLW5ldyRidWlsZF9leGVleHQgXAor ICAgfHwgdGVzdCAiJGdjY19jdl9sZCIgPSAuLi9nb2xkL2xkLW5ldyRidWls ZF9leGVleHQ7IHRoZW4KKwkjIFNpbmdsZSB0cmVlIGJ1aWxkIHdoaWNoIGlu Y2x1ZGVzIGxkLiAgV2Ugd2FudCB0byBwcmVmZXIgaXQKKwkjIG92ZXIgd2hh dGV2ZXIgbGlua2VyIHRvcC1sZXZlbCBtYXkgaGF2ZSBkZXRlY3RlZCwgc2lu Y2UKKwkjIHdlJ2xsIHVzZSB3aGF0IHdlJ3JlIGJ1aWxkaW5nIGFmdGVyIGlu c3RhbGxhdGlvbiBhbnl3YXkuCisJQUNfTVNHX1JFU1VMVChuZXdseSBidWls dCBsZCkKKwlpbl90cmVlX2xkPXllcworCWluX3RyZWVfbGRfaXNfZWxmPW5v CisJaWYgKGdyZXAgJ0VNVUwgPSAuKmVsZicgLi4vbGQvTWFrZWZpbGUgXAor CSAgICB8fCBncmVwICdFTVVMID0gLipsaW51eCcgLi4vbGQvTWFrZWZpbGUg XAorCSAgICB8fCBncmVwICdFTVVMID0gLipseW54JyAuLi9sZC9NYWtlZmls ZSkgPiAvZGV2L251bGw7IHRoZW4KKwkgIGluX3RyZWVfbGRfaXNfZWxmPXll cworCWVsaWYgdGVzdCAiJGxkX2lzX2dvbGQiID0geWVzOyB0aGVuCisJICBp bl90cmVlX2xkX2lzX2VsZj15ZXMKKwlmaQorCWZvciBmIGluICRnY2NfY3Zf bGRfYmZkX3NyY2Rpci9jb25maWd1cmUgJGdjY19jdl9sZF9nbGRfc3JjZGly L2NvbmZpZ3VyZSAkZ2NjX2N2X2xkX2dsZF9zcmNkaXIvY29uZmlndXJlLmlu ICRnY2NfY3ZfbGRfZ2xkX3NyY2Rpci9NYWtlZmlsZS5pbgorCWRvCitjaGFu Z2VxdW90ZSgsKWRubAorCQlnY2NfY3ZfZ2xkX3ZlcnNpb249YHNlZCAtbiAt ZSAncy9eWyAJXSpcKFZFUlNJT049WzAtOV0qXC5bMC05XSouKlwpL1wxL3An IDwgJGZgCisJCWlmIHRlc3QgeCRnY2NfY3ZfZ2xkX3ZlcnNpb24gIT0geDsg dGhlbgorCQkJYnJlYWsKKwkJZmkKKwlkb25lCisJZ2NjX2N2X2dsZF9tYWpv cl92ZXJzaW9uPWBleHByICIkZ2NjX2N2X2dsZF92ZXJzaW9uIiA6ICJWRVJT SU9OPVwoWzAtOV0qXCkiYAorCWdjY19jdl9nbGRfbWlub3JfdmVyc2lvbj1g ZXhwciAiJGdjY19jdl9nbGRfdmVyc2lvbiIgOiAiVkVSU0lPTj1bMC05XSpc LlwoWzAtOV0qXCkiYAorY2hhbmdlcXVvdGUoWyxdKWRubAorZWxzZQorCUFD X01TR19SRVNVTFQoJGdjY19jdl9sZCkKKwlpbl90cmVlX2xkPW5vCitmaQor CisjIEZpZ3VyZSBvdXQgd2hhdCBubSB3ZSB3aWxsIGJlIHVzaW5nLgorZ2Nj X2N2X2JpbnV0aWxzX3NyY2Rpcj1gZWNobyAkc3JjZGlyIHwgc2VkIC1lICdz LC9nY2MkLCwnYC9iaW51dGlscworQVNfVkFSX1NFVF9JRihnY2NfY3Zfbm0s LCBbCitpZiB0ZXN0IC1mICRnY2NfY3ZfYmludXRpbHNfc3JjZGlyL2NvbmZp Z3VyZS5pbiBcCisgICAgICYmIHRlc3QgLWYgLi4vYmludXRpbHMvTWFrZWZp bGUgXAorICAgICAmJiB0ZXN0IHgkYnVpbGQgPSB4JGhvc3Q7IHRoZW4KKwln Y2NfY3Zfbm09Li4vYmludXRpbHMvbm0tbmV3JGJ1aWxkX2V4ZWV4dAorZWxp ZiB0ZXN0IC14IG5tJGJ1aWxkX2V4ZWV4dDsgdGhlbgorCWdjY19jdl9ubT0u L25tJGJ1aWxkX2V4ZWV4dAorZWxpZiAoIHNldCBkdW1teSAkTk1fRk9SX1RB UkdFVDsgdGVzdCAteCAkWzJdICk7IHRoZW4KKyAgICAgICAgZ2NjX2N2X25t PSIkTk1fRk9SX1RBUkdFVCIKK2Vsc2UKKyAgICAgICAgQUNfUEFUSF9QUk9H KGdjY19jdl9ubSwgJE5NX0ZPUl9UQVJHRVQpCitmaV0pCisKK0FDX01TR19D SEVDS0lORyh3aGF0IG5tIHRvIHVzZSkKK2lmIHRlc3QgIiRnY2NfY3Zfbm0i ID0gLi4vYmludXRpbHMvbm0tbmV3JGJ1aWxkX2V4ZWV4dDsgdGhlbgorCSMg U2luZ2xlIHRyZWUgYnVpbGQgd2hpY2ggaW5jbHVkZXMgYmludXRpbHMuCisJ QUNfTVNHX1JFU1VMVChuZXdseSBidWlsdCBubSkKKwlpbl90cmVlX25tPXll cworZWxzZQorCUFDX01TR19SRVNVTFQoJGdjY19jdl9ubSkKKwlpbl90cmVl X25tPW5vCitmaQorCitPUklHSU5BTF9OTV9GT1JfVEFSR0VUPSRnY2NfY3Zf bm0KK0FDX1NVQlNUKE9SSUdJTkFMX05NX0ZPUl9UQVJHRVQpCitjYXNlICIk T1JJR0lOQUxfTk1fRk9SX1RBUkdFVCIgaW4KKyAgLi9ubSB8IC4vbm0kYnVp bGRfZXhlZXh0KSA7OworICAqKSBBQ19DT05GSUdfRklMRVMobm06ZXhlYy10 b29sLmluLCBbY2htb2QgK3ggbm1dKSA7OworZXNhYworCisKKyMgRmlndXJl IG91dCB3aGF0IG9iamR1bXAgd2Ugd2lsbCBiZSB1c2luZy4KK0FTX1ZBUl9T RVRfSUYoZ2NjX2N2X29iamR1bXAsLCBbCitpZiB0ZXN0IC1mICRnY2NfY3Zf YmludXRpbHNfc3JjZGlyL2NvbmZpZ3VyZS5pbiBcCisgICAgICYmIHRlc3Qg LWYgLi4vYmludXRpbHMvTWFrZWZpbGUgXAorICAgICAmJiB0ZXN0IHgkYnVp bGQgPSB4JGhvc3Q7IHRoZW4KKwkjIFNpbmdsZSB0cmVlIGJ1aWxkIHdoaWNo IGluY2x1ZGVzIGJpbnV0aWxzLgorCWdjY19jdl9vYmpkdW1wPS4uL2JpbnV0 aWxzL29iamR1bXAkYnVpbGRfZXhlZXh0CitlbGlmIHRlc3QgLXggb2JqZHVt cCRidWlsZF9leGVleHQ7IHRoZW4KKwlnY2NfY3Zfb2JqZHVtcD0uL29iamR1 bXAkYnVpbGRfZXhlZXh0CitlbGlmICggc2V0IGR1bW15ICRPQkpEVU1QX0ZP Ul9UQVJHRVQ7IHRlc3QgLXggJFsyXSApOyB0aGVuCisgICAgICAgIGdjY19j dl9vYmpkdW1wPSIkT0JKRFVNUF9GT1JfVEFSR0VUIgorZWxzZQorICAgICAg ICBBQ19QQVRIX1BST0coZ2NjX2N2X29iamR1bXAsICRPQkpEVU1QX0ZPUl9U QVJHRVQpCitmaV0pCisKK0FDX01TR19DSEVDS0lORyh3aGF0IG9iamR1bXAg dG8gdXNlKQoraWYgdGVzdCAiJGdjY19jdl9vYmpkdW1wIiA9IC4uL2JpbnV0 aWxzL29iamR1bXAkYnVpbGRfZXhlZXh0OyB0aGVuCisJIyBTaW5nbGUgdHJl ZSBidWlsZCB3aGljaCBpbmNsdWRlcyBiaW51dGlscy4KKwlBQ19NU0dfUkVT VUxUKG5ld2x5IGJ1aWx0IG9iamR1bXApCitlbGlmIHRlc3QgeCRnY2NfY3Zf b2JqZHVtcCA9IHg7IHRoZW4KKwlBQ19NU0dfUkVTVUxUKG5vdCBmb3VuZCkK K2Vsc2UKKwlBQ19NU0dfUkVTVUxUKCRnY2NfY3Zfb2JqZHVtcCkKK2ZpCisK KyMgRmlndXJlIG91dCB3aGF0IHJlYWRlbGYgd2Ugd2lsbCBiZSB1c2luZy4K K0FTX1ZBUl9TRVRfSUYoZ2NjX2N2X3JlYWRlbGYsLCBbCitpZiB0ZXN0IC1m ICRnY2NfY3ZfYmludXRpbHNfc3JjZGlyL2NvbmZpZ3VyZS5pbiBcCisgICAg ICYmIHRlc3QgLWYgLi4vYmludXRpbHMvTWFrZWZpbGUgXAorICAgICAmJiB0 ZXN0IHgkYnVpbGQgPSB4JGhvc3Q7IHRoZW4KKwkjIFNpbmdsZSB0cmVlIGJ1 aWxkIHdoaWNoIGluY2x1ZGVzIGJpbnV0aWxzLgorCWdjY19jdl9yZWFkZWxm PS4uL2JpbnV0aWxzL3JlYWRlbGYkYnVpbGRfZXhlZXh0CitlbGlmIHRlc3Qg LXggcmVhZGVsZiRidWlsZF9leGVleHQ7IHRoZW4KKwlnY2NfY3ZfcmVhZGVs Zj0uL3JlYWRlbGYkYnVpbGRfZXhlZXh0CitlbHNlCisgICAgICAgIEFDX1BB VEhfUFJPRyhnY2NfY3ZfcmVhZGVsZiwgcmVhZGVsZikKK2ZpXSkKKworQUNf TVNHX0NIRUNLSU5HKHdoYXQgcmVhZGVsZiB0byB1c2UpCitpZiB0ZXN0ICIk Z2NjX2N2X3JlYWRlbGYiID0gLi4vYmludXRpbHMvcmVhZGVsZiRidWlsZF9l eGVleHQ7IHRoZW4KKwkjIFNpbmdsZSB0cmVlIGJ1aWxkIHdoaWNoIGluY2x1 ZGVzIGJpbnV0aWxzLgorCUFDX01TR19SRVNVTFQobmV3bHkgYnVpbHQgcmVh ZGVsZikKK2VsaWYgdGVzdCB4JGdjY19jdl9yZWFkZWxmID0geDsgdGhlbgor CUFDX01TR19SRVNVTFQobm90IGZvdW5kKQorZWxzZQorCUFDX01TR19SRVNV TFQoJGdjY19jdl9yZWFkZWxmKQorZmkKKwogZ2NjX0FDX0lOSVRGSU5JX0FS UkFZCiAKICMgbWtkaXIgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQgb24gc29t ZSBzeXN0ZW1zLiAKQEAgLTE4OTIsMjMxICsyMTE3LDYgQEAgQUNfUFJPR19M SUJUT09MCiBBQ19TVUJTVChvYmpkaXIpCiBBQ19TVUJTVChlbmFibGVfZmFz dF9pbnN0YWxsKQogCi0jIElkZW50aWZ5IHRoZSBhc3NlbWJsZXIgd2hpY2gg d2lsbCB3b3JrIGhhbmQtaW4tZ2xvdmUgd2l0aCB0aGUgbmV3bHkKLSMgYnVp bHQgR0NDLCBzbyB0aGF0IHdlIGNhbiBleGFtaW5lIGl0cyBmZWF0dXJlcy4g IFRoaXMgaXMgdGhlIGFzc2VtYmxlcgotIyB3aGljaCB3aWxsIGJlIGRyaXZl biBieSB0aGUgZHJpdmVyIHByb2dyYW0uCi0jCi0jIElmIGJ1aWxkICE9IGhv c3QsIGFuZCB3ZSBhcmVuJ3QgYnVpbGRpbmcgZ2FzIGluLXRyZWUsIHdlIGlk ZW50aWZ5IGEKLSMgYnVpbGQtPnRhcmdldCBhc3NlbWJsZXIgYW5kIGhvcGUg dGhhdCBpdCB3aWxsIGhhdmUgdGhlIHNhbWUgZmVhdHVyZXMKLSMgYXMgdGhl IGhvc3QtPnRhcmdldCBhc3NlbWJsZXIgd2UnbGwgYmUgdXNpbmcuCi1nY2Nf Y3ZfZ2FzX21ham9yX3ZlcnNpb249Ci1nY2NfY3ZfZ2FzX21pbm9yX3ZlcnNp b249Ci1nY2NfY3ZfYXNfZ2FzX3NyY2Rpcj1gZWNobyAkc3JjZGlyIHwgc2Vk IC1lICdzLC9nY2MkLCwnYC9nYXMKLQotbTRfcGF0dGVybl9hbGxvdyhbQVNf Rk9SX1RBUkdFVF0pZG5sCi1BU19WQVJfU0VUX0lGKGdjY19jdl9hcywsIFsK LWlmIHRlc3QgLXggIiRERUZBVUxUX0FTU0VNQkxFUiI7IHRoZW4KLQlnY2Nf Y3ZfYXM9IiRERUZBVUxUX0FTU0VNQkxFUiIKLWVsaWYgdGVzdCAtZiAkZ2Nj X2N2X2FzX2dhc19zcmNkaXIvY29uZmlndXJlLmluIFwKLSAgICAgJiYgdGVz dCAtZiAuLi9nYXMvTWFrZWZpbGUgXAotICAgICAmJiB0ZXN0IHgkYnVpbGQg PSB4JGhvc3Q7IHRoZW4KLQlnY2NfY3ZfYXM9Li4vZ2FzL2FzLW5ldyRidWls ZF9leGVleHQKLWVsaWYgdGVzdCAteCBhcyRidWlsZF9leGVleHQ7IHRoZW4K LQkjIEJ1aWxkIHVzaW5nIGFzc2VtYmxlciBpbiB0aGUgY3VycmVudCBkaXJl Y3RvcnkuCi0JZ2NjX2N2X2FzPS4vYXMkYnVpbGRfZXhlZXh0Ci1lbGlmICgg c2V0IGR1bW15ICRBU19GT1JfVEFSR0VUOyB0ZXN0IC14ICRbMl0gKTsgdGhl bgotICAgICAgICBnY2NfY3ZfYXM9IiRBU19GT1JfVEFSR0VUIgotZWxzZQot ICAgICAgICBBQ19QQVRIX1BST0coZ2NjX2N2X2FzLCAkQVNfRk9SX1RBUkdF VCkKLWZpXSkKLQotT1JJR0lOQUxfQVNfRk9SX1RBUkdFVD0kZ2NjX2N2X2Fz Ci1BQ19TVUJTVChPUklHSU5BTF9BU19GT1JfVEFSR0VUKQotY2FzZSAiJE9S SUdJTkFMX0FTX0ZPUl9UQVJHRVQiIGluCi0gIC4vYXMgfCAuL2FzJGJ1aWxk X2V4ZWV4dCkgOzsKLSAgKikgQUNfQ09ORklHX0ZJTEVTKGFzOmV4ZWMtdG9v bC5pbiwgW2NobW9kICt4IGFzXSkgOzsKLWVzYWMgCi0KLUFDX01TR19DSEVD S0lORyh3aGF0IGFzc2VtYmxlciB0byB1c2UpCi1pZiB0ZXN0ICIkZ2NjX2N2 X2FzIiA9IC4uL2dhcy9hcy1uZXckYnVpbGRfZXhlZXh0OyB0aGVuCi0gICMg U2luZ2xlIHRyZWUgYnVpbGQgd2hpY2ggaW5jbHVkZXMgZ2FzLiAgV2Ugd2Fu dCB0byBwcmVmZXIgaXQKLSAgIyBvdmVyIHdoYXRldmVyIGxpbmtlciB0b3At bGV2ZWwgbWF5IGhhdmUgZGV0ZWN0ZWQsIHNpbmNlCi0gICMgd2UnbGwgdXNl IHdoYXQgd2UncmUgYnVpbGRpbmcgYWZ0ZXIgaW5zdGFsbGF0aW9uIGFueXdh eS4KLSAgQUNfTVNHX1JFU1VMVChuZXdseSBidWlsdCBnYXMpCi0gIGluX3Ry ZWVfZ2FzPXllcwotICBfZ2NjX0NPTVBVVEVfR0FTX1ZFUlNJT04KLSAgaW5f dHJlZV9nYXNfaXNfZWxmPW5vCi0gIGlmIGdyZXAgJ29ial9mb3JtYXQgPSBl bGYnIC4uL2dhcy9NYWtlZmlsZSA+IC9kZXYvbnVsbCBcCi0gICAgIHx8IChn cmVwICdvYmpfZm9ybWF0ID0gbXVsdGknIC4uL2dhcy9NYWtlZmlsZSBcCi0g ICAgICAgICAmJiBncmVwICdleHRyYV9vYmplY3RzID0uKiBvYmotZWxmJyAu Li9nYXMvTWFrZWZpbGUpID4gL2Rldi9udWxsCi0gIHRoZW4KLSAgICBpbl90 cmVlX2dhc19pc19lbGY9eWVzCi0gIGZpCi1lbHNlCi0gIEFDX01TR19SRVNV TFQoJGdjY19jdl9hcykKLSAgaW5fdHJlZV9nYXM9bm8KLWZpCi0KLSMgSWRl bnRpZnkgdGhlIGxpbmtlciB3aGljaCB3aWxsIHdvcmsgaGFuZC1pbi1nbG92 ZSB3aXRoIHRoZSBuZXdseQotIyBidWlsdCBHQ0MsIHNvIHRoYXQgd2UgY2Fu IGV4YW1pbmUgaXRzIGZlYXR1cmVzLiAgVGhpcyBpcyB0aGUgbGlua2VyCi0j IHdoaWNoIHdpbGwgYmUgZHJpdmVuIGJ5IHRoZSBkcml2ZXIgcHJvZ3JhbS4K LSMKLSMgSWYgYnVpbGQgIT0gaG9zdCwgYW5kIHdlIGFyZW4ndCBidWlsZGlu ZyBnYXMgaW4tdHJlZSwgd2UgaWRlbnRpZnkgYQotIyBidWlsZC0+dGFyZ2V0 IGxpbmtlciBhbmQgaG9wZSB0aGF0IGl0IHdpbGwgaGF2ZSB0aGUgc2FtZSBm ZWF0dXJlcwotIyBhcyB0aGUgaG9zdC0+dGFyZ2V0IGxpbmtlciB3ZSdsbCBi ZSB1c2luZy4KLWdjY19jdl9nbGRfbWFqb3JfdmVyc2lvbj0KLWdjY19jdl9n bGRfbWlub3JfdmVyc2lvbj0KLWdjY19jdl9sZF9nbGRfc3JjZGlyPWBlY2hv ICRzcmNkaXIgfCBzZWQgLWUgJ3MsL2djYyQsLCdgL2xkCi1nY2NfY3ZfbGRf YmZkX3NyY2Rpcj1gZWNobyAkc3JjZGlyIHwgc2VkIC1lICdzLC9nY2MkLCwn YC9iZmQKLQotQVNfVkFSX1NFVF9JRihnY2NfY3ZfbGQsLCBbCi1pZiB0ZXN0 IC14ICIkREVGQVVMVF9MSU5LRVIiOyB0aGVuCi0JZ2NjX2N2X2xkPSIkREVG QVVMVF9MSU5LRVIiCi1lbGlmIHRlc3QgLWYgJGdjY19jdl9sZF9nbGRfc3Jj ZGlyL2NvbmZpZ3VyZS5pbiBcCi0gICAgICYmIHRlc3QgLWYgLi4vbGQvTWFr ZWZpbGUgXAotICAgICAmJiB0ZXN0IHgkYnVpbGQgPSB4JGhvc3Q7IHRoZW4K LQlnY2NfY3ZfbGQ9Li4vbGQvbGQtbmV3JGJ1aWxkX2V4ZWV4dAotZWxpZiB0 ZXN0IC14IGNvbGxlY3QtbGQkYnVpbGRfZXhlZXh0OyB0aGVuCi0JIyBCdWls ZCB1c2luZyBsaW5rZXIgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotCWdj Y19jdl9sZD0uL2NvbGxlY3QtbGQkYnVpbGRfZXhlZXh0Ci1lbGlmICggc2V0 IGR1bW15ICRMRF9GT1JfVEFSR0VUOyB0ZXN0IC14ICRbMl0gKTsgdGhlbgot ICAgICAgICBnY2NfY3ZfbGQ9IiRMRF9GT1JfVEFSR0VUIgotZWxzZQotICAg ICAgICBBQ19QQVRIX1BST0coZ2NjX2N2X2xkLCAkTERfRk9SX1RBUkdFVCkK LWZpXSkKLQotT1JJR0lOQUxfUExVR0lOX0xEX0ZPUl9UQVJHRVQ9JGdjY19j dl9sZAotUExVR0lOX0xEPWBiYXNlbmFtZSAkZ2NjX2N2X2xkYAotQUNfQVJH X1dJVEgocGx1Z2luLWxkLAotW0FTX0hFTFBfU1RSSU5HKFtbLS13aXRoLXBs dWdpbi1sZD1bQVJHXV1dLCBbc3BlY2lmeSB0aGUgcGx1Z2luIGxpbmtlcl0p XSwKLVtpZiB0ZXN0IHgiJHdpdGh2YWwiICE9IHg7IHRoZW4KLSAgIE9SSUdJ TkFMX1BMVUdJTl9MRF9GT1JfVEFSR0VUPSIkd2l0aHZhbCIKLSAgIFBMVUdJ Tl9MRD0iJHdpdGh2YWwiCi0gZmldKQotQUNfU1VCU1QoT1JJR0lOQUxfUExV R0lOX0xEX0ZPUl9UQVJHRVQpCi1BQ19ERUZJTkVfVU5RVU9URUQoUExVR0lO X0xELCAiJFBMVUdJTl9MRCIsIFtTcGVjaWZ5IHBsdWdpbiBsaW5rZXJdKQot Ci0jIENoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgdXNpbmcgZ29sZCBpbnN0ZWFk IG9mIGxkCi1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB3ZSBhcmUgdXNpbmcg Z29sZCkKLWxkX2lzX2dvbGQ9bm8KLWlmIHRlc3QgeCRnY2NfY3ZfbGQgIT0g eDsgdGhlbgotICBpZiAkZ2NjX2N2X2xkIC0tdmVyc2lvbiAyPi9kZXYvbnVs bCB8IHNlZCAxcSBcCi0gICAgIHwgZ3JlcCAiR05VIGdvbGQiID4gL2Rldi9u dWxsOyB0aGVuCi0gICAgbGRfaXNfZ29sZD15ZXMKLSAgZmkKLWZpCi1BQ19N U0dfUkVTVUxUKCRsZF9pc19nb2xkKQotCi1PUklHSU5BTF9MRF9GT1JfVEFS R0VUPSRnY2NfY3ZfbGQKLUFDX1NVQlNUKE9SSUdJTkFMX0xEX0ZPUl9UQVJH RVQpCi1jYXNlICIkT1JJR0lOQUxfTERfRk9SX1RBUkdFVCIgaW4KLSAgLi9j b2xsZWN0LWxkIHwgLi9jb2xsZWN0LWxkJGJ1aWxkX2V4ZWV4dCkgOzsKLSAg KikgQUNfQ09ORklHX0ZJTEVTKGNvbGxlY3QtbGQ6ZXhlYy10b29sLmluLCBb Y2htb2QgK3ggY29sbGVjdC1sZF0pIDs7Ci1lc2FjIAotCi1BQ19NU0dfQ0hF Q0tJTkcod2hhdCBsaW5rZXIgdG8gdXNlKQotaWYgdGVzdCAiJGdjY19jdl9s ZCIgPSAuLi9sZC9sZC1uZXckYnVpbGRfZXhlZXh0IFwKLSAgIHx8IHRlc3Qg IiRnY2NfY3ZfbGQiID0gLi4vZ29sZC9sZC1uZXckYnVpbGRfZXhlZXh0OyB0 aGVuCi0JIyBTaW5nbGUgdHJlZSBidWlsZCB3aGljaCBpbmNsdWRlcyBsZC4g IFdlIHdhbnQgdG8gcHJlZmVyIGl0Ci0JIyBvdmVyIHdoYXRldmVyIGxpbmtl ciB0b3AtbGV2ZWwgbWF5IGhhdmUgZGV0ZWN0ZWQsIHNpbmNlCi0JIyB3ZSds bCB1c2Ugd2hhdCB3ZSdyZSBidWlsZGluZyBhZnRlciBpbnN0YWxsYXRpb24g YW55d2F5LgotCUFDX01TR19SRVNVTFQobmV3bHkgYnVpbHQgbGQpCi0JaW5f dHJlZV9sZD15ZXMKLQlpbl90cmVlX2xkX2lzX2VsZj1ubwotCWlmIChncmVw ICdFTVVMID0gLiplbGYnIC4uL2xkL01ha2VmaWxlIFwKLQkgICAgfHwgZ3Jl cCAnRU1VTCA9IC4qbGludXgnIC4uL2xkL01ha2VmaWxlIFwKLQkgICAgfHwg Z3JlcCAnRU1VTCA9IC4qbHlueCcgLi4vbGQvTWFrZWZpbGUpID4gL2Rldi9u dWxsOyB0aGVuCi0JICBpbl90cmVlX2xkX2lzX2VsZj15ZXMKLQllbGlmIHRl c3QgIiRsZF9pc19nb2xkIiA9IHllczsgdGhlbgotCSAgaW5fdHJlZV9sZF9p c19lbGY9eWVzCi0JZmkKLQlmb3IgZiBpbiAkZ2NjX2N2X2xkX2JmZF9zcmNk aXIvY29uZmlndXJlICRnY2NfY3ZfbGRfZ2xkX3NyY2Rpci9jb25maWd1cmUg JGdjY19jdl9sZF9nbGRfc3JjZGlyL2NvbmZpZ3VyZS5pbiAkZ2NjX2N2X2xk X2dsZF9zcmNkaXIvTWFrZWZpbGUuaW4KLQlkbwotY2hhbmdlcXVvdGUoLClk bmwKLQkJZ2NjX2N2X2dsZF92ZXJzaW9uPWBzZWQgLW4gLWUgJ3MvXlsgCV0q XChWRVJTSU9OPVswLTldKlwuWzAtOV0qLipcKS9cMS9wJyA8ICRmYAotCQlp ZiB0ZXN0IHgkZ2NjX2N2X2dsZF92ZXJzaW9uICE9IHg7IHRoZW4KLQkJCWJy ZWFrCi0JCWZpCi0JZG9uZQotCWdjY19jdl9nbGRfbWFqb3JfdmVyc2lvbj1g ZXhwciAiJGdjY19jdl9nbGRfdmVyc2lvbiIgOiAiVkVSU0lPTj1cKFswLTld KlwpImAKLQlnY2NfY3ZfZ2xkX21pbm9yX3ZlcnNpb249YGV4cHIgIiRnY2Nf Y3ZfZ2xkX3ZlcnNpb24iIDogIlZFUlNJT049WzAtOV0qXC5cKFswLTldKlwp ImAKLWNoYW5nZXF1b3RlKFssXSlkbmwKLWVsc2UKLQlBQ19NU0dfUkVTVUxU KCRnY2NfY3ZfbGQpCi0JaW5fdHJlZV9sZD1ubwotZmkKLQotIyBGaWd1cmUg b3V0IHdoYXQgbm0gd2Ugd2lsbCBiZSB1c2luZy4KLWdjY19jdl9iaW51dGls c19zcmNkaXI9YGVjaG8gJHNyY2RpciB8IHNlZCAtZSAncywvZ2NjJCwsJ2Av YmludXRpbHMKLUFTX1ZBUl9TRVRfSUYoZ2NjX2N2X25tLCwgWwotaWYgdGVz dCAtZiAkZ2NjX2N2X2JpbnV0aWxzX3NyY2Rpci9jb25maWd1cmUuaW4gXAot ICAgICAmJiB0ZXN0IC1mIC4uL2JpbnV0aWxzL01ha2VmaWxlIFwKLSAgICAg JiYgdGVzdCB4JGJ1aWxkID0geCRob3N0OyB0aGVuCi0JZ2NjX2N2X25tPS4u L2JpbnV0aWxzL25tLW5ldyRidWlsZF9leGVleHQKLWVsaWYgdGVzdCAteCBu bSRidWlsZF9leGVleHQ7IHRoZW4KLQlnY2NfY3Zfbm09Li9ubSRidWlsZF9l eGVleHQKLWVsaWYgKCBzZXQgZHVtbXkgJE5NX0ZPUl9UQVJHRVQ7IHRlc3Qg LXggJFsyXSApOyB0aGVuCi0gICAgICAgIGdjY19jdl9ubT0iJE5NX0ZPUl9U QVJHRVQiCi1lbHNlCi0gICAgICAgIEFDX1BBVEhfUFJPRyhnY2NfY3Zfbm0s ICROTV9GT1JfVEFSR0VUKQotZmldKQotCi1BQ19NU0dfQ0hFQ0tJTkcod2hh dCBubSB0byB1c2UpCi1pZiB0ZXN0ICIkZ2NjX2N2X25tIiA9IC4uL2JpbnV0 aWxzL25tLW5ldyRidWlsZF9leGVleHQ7IHRoZW4KLQkjIFNpbmdsZSB0cmVl IGJ1aWxkIHdoaWNoIGluY2x1ZGVzIGJpbnV0aWxzLgotCUFDX01TR19SRVNV TFQobmV3bHkgYnVpbHQgbm0pCi0JaW5fdHJlZV9ubT15ZXMKLWVsc2UKLQlB Q19NU0dfUkVTVUxUKCRnY2NfY3Zfbm0pCi0JaW5fdHJlZV9ubT1ubwotZmkK LQotT1JJR0lOQUxfTk1fRk9SX1RBUkdFVD0kZ2NjX2N2X25tCi1BQ19TVUJT VChPUklHSU5BTF9OTV9GT1JfVEFSR0VUKQotY2FzZSAiJE9SSUdJTkFMX05N X0ZPUl9UQVJHRVQiIGluCi0gIC4vbm0gfCAuL25tJGJ1aWxkX2V4ZWV4dCkg OzsKLSAgKikgQUNfQ09ORklHX0ZJTEVTKG5tOmV4ZWMtdG9vbC5pbiwgW2No bW9kICt4IG5tXSkgOzsKLWVzYWMKLQotCi0jIEZpZ3VyZSBvdXQgd2hhdCBv YmpkdW1wIHdlIHdpbGwgYmUgdXNpbmcuCi1BU19WQVJfU0VUX0lGKGdjY19j dl9vYmpkdW1wLCwgWwotaWYgdGVzdCAtZiAkZ2NjX2N2X2JpbnV0aWxzX3Ny Y2Rpci9jb25maWd1cmUuaW4gXAotICAgICAmJiB0ZXN0IC1mIC4uL2JpbnV0 aWxzL01ha2VmaWxlIFwKLSAgICAgJiYgdGVzdCB4JGJ1aWxkID0geCRob3N0 OyB0aGVuCi0JIyBTaW5nbGUgdHJlZSBidWlsZCB3aGljaCBpbmNsdWRlcyBi aW51dGlscy4KLQlnY2NfY3Zfb2JqZHVtcD0uLi9iaW51dGlscy9vYmpkdW1w JGJ1aWxkX2V4ZWV4dAotZWxpZiB0ZXN0IC14IG9iamR1bXAkYnVpbGRfZXhl ZXh0OyB0aGVuCi0JZ2NjX2N2X29iamR1bXA9Li9vYmpkdW1wJGJ1aWxkX2V4 ZWV4dAotZWxpZiAoIHNldCBkdW1teSAkT0JKRFVNUF9GT1JfVEFSR0VUOyB0 ZXN0IC14ICRbMl0gKTsgdGhlbgotICAgICAgICBnY2NfY3Zfb2JqZHVtcD0i JE9CSkRVTVBfRk9SX1RBUkdFVCIKLWVsc2UKLSAgICAgICAgQUNfUEFUSF9Q Uk9HKGdjY19jdl9vYmpkdW1wLCAkT0JKRFVNUF9GT1JfVEFSR0VUKQotZmld KQotCi1BQ19NU0dfQ0hFQ0tJTkcod2hhdCBvYmpkdW1wIHRvIHVzZSkKLWlm IHRlc3QgIiRnY2NfY3Zfb2JqZHVtcCIgPSAuLi9iaW51dGlscy9vYmpkdW1w JGJ1aWxkX2V4ZWV4dDsgdGhlbgotCSMgU2luZ2xlIHRyZWUgYnVpbGQgd2hp Y2ggaW5jbHVkZXMgYmludXRpbHMuCi0JQUNfTVNHX1JFU1VMVChuZXdseSBi dWlsdCBvYmpkdW1wKQotZWxpZiB0ZXN0IHgkZ2NjX2N2X29iamR1bXAgPSB4 OyB0aGVuCi0JQUNfTVNHX1JFU1VMVChub3QgZm91bmQpCi1lbHNlCi0JQUNf TVNHX1JFU1VMVCgkZ2NjX2N2X29iamR1bXApCi1maQotCi0jIEZpZ3VyZSBv dXQgd2hhdCByZWFkZWxmIHdlIHdpbGwgYmUgdXNpbmcuCi1BU19WQVJfU0VU X0lGKGdjY19jdl9yZWFkZWxmLCwgWwotaWYgdGVzdCAtZiAkZ2NjX2N2X2Jp bnV0aWxzX3NyY2Rpci9jb25maWd1cmUuaW4gXAotICAgICAmJiB0ZXN0IC1m IC4uL2JpbnV0aWxzL01ha2VmaWxlIFwKLSAgICAgJiYgdGVzdCB4JGJ1aWxk ID0geCRob3N0OyB0aGVuCi0JIyBTaW5nbGUgdHJlZSBidWlsZCB3aGljaCBp bmNsdWRlcyBiaW51dGlscy4KLQlnY2NfY3ZfcmVhZGVsZj0uLi9iaW51dGls cy9yZWFkZWxmJGJ1aWxkX2V4ZWV4dAotZWxpZiB0ZXN0IC14IHJlYWRlbGYk YnVpbGRfZXhlZXh0OyB0aGVuCi0JZ2NjX2N2X3JlYWRlbGY9Li9yZWFkZWxm JGJ1aWxkX2V4ZWV4dAotZWxzZQotICAgICAgICBBQ19QQVRIX1BST0coZ2Nj X2N2X3JlYWRlbGYsIHJlYWRlbGYpCi1maV0pCi0KLUFDX01TR19DSEVDS0lO Ryh3aGF0IHJlYWRlbGYgdG8gdXNlKQotaWYgdGVzdCAiJGdjY19jdl9yZWFk ZWxmIiA9IC4uL2JpbnV0aWxzL3JlYWRlbGYkYnVpbGRfZXhlZXh0OyB0aGVu Ci0JIyBTaW5nbGUgdHJlZSBidWlsZCB3aGljaCBpbmNsdWRlcyBiaW51dGls cy4KLQlBQ19NU0dfUkVTVUxUKG5ld2x5IGJ1aWx0IHJlYWRlbGYpCi1lbGlm IHRlc3QgeCRnY2NfY3ZfcmVhZGVsZiA9IHg7IHRoZW4KLQlBQ19NU0dfUkVT VUxUKG5vdCBmb3VuZCkKLWVsc2UKLQlBQ19NU0dfUkVTVUxUKCRnY2NfY3Zf cmVhZGVsZikKLWZpCi0KICMgRmlndXJlIG91dCB3aGF0IGFzc2VtYmxlciBh bGlnbm1lbnQgZmVhdHVyZXMgYXJlIHByZXNlbnQuCiBnY2NfR0FTX0NIRUNL X0ZFQVRVUkUoWy5iYWxpZ24gYW5kIC5wMmFsaWduXSwgZ2NjX2N2X2FzX2Jh bGlnbl9hbmRfcDJhbGlnbiwKICBbMiw2LDBdLCwK --20cf3005dc626a3ba904ab1b76c4--