From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23086 invoked by alias); 26 Apr 2011 13:05:32 -0000 Received: (qmail 23059 invoked by uid 22791); 26 Apr 2011 13:05:27 -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,RFC_ABUSE_POST X-Spam-Check-By: sourceware.org Received: from mail-qy0-f182.google.com (HELO mail-qy0-f182.google.com) (209.85.216.182) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 26 Apr 2011 13:05:05 +0000 Received: by qyk27 with SMTP id 27so300194qyk.20 for ; Tue, 26 Apr 2011 06:05:04 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.50.193 with SMTP id a1mr530799qcg.177.1303823103802; Tue, 26 Apr 2011 06:05:03 -0700 (PDT) Received: by 10.229.229.196 with HTTP; Tue, 26 Apr 2011 06:05:03 -0700 (PDT) In-Reply-To: References: Date: Tue, 26 Apr 2011 13:08:00 -0000 Message-ID: Subject: Re: PING: PATCH: PR target/46770: Use .init_array/.fini_array sections From: "H.J. Lu" To: GCC Patches , Ian Lance Taylor , Richard Henderson , Jeffrey Law , Diego Novillo Content-Type: multipart/mixed; boundary=00163646cedef3c00004a1d1f83a 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-04/txt/msg02037.txt.bz2 --00163646cedef3c00004a1d1f83a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3692 On Thu, Mar 31, 2011 at 7:57 AM, H.J. Lu wrote: > On Mon, Mar 21, 2011 at 11:40 AM, H.J. Lu wrote: >> On Mon, Mar 14, 2011 at 12:28 PM, H.J. Lu wrote: >>> On Thu, Jan 27, 2011 at 2:40 AM, Richard Guenther >>> wrote: >>>> On Thu, Jan 27, 2011 at 12:12 AM, H.J. Lu wrote: >>>>> On Tue, Dec 14, 2010 at 05:20:48PM -0800, H.J. Lu wrote: >>>>>> This patch uses .init_array/.fini_array sections instead of >>>>>> .ctors/.dtors sections if mixing .init_array/.fini_array and >>>>>> .ctors/.dtors sections with init_priority works. >>>>>> >>>>>> It removes .ctors/.ctors sections from executables and DSOes, which = will >>>>>> remove one function call at startup time from each executable and DS= O. >>>>>> It should reduce image size and improve system startup time. >>>>>> >>>>>> If a platform with a working .init_array/.fini_array support needs a >>>>>> different .init_array/.fini_array implementation, it can set >>>>>> use_initfini_array to no. >>>>>> >>>>>> Since .init_array/.fini_array is a target feature. --enable-initfini= -array >>>>>> is default to no unless the native run-time test is passed. >>>>>> >>>>>> To pass the native run-time test, a linker with SORT_BY_INIT_PRIORITY >>>>>> support is required. =A0The binutils patch is available at >>>>>> >>>>>> http://sourceware.org/ml/binutils/2010-12/msg00466.html >>>>> >>>>> Linker patch has been checked in. >>>>> >>>>>> >>>>>> This patch passed 32bit/64bit regression test on Linux/x86-64. =A0Any >>>>>> comments? >>>>>> >>>>> >>>>> This updated patch fixes build on Linux/ia64 and should work on other= s. >>>>> Any comments? >>>> >>>> Yes. =A0This is stage1 material. >>>> >>> >>> Here is the updated patch. =A0OK for trunk? >>> >>> Thanks. >>> >>> >>> -- >>> H.J. >>> ---- >>> 2011-03-14 =A0H.J. Lu =A0 >>> >>> =A0 =A0 =A0 =A0PR target/46770 >>> =A0 =A0 =A0 =A0* acinclude.m4 (gcc_AC_INITFINI_ARRAY): Removed. >>> >>> =A0 =A0 =A0 =A0* config.gcc (use_initfini_array): New variable. >>> =A0 =A0 =A0 =A0Use initfini-array.o if supported. >>> >>> =A0 =A0 =A0 =A0* crtstuff.c: Don't generate .ctors nor .dtors sections = if >>> =A0 =A0 =A0 =A0NO_CTORS_DTORS_SECTIONS is defined. >>> >>> =A0 =A0 =A0 =A0* configure.ac: Remove gcc_AC_INITFINI_ARRAY. =A0Add >>> =A0 =A0 =A0 =A0--enable-initfini-array and check if .init_array can be = used with >>> =A0 =A0 =A0 =A0.ctors. >>> >>> =A0 =A0 =A0 =A0* configure: Regenerated. >>> >>> =A0 =A0 =A0 =A0* config/initfini-array.c: New. >>> =A0 =A0 =A0 =A0* config/initfini-array.h: Likewise. >>> =A0 =A0 =A0 =A0* config/t-initfini-array: Likewise. >>> >>> =A0 =A0 =A0 =A0* config/arm/arm.c (arm_asm_init_sections): Call >>> =A0 =A0 =A0 =A0elf_initfini_array_init_sections if NO_CTORS_DTORS_SECTI= ONS >>> =A0 =A0 =A0 =A0is defined. >>> =A0 =A0 =A0 =A0* config/avr/avr.c (avr_asm_init_sections): Likewise. >>> =A0 =A0 =A0 =A0* config/ia64/ia64.c (ia64_asm_init_sections): Likewise. >>> =A0 =A0 =A0 =A0* config/mep/mep.c (mep_asm_init_sections): Likewise. >>> =A0 =A0 =A0 =A0* config/microblaze/microblaze.c (microblaze_elf_asm_ini= t_sections): >>> =A0 =A0 =A0 =A0Likewise. >>> =A0 =A0 =A0 =A0* config/rs6000/rs6000.c (rs6000_elf_asm_init_sections):= Likewise. >>> =A0 =A0 =A0 =A0* config/stormy16/stormy16.c (xstormy16_asm_init_section= s): >>> =A0 =A0 =A0 =A0Likewise. >>> =A0 =A0 =A0 =A0* config/v850/v850.c (v850_asm_init_sections): Likewise. >>> >> >> PING: >> >> http://gcc.gnu.org/ml/gcc-patches/2011-03/msg00760.html >> > > Any comments? =A0Any objections? > Here is the patch updated for the current trunk. OK for trunk? Thanks. --=20 H.J. --00163646cedef3c00004a1d1f83a Content-Type: text/plain; charset=US-ASCII; name="gcc-pr46770-5.patch" Content-Disposition: attachment; filename="gcc-pr46770-5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gmyujtia0 Content-length: 29028 VGhpcyBwYXRjaCB1c2VzIC5pbml0X2FycmF5Ly5maW5pX2FycmF5IHNlY3Rp b25zIGluc3RlYWQgb2YKLmN0b3JzLy5kdG9ycyBzZWN0aW9ucyBpZiBtaXhp bmcgLmluaXRfYXJyYXkvLmZpbmlfYXJyYXkgYW5kCi5jdG9ycy8uZHRvcnMg c2VjdGlvbnMgd2l0aCBpbml0X3ByaW9yaXR5IHdvcmtzLgoKSXQgcmVtb3Zl cyAuY3RvcnMvLmN0b3JzIHNlY3Rpb25zIGZyb20gZXhlY3V0YWJsZXMgYW5k IERTT2VzLCB3aGljaCB3aWxsCnJlbW92ZSBvbmUgZnVuY3Rpb24gY2FsbCBh dCBzdGFydHVwIHRpbWUgZnJvbSBlYWNoIGV4ZWN1dGFibGUgYW5kIERTTy4K SXQgc2hvdWxkIHJlZHVjZSBpbWFnZSBzaXplIGFuZCBpbXByb3ZlIHN5c3Rl bSBzdGFydHVwIHRpbWUuIAoKSWYgYSBwbGF0Zm9ybSB3aXRoIGEgd29ya2lu ZyAuaW5pdF9hcnJheS8uZmluaV9hcnJheSBzdXBwb3J0IG5lZWRzIGEKZGlm ZmVyZW50IC5pbml0X2FycmF5Ly5maW5pX2FycmF5IGltcGxlbWVudGF0aW9u LCBpdCBjYW4gc2V0CnVzZV9pbml0ZmluaV9hcnJheSB0byBuby4KClNpbmNl IC5pbml0X2FycmF5Ly5maW5pX2FycmF5IGlzIGEgdGFyZ2V0IGZlYXR1cmUu IC0tZW5hYmxlLWluaXRmaW5pLWFycmF5CmlzIGRlZmF1bHQgdG8gbm8gdW5s ZXNzIHRoZSBuYXRpdmUgcnVuLXRpbWUgdGVzdCBpcyBwYXNzZWQuCgpUbyBw YXNzIHRoZSBuYXRpdmUgcnVuLXRpbWUgdGVzdCwgYSBsaW5rZXIgd2l0aCBT T1JUX0JZX0lOSVRfUFJJT1JJVFkKc3VwcG9ydCBpcyByZXF1aXJlZC4gIFRo ZSBiaW51dGlscyBwYXRjaCBpcyBhdmFpbGFibGUgYXQKCmh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDEwLTEyL21zZzAwNDY2Lmh0bWwK ClRoaXMgcGF0Y2ggcGFzc2VkIDMyYml0LzY0Yml0IHJlZ3Jlc3Npb24gdGVz dCBvbiBMaW51eC94ODYtNjQuCgpUaGFua3MuCgpILkouCi0tLQoyMDEwLTEy LTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJUFIgdGFy Z2V0LzQ2NzcwCgkqIGFjaW5jbHVkZS5tNCAoZ2NjX0FDX0lOSVRGSU5JX0FS UkFZKTogUmVtb3ZlZC4KCgkqIGNvbmZpZy5nY2MgKHVzZV9pbml0ZmluaV9h cnJheSk6IE5ldyB2YXJpYWJsZS4KCVVzZSBpbml0ZmluaS1hcnJheS5vIGlm IHN1cHBvcnRlZC4KCgkqIGNydHN0dWZmLmM6IERvbid0IGdlbmVyYXRlIC5j dG9ycyBub3IgLmR0b3JzIHNlY3Rpb25zIGlmCglOT19DVE9SU19EVE9SU19T RUNUSU9OUyBpcyBkZWZpbmVkLgoKCSogY29uZmlndXJlLmFjOiBSZW1vdmUg Z2NjX0FDX0lOSVRGSU5JX0FSUkFZLiAgQWRkCgktLWVuYWJsZS1pbml0Zmlu aS1hcnJheSBhbmQgY2hlY2sgaWYgLmluaXRfYXJyYXkgY2FuIGJlIHVzZWQg d2l0aAoJLmN0b3JzLgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkq IGNvbmZpZy9pbml0ZmluaS1hcnJheS5jOiBOZXcuCgkqIGNvbmZpZy9pbml0 ZmluaS1hcnJheS5oOiBMaWtld2lzZS4KCSogY29uZmlnL3QtaW5pdGZpbmkt YXJyYXk6IExpa2V3aXNlLgoKCSogY29uZmlnL2FybS9hcm0uYyAoYXJtX2Fz bV9pbml0X3NlY3Rpb25zKTogQ2FsbAoJZWxmX2luaXRmaW5pX2FycmF5X2lu aXRfc2VjdGlvbnMgaWYgTk9fQ1RPUlNfRFRPUlNfU0VDVElPTlMKCWlzIGRl ZmluZWQuCgkqIGNvbmZpZy9hdnIvYXZyLmMgKGF2cl9hc21faW5pdF9zZWN0 aW9ucyk6IExpa2V3aXNlLgoJKiBjb25maWcvaWE2NC9pYTY0LmMgKGlhNjRf YXNtX2luaXRfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogY29uZmlnL21lcC9t ZXAuYyAobWVwX2FzbV9pbml0X3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGNv bmZpZy9taWNyb2JsYXplL21pY3JvYmxhemUuYyAobWljcm9ibGF6ZV9lbGZf YXNtX2luaXRfc2VjdGlvbnMpOgoJTGlrZXdpc2UuCgkqIGNvbmZpZy9yczYw MDAvcnM2MDAwLmMgKHJzNjAwMF9lbGZfYXNtX2luaXRfc2VjdGlvbnMpOiBM aWtld2lzZS4KCSogY29uZmlnL3N0b3JteTE2L3N0b3JteTE2LmMgKHhzdG9y bXkxNl9hc21faW5pdF9zZWN0aW9ucyk6CglMaWtld2lzZS4KCSogY29uZmln L3Y4NTAvdjg1MC5jICh2ODUwX2FzbV9pbml0X3NlY3Rpb25zKTogTGlrZXdp c2UuCgpkaWZmIC0tZ2l0IGEvZ2NjL2FjaW5jbHVkZS5tNCBiL2djYy9hY2lu Y2x1ZGUubTQKaW5kZXggM2VlYzU1OS4uMGY1ZjY4NiAxMDA2NDQKLS0tIGEv Z2NjL2FjaW5jbHVkZS5tNAorKysgYi9nY2MvYWNpbmNsdWRlLm00CkBAIC0z NjksMjYgKzM2OSw2IEBAIGVsc2UKIGZpCiBmaV0pCiAKLUFDX0RFRlVOKFtn Y2NfQUNfSU5JVEZJTklfQVJSQVldLAotW0FDX0FSR19FTkFCTEUoaW5pdGZp bmktYXJyYXksCi0JWyAgLS1lbmFibGUtaW5pdGZpbmktYXJyYXkJdXNlIC5p bml0X2FycmF5Ly5maW5pX2FycmF5IHNlY3Rpb25zXSwKLQlbXSwgWwotQUNf Q0FDSEVfQ0hFQ0soZm9yIC5wcmVpbml0X2FycmF5Ly5pbml0X2FycmF5Ly5m aW5pX2FycmF5IHN1cHBvcnQsCi0JCSBnY2NfY3ZfaW5pdGZpbmlfYXJyYXks IFtkbmwKLSAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWwotc3Rh dGljIGludCB4ID0gLTE7Ci1pbnQgbWFpbiAodm9pZCkgeyByZXR1cm4geDsg fQotaW50IGZvbyAodm9pZCkgeyB4ID0gMDsgfQotaW50ICgqZnApICh2b2lk KSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbml0X2FycmF5IikpKSA9 IGZvbztdKV0sCi0JICAgICBbZ2NjX2N2X2luaXRmaW5pX2FycmF5PXllc10s IFtnY2NfY3ZfaW5pdGZpbmlfYXJyYXk9bm9dLAotCSAgICAgW2djY19jdl9p bml0ZmluaV9hcnJheT1ub10pXSkKLSAgZW5hYmxlX2luaXRmaW5pX2FycmF5 PSRnY2NfY3ZfaW5pdGZpbmlfYXJyYXkKLV0pCi1pZiB0ZXN0ICRlbmFibGVf aW5pdGZpbmlfYXJyYXkgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKEhBVkVf SU5JVEZJTklfQVJSQVksIDEsCi0gICAgW0RlZmluZSAuaW5pdF9hcnJheS8u ZmluaV9hcnJheSBzZWN0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCB3b3JraW5n Ll0pCi1maV0pCi0KIGRubCAjIF9nY2NfQ09NUFVURV9HQVNfVkVSU0lPTgog ZG5sICMgVXNlZCBieSBnY2NfR0FTX1ZFUlNJT05fR1RFX0lGRUxTRQogZG5s ICMKZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5n Y2MKaW5kZXggN2MzMThkZS4uN2MyN2E5YiAxMDA2NDQKLS0tIGEvZ2NjL2Nv bmZpZy5nY2MKKysrIGIvZ2NjL2NvbmZpZy5nY2MKQEAgLTE3Nyw2ICsxNzcs OSBAQAogIyAgY29uZmlndXJlX2RlZmF1bHRfb3B0aW9ucwogIwkJCVNldCB0 byBhbiBpbml0aWFsaXplciBmb3IgY29uZmlndXJlX2RlZmF1bHRfb3B0aW9u cwogIwkJCWluIGNvbmZpZ2FyZ3MuaCwgYmFzZWQgb24gLS13aXRoLWNwdSBl dCBjZXRlcmEuCisjCisjICB1c2VfaW5pdGZpbmlfYXJyYXkJSWYgc2V0IHRv IHllcywgLmluaXRfYXJyYXkvLmZpbmlfYXJyYXkgc2VjdGlvbnMKKyMJCQl3 aWxsIGJlIHVzZWQgaWYgdGhleSB3b3JrLgogCiAjIFRoZSBmb2xsb3dpbmcg dmFyaWFibGVzIGFyZSB1c2VkIGluIGVhY2ggY2FzZS1jb25zdHJ1Y3QgdG8g YnVpbGQgdXAgdGhlCiAjIG91dGdvaW5nIHZhcmlhYmxlczoKQEAgLTIyMyw2 ICsyMjYsNyBAQCBkZWZhdWx0X2dudV9pbmRpcmVjdF9mdW5jdGlvbj1ubwog dGFyZ2V0X2d0ZmlsZXM9CiBuZWVkXzY0Yml0X2h3aW50PQogbmVlZF82NGJp dF9pc2E9Cit1c2VfaW5pdGZpbmlfYXJyYXk9eWVzCiAKICMgRG9uJ3QgY2Fy cnkgdGhlc2Ugb3ZlciBidWlsZC0+aG9zdC0+dGFyZ2V0LiAgUGxlYXNlLgog eG1fZmlsZT0KQEAgLTMwMzcsNiArMzA0MSwxNiBAQCBpZiB0ZXN0IHgkd2l0 aF9zY2hlZHVsZSA9IHg7IHRoZW4KIAllc2FjCiBmaQogCisjIFN1cHBvcnQg LS1lbmFibGUtaW5pdGZpbmktYXJyYXkuICBVc2UgaW5pdGZpbmktYXJyYXku aCBvbmx5IGlmCisjIHVzZV9pbml0ZmluaV9hcnJheSBpcyBhbHNvIHNldCB0 byB5ZXMuICBTb21lIHBsYXRmb3JtcyBkb24ndCBuZWVkIGl0CisjIGV2ZW4g aWYgZW5hYmxlX2luaXRmaW5pX2FycmF5IGlzIHllcy4KK2lmIHRlc3QgeCRl bmFibGVfaW5pdGZpbmlfYXJyYXkkdXNlX2luaXRmaW5pX2FycmF5ID0geHll c3llczsgdGhlbgorICB0bV9maWxlPSIke3RtX2ZpbGV9IGluaXRmaW5pLWFy cmF5LmgiCisgIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gdC1pbml0Zmlu aS1hcnJheSIKKyAgZXh0cmFfb2Jqcz0iJGV4dHJhX29ianMgaW5pdGZpbmkt YXJyYXkubyIKKyAgdGFyZ2V0X2d0ZmlsZXM9IiR0YXJnZXRfZ3RmaWxlcyBc JChzcmNkaXIpL2NvbmZpZy9pbml0ZmluaS1hcnJheS5jIgorZmkKKwogIyBW YWxpZGF0ZSBhbmQgbWFyayBhcyB2YWxpZCBhbnkgLS13aXRoIG9wdGlvbnMg c3VwcG9ydGVkCiAjIGJ5IHRoaXMgdGFyZ2V0LiAgSW4gb3JkZXIgdG8gdXNl IGEgcGFydGljdWxhciAtLXdpdGggb3B0aW9uCiAjIHlvdSBtdXN0IGxpc3Qg aXQgaW4gc3VwcG9ydGVkX2RlZmF1bHRzOyB2YWxpZGF0aW5nIHRoZSB2YWx1 ZQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLmMgYi9nY2MvY29u ZmlnL2FybS9hcm0uYwppbmRleCA1Y2Y5YmQwLi5iZjhiZDA3IDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2FybS9hcm0uYworKysgYi9nY2MvY29uZmlnL2Fy bS9hcm0uYwpAQCAtMjI4ODEsNiArMjI4ODEsOSBAQCBhcm1fYXNtX2luaXRf c2VjdGlvbnMgKHZvaWQpCiB7CiAgIGV4Y2VwdGlvbl9zZWN0aW9uID0gZ2V0 X3VubmFtZWRfc2VjdGlvbiAoMCwgb3V0cHV0X3NlY3Rpb25fYXNtX29wLAog CQkJCQkgICAiXHQuaGFuZGxlcmRhdGEiKTsKKyNpZmRlZiBOT19DVE9SU19E VE9SU19TRUNUSU9OUworICBlbGZfaW5pdGZpbmlfYXJyYXlfaW5pdF9zZWN0 aW9ucyAoKTsKKyNlbmRpZgogfQogI2VuZGlmIC8qIEFSTV9VTldJTkRfSU5G TyAqLwogCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2F2ci9hdnIuYyBiL2dj Yy9jb25maWcvYXZyL2F2ci5jCmluZGV4IDkxODRkNmMuLmJmZWNhZjEgMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvYXZyL2F2ci5jCisrKyBiL2djYy9jb25m aWcvYXZyL2F2ci5jCkBAIC01MjY0LDYgKzUyNjQsMTAgQEAgYXZyX2FzbV9p bml0X3NlY3Rpb25zICh2b2lkKQogCQkJCQkgTlVMTCk7CiAgIHJlYWRvbmx5 X2RhdGFfc2VjdGlvbiA9IGRhdGFfc2VjdGlvbjsKIAorI2lmZGVmIE5PX0NU T1JTX0RUT1JTX1NFQ1RJT05TCisgIGVsZl9pbml0ZmluaV9hcnJheV9pbml0 X3NlY3Rpb25zICgpOworI2VuZGlmCisKICAgZGF0YV9zZWN0aW9uLT51bm5h bWVkLmNhbGxiYWNrID0gYXZyX291dHB1dF9kYXRhX3NlY3Rpb25fYXNtX29w OwogICBic3Nfc2VjdGlvbi0+dW5uYW1lZC5jYWxsYmFjayA9IGF2cl9vdXRw dXRfYnNzX3NlY3Rpb25fYXNtX29wOwogfQpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9pYTY0L2lhNjQuYyBiL2djYy9jb25maWcvaWE2NC9pYTY0LmMKaW5k ZXggMDUxMmVjZS4uODczMzQ2YSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9p YTY0L2lhNjQuYworKysgYi9nY2MvY29uZmlnL2lhNjQvaWE2NC5jCkBAIC0x MDA5Myw2ICsxMDA5Myw5IEBAIGlhNjRfYXNtX2luaXRfc2VjdGlvbnMgKHZv aWQpCiB7CiAgIGV4Y2VwdGlvbl9zZWN0aW9uID0gZ2V0X3VubmFtZWRfc2Vj dGlvbiAoMCwgb3V0cHV0X3NlY3Rpb25fYXNtX29wLAogCQkJCQkgICAiXHQu aGFuZGxlcmRhdGEiKTsKKyNpZmRlZiBOT19DVE9SU19EVE9SU19TRUNUSU9O UworICBlbGZfaW5pdGZpbmlfYXJyYXlfaW5pdF9zZWN0aW9ucyAoKTsKKyNl bmRpZgogfQogCiAvKiBJbXBsZW1lbnQgVEFSR0VUX0RFQlVHX1VOV0lORF9J TkZPLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaW5pdGZpbmktYXJy YXkuYyBiL2djYy9jb25maWcvaW5pdGZpbmktYXJyYXkuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWZkNDBmCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL2NvbmZpZy9pbml0ZmluaS1hcnJheS5jCkBAIC0wLDAg KzEsNzkgQEAKKy8qIERlZmluaXRpb25zIGZvciBFTEYgc3lzdGVtcyB3aXRo IC5pbml0X2FycmF5Ly5maW5pX2FycmF5IHNlY3Rpb24KKyAgIENvcHlyaWdo dCAoQykgMjAxMAorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKworR0NDIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIKK3RoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlcgordmVyc2lvbi4KKworR0NDIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX SVRIT1VUIEFOWQorV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKK0ZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKK2Fsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09Q WUlORzMuICBJZiBub3Qgc2VlCis8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi c3lzdGVtLmgiCisjaW5jbHVkZSAiY29yZXR5cGVzLmgiCisjaW5jbHVkZSAi dGFyZ2V0LmgiCisjaW5jbHVkZSAib3V0cHV0LmgiCisjaW5jbHVkZSAidHJl ZS5oIgorI2luY2x1ZGUgImdnYy5oIgorCitzdGF0aWMgR1RZKCgpKSBzZWN0 aW9uICppbml0X2FycmF5X3NlY3Rpb247CitzdGF0aWMgR1RZKCgpKSBzZWN0 aW9uICpmaW5pX2FycmF5X3NlY3Rpb247CisKK3ZvaWQKK2VsZl9pbml0Zmlu aV9hcnJheV9pbml0X3NlY3Rpb25zICh2b2lkKQoreworICBpbml0X2FycmF5 X3NlY3Rpb24gPSBnZXRfdW5uYW1lZF9zZWN0aW9uICgwLCBvdXRwdXRfc2Vj dGlvbl9hc21fb3AsCisJCQkJCSAgICAiXHQuc2VjdGlvblx0LmluaXRfYXJy YXkiKTsKKyAgZmluaV9hcnJheV9zZWN0aW9uID0gZ2V0X3VubmFtZWRfc2Vj dGlvbiAoMCwgb3V0cHV0X3NlY3Rpb25fYXNtX29wLAorCQkJCQkgICAgIlx0 LnNlY3Rpb25cdC5maW5pX2FycmF5Iik7Cit9CisKK3N0YXRpYyBzZWN0aW9u ICoKK2dldF9lbGZfaW5pdGZpbmlfYXJyYXlfcHJpb3JpdHlfc2VjdGlvbiAo aW50IHByaW9yaXR5LAorCQkJCQkgYm9vbCBjb25zdHJ1Y3Rvcl9wKQorewor ICBzZWN0aW9uICpzZWM7CisgIGlmIChwcmlvcml0eSAhPSBERUZBVUxUX0lO SVRfUFJJT1JJVFkpCisgICAgeworICAgICAgY2hhciBidWZbMThdOworICAg ICAgc3ByaW50ZiAoYnVmLCAiJXMuJS41dSIsIAorCSAgICAgICBjb25zdHJ1 Y3Rvcl9wID8gIi5pbml0X2FycmF5IiA6ICIuZmluaV9hcnJheSIsCisJICAg ICAgIHByaW9yaXR5KTsKKyAgICAgIHNlYyA9IGdldF9zZWN0aW9uIChidWYs IFNFQ1RJT05fV1JJVEUsIE5VTExfVFJFRSk7CisgICAgfQorICBlbHNlCisg ICAgc2VjID0gY29uc3RydWN0b3JfcCA/IGluaXRfYXJyYXlfc2VjdGlvbiA6 IGZpbmlfYXJyYXlfc2VjdGlvbjsKKyAgcmV0dXJuIHNlYzsKK30KKworLyog VXNlIC5pbml0X2FycmF5IHNlY3Rpb24gZm9yIGNvbnN0cnVjdG9ycy4gKi8K Kwordm9pZAorZWxmX2luaXRfYXJyYXlfYXNtX291dF9jb25zdHJ1Y3RvciAo cnR4IHN5bWJvbCwgaW50IHByaW9yaXR5KQoreworICBzZWN0aW9uICpzZWMg PSBnZXRfZWxmX2luaXRmaW5pX2FycmF5X3ByaW9yaXR5X3NlY3Rpb24gKHBy aW9yaXR5LAorCQkJCQkJCSAgdHJ1ZSk7CisgIGFzc2VtYmxlX2FkZHJfdG9f c2VjdGlvbiAoc3ltYm9sLCBzZWMpOworfQorCisvKiBVc2UgLmZpbmlfYXJy YXkgc2VjdGlvbiBmb3IgZGVzdHJ1Y3RvcnMuICovCisKK3ZvaWQKK2VsZl9m aW5pX2FycmF5X2FzbV9vdXRfZGVzdHJ1Y3RvciAocnR4IHN5bWJvbCwgaW50 IHByaW9yaXR5KQoreworICBzZWN0aW9uICpzZWMgPSBnZXRfZWxmX2luaXRm aW5pX2FycmF5X3ByaW9yaXR5X3NlY3Rpb24gKHByaW9yaXR5LAorCQkJCQkJ CSAgZmFsc2UpOworICBhc3NlbWJsZV9hZGRyX3RvX3NlY3Rpb24gKHN5bWJv bCwgc2VjKTsKK30KKworI2luY2x1ZGUgImd0LWluaXRmaW5pLWFycmF5Lmgi CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2luaXRmaW5pLWFycmF5LmggYi9n Y2MvY29uZmlnL2luaXRmaW5pLWFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYjBiNDIyYQotLS0gL2Rldi9udWxsCisrKyBi L2djYy9jb25maWcvaW5pdGZpbmktYXJyYXkuaApAQCAtMCwwICsxLDQ2IEBA CisvKiBEZWZpbml0aW9ucyBmb3IgRUxGIHN5c3RlbXMgd2l0aCAuaW5pdF9h cnJheS8uZmluaV9hcnJheSBzZWN0aW9uCisgICBzdXBwb3J0LgorICAgQ29w eXJpZ2h0IChDKSAyMDEwCisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorCisgICBH Q0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMsIG9yIChhdCB5b3VyCisgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorCisgICBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAgIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI QU5UQUJJTElUWQorICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4g IElmIG5vdCBzZWUKKyAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisKKy8qIE5vIG5lZWQgZm9yIC5jdG9ycy8uZHRvcnMgc2VjdGlv biBzaW5jZSBsaW5rZXIgY2FuIHBsYWNlIHRoZW0gaW4KKyAgIC5pbml0X2Fy cmF5Ly5maW5pX2FycmF5IHNlY3Rpb24uICAqLworI2RlZmluZSBOT19DVE9S U19EVE9SU19TRUNUSU9OUworCisjdW5kZWYgSU5JVF9TRUNUSU9OX0FTTV9P UAorI3VuZGVmIEZJTklfU0VDVElPTl9BU01fT1AKKworLyogRklYTUU6IElO SVRfQVJSQVlfU0VDVElPTl9BU01fT1AgYW5kIEZJTklfQVJSQVlfU0VDVElP Tl9BU01fT1AKKwkgIGFyZW4ndCB1c2VkIGluIGFueSBhc3NlbWJseSBjb2Rl cy4gIEJ1dCB3ZSBoYXZlIHRvIGRlZmluZQorCSAgdGhlbSB0byBzb21ldGhp bmcuICAqLworI2RlZmluZSBJTklUX0FSUkFZX1NFQ1RJT05fQVNNX09QIFNv bWV0aGluZworI2RlZmluZSBGSU5JX0FSUkFZX1NFQ1RJT05fQVNNX09QIFNv bWV0aGluZworCisjaWZuZGVmIFRBUkdFVF9BU01fSU5JVF9TRUNUSU9OUwor I2RlZmluZSBUQVJHRVRfQVNNX0lOSVRfU0VDVElPTlMgZWxmX2luaXRmaW5p X2FycmF5X2luaXRfc2VjdGlvbnMKKyNlbmRpZgorZXh0ZXJuIHZvaWQgZWxm X2luaXRmaW5pX2FycmF5X2luaXRfc2VjdGlvbnMgKHZvaWQpOworCisvKiBV c2UgLmluaXRfYXJyYXkvLmZpbmlfYXJyYXkgc2VjdGlvbiBmb3IgY29uc3Ry dWN0b3JzIGFuZCBkZXN0cnVjdG9ycy4gKi8KKyN1bmRlZiBUQVJHRVRfQVNN X0NPTlNUUlVDVE9SCisjZGVmaW5lIFRBUkdFVF9BU01fQ09OU1RSVUNUT1Ig ZWxmX2luaXRfYXJyYXlfYXNtX291dF9jb25zdHJ1Y3RvcgorI3VuZGVmIFRB UkdFVF9BU01fREVTVFJVQ1RPUgorI2RlZmluZSBUQVJHRVRfQVNNX0RFU1RS VUNUT1IgZWxmX2ZpbmlfYXJyYXlfYXNtX291dF9kZXN0cnVjdG9yCitleHRl cm4gdm9pZCBlbGZfaW5pdF9hcnJheV9hc21fb3V0X2NvbnN0cnVjdG9yIChy dHgsIGludCk7CitleHRlcm4gdm9pZCBlbGZfZmluaV9hcnJheV9hc21fb3V0 X2Rlc3RydWN0b3IgKHJ0eCwgaW50KTsKZGlmZiAtLWdpdCBhL2djYy9jb25m aWcvbWVwL21lcC5jIGIvZ2NjL2NvbmZpZy9tZXAvbWVwLmMKaW5kZXggNjBj ZjRlYi4uMmM3OWNmOSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9tZXAvbWVw LmMKKysrIGIvZ2NjL2NvbmZpZy9tZXAvbWVwLmMKQEAgLTczOTIsNiArNzM5 Miw5IEBAIG1lcF9hc21faW5pdF9zZWN0aW9ucyAodm9pZCkKICAgICA9IGdl dF91bm5hbWVkX3NlY3Rpb24gKFNFQ1RJT05fQ09ERSwgb3V0cHV0X3NlY3Rp b25fYXNtX29wLAogCQkJICAgIlx0LnNlY3Rpb24gLmZ0ZXh0LFwiYXhcIlxu XHQuY29yZSIpOwogCisjaWZkZWYgTk9fQ1RPUlNfRFRPUlNfU0VDVElPTlMK KyAgZWxmX2luaXRmaW5pX2FycmF5X2luaXRfc2VjdGlvbnMgKCk7CisjZW5k aWYKIH0KIAwKIC8qIEluaXRpYWxpemUgdGhlIEdDQyB0YXJnZXQgc3RydWN0 dXJlLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWljcm9ibGF6ZS9t aWNyb2JsYXplLmMgYi9nY2MvY29uZmlnL21pY3JvYmxhemUvbWljcm9ibGF6 ZS5jCmluZGV4IDFjZWM0MjUuLjEyYzJlNDYgMTAwNjQ0Ci0tLSBhL2djYy9j b25maWcvbWljcm9ibGF6ZS9taWNyb2JsYXplLmMKKysrIGIvZ2NjL2NvbmZp Zy9taWNyb2JsYXplL21pY3JvYmxhemUuYwpAQCAtMjc1MSw2ICsyNzUxLDkg QEAgbWljcm9ibGF6ZV9lbGZfYXNtX2luaXRfc2VjdGlvbnMgKHZvaWQpCiAg IHNkYXRhMl9zZWN0aW9uCiAgICAgPSBnZXRfdW5uYW1lZF9zZWN0aW9uIChT RUNUSU9OX1dSSVRFLCBvdXRwdXRfc2VjdGlvbl9hc21fb3AsCiAJCQkgICBT REFUQTJfU0VDVElPTl9BU01fT1ApOworI2lmZGVmIE5PX0NUT1JTX0RUT1JT X1NFQ1RJT05TCisgIGVsZl9pbml0ZmluaV9hcnJheV9pbml0X3NlY3Rpb25z ICgpOworI2VuZGlmCiB9CiAKIC8qICBHZW5lcmF0ZSBhc3NlbWJsZXIgY29k ZSBmb3IgY29uc3RhbnQgcGFydHMgb2YgYSB0cmFtcG9saW5lLiAgKi8KZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jIGIvZ2NjL2Nv bmZpZy9yczYwMDAvcnM2MDAwLmMKaW5kZXggNjExM2E3NS4uNjU2YzBiMiAx MDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMKKysrIGIv Z2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMKQEAgLTI1NDE1LDYgKzI1NDE1 LDEwIEBAIHJzNjAwMF9lbGZfYXNtX2luaXRfc2VjdGlvbnMgKHZvaWQpCiAg IHNkYXRhMl9zZWN0aW9uCiAgICAgPSBnZXRfdW5uYW1lZF9zZWN0aW9uIChT RUNUSU9OX1dSSVRFLCBvdXRwdXRfc2VjdGlvbl9hc21fb3AsCiAJCQkgICBT REFUQTJfU0VDVElPTl9BU01fT1ApOworCisjaWZkZWYgTk9fQ1RPUlNfRFRP UlNfU0VDVElPTlMKKyAgZWxmX2luaXRmaW5pX2FycmF5X2luaXRfc2VjdGlv bnMgKCk7CisjZW5kaWYKIH0KIAogLyogSW1wbGVtZW50IFRBUkdFVF9TRUxF Q1RfUlRYX1NFQ1RJT04uICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9z dG9ybXkxNi9zdG9ybXkxNi5jIGIvZ2NjL2NvbmZpZy9zdG9ybXkxNi9zdG9y bXkxNi5jCmluZGV4IDA1MjI4NWMuLjMwZTVhMDAgMTAwNjQ0Ci0tLSBhL2dj Yy9jb25maWcvc3Rvcm15MTYvc3Rvcm15MTYuYworKysgYi9nY2MvY29uZmln L3N0b3JteTE2L3N0b3JteTE2LmMKQEAgLTE1NjksNiArMTU2OSw5IEBAIHhz dG9ybXkxNl9hc21faW5pdF9zZWN0aW9ucyAodm9pZCkKICAgICA9IGdldF91 bm5hbWVkX3NlY3Rpb24gKFNFQ1RJT05fV1JJVEUgfCBTRUNUSU9OX0JTUywK IAkJCSAgIG91dHB1dF9zZWN0aW9uX2FzbV9vcCwKIAkJCSAgICJcdC5zZWN0 aW9uIFwiLmJzc19iZWxvdzEwMFwiLFwiYXdcIixAbm9iaXRzIik7CisjaWZk ZWYgTk9fQ1RPUlNfRFRPUlNfU0VDVElPTlMKKyAgZWxmX2luaXRmaW5pX2Fy cmF5X2luaXRfc2VjdGlvbnMgKCk7CisjZW5kaWYKIH0KIAogLyogTWFyayBz eW1ib2xzIHdpdGggdGhlICJiZWxvdzEwMCIgYXR0cmlidXRlIHNvIHRoYXQg d2UgY2FuIHVzZSB0aGUKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvdC1pbml0 ZmluaS1hcnJheSBiL2djYy9jb25maWcvdC1pbml0ZmluaS1hcnJheQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGNiMjVkCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL2NvbmZpZy90LWluaXRmaW5pLWFycmF5CkBA IC0wLDAgKzEsMjMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwCisjIDIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdDQy4KKyMKKyMgR0NDIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9u KQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgR0NDIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0 aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyMgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCitpbml0ZmluaS1hcnJheS5vOiAkKHNy Y2RpcikvY29uZmlnL2luaXRmaW5pLWFycmF5LmMgZ3QtaW5pdGZpbmktYXJy YXkuaCBcCisJJChDT05GSUdfSCkgJChTWVNURU1fSCkgY29yZXR5cGVzLmgg JChUQVJHRVRfSCkgb3V0cHV0LmggXAorCSQoVFJFRV9IKSAkKEdHQ19IKQor CSQoQ09NUElMRVIpIC1jICQoQUxMX0NPTVBJTEVSRkxBR1MpICQoQUxMX0NQ UEZMQUdTKSAkKElOQ0xVREVTKSAkPApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy92ODUwL3Y4NTAuYyBiL2djYy9jb25maWcvdjg1MC92ODUwLmMKaW5kZXgg ODY1MDllMC4uNGVmYWVhYSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy92ODUw L3Y4NTAuYworKysgYi9nY2MvY29uZmlnL3Y4NTAvdjg1MC5jCkBAIC0yOTgy LDYgKzI5ODIsMTAgQEAgdjg1MF9hc21faW5pdF9zZWN0aW9ucyAodm9pZCkK ICAgICA9IGdldF91bm5hbWVkX3NlY3Rpb24gKFNFQ1RJT05fV1JJVEUgfCBT RUNUSU9OX0JTUywKIAkJCSAgIG91dHB1dF9zZWN0aW9uX2FzbV9vcCwKIAkJ CSAgICJcdC5zZWN0aW9uIC56YnNzLFwiYXdcIiIpOworCisjaWZkZWYgTk9f Q1RPUlNfRFRPUlNfU0VDVElPTlMKKyAgZWxmX2luaXRmaW5pX2FycmF5X2lu aXRfc2VjdGlvbnMgKCk7CisjZW5kaWYKIH0KIAogc3RhdGljIHNlY3Rpb24g KgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUK aW5kZXggOTA1NmFkYi4uZDA4ZDE1YSAxMDA3NTUKLS0tIGEvZ2NjL2NvbmZp Z3VyZQorKysgYi9nY2MvY29uZmlndXJlCkBAIC0xMDQ0Miw2ICsxMDQ0Miw3 IEBAIGZpCiAjIFJlc3RvcmUgQ0ZMQUdTIGZyb20gYmVmb3JlIHRoZSBnY2Nf QUNfTkVFRF9ERUNMQVJBVElPTlMgdGVzdHMuCiBDRkxBR1M9IiRzYXZlZF9D RkxBR1MiCiAKKyMgQ2hlY2sgaWYgLmluaXRfYXJyYXkgY2FuIGJlIHVzZWQg d2l0aCAuY3RvcnMuCiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtaW5pdGZp bmktYXJyYXkgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfaW5pdGZp bmlfYXJyYXkrc2V0fSIgPSBzZXQ7IHRoZW4gOgogICBlbmFibGV2YWw9JGVu YWJsZV9pbml0ZmluaV9hcnJheTsKQEAgLTEwNDUyLDE2ICsxMDQ1MywxMDQg QEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC5wcmVpbml0X2FycmF5Ly5p bml0X2FycmF5Ly5maW5pX2FycmF5IHN1cHBvcnQuLi4gIiA+JjYKIGlmIHRl c3QgIiR7Z2NjX2N2X2luaXRmaW5pX2FycmF5K3NldH0iID0gc2V0OyB0aGVu IDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKKyAgICBp ZiB0ZXN0ICJ4JHtidWlsZH0iID0gIngke3RhcmdldH0iIDsgdGhlbgogICAg IGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKICAg Z2NjX2N2X2luaXRmaW5pX2FycmF5PW5vCiBlbHNlCiAgIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KIAotc3RhdGljIGludCB4ID0gLTE7Ci1pbnQgbWFpbiAo dm9pZCkgeyByZXR1cm4geDsgfQotaW50IGZvbyAodm9pZCkgeyB4ID0gMDsg fQotaW50ICgqZnApICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAo Ii5pbml0X2FycmF5IikpKSA9IGZvbzsKK2V4dGVybiB2b2lkIGFib3J0ICgp Oworc3RhdGljIGludCBjb3VudDsKKworc3RhdGljIHZvaWQKK2luaXQxMDA1 ICgpCit7CisgIGlmIChjb3VudCAhPSAwKQorICAgIGFib3J0ICgpOworICBj b3VudCA9IDEwMDU7Cit9Cit2b2lkICgqY29uc3QgaW5pdF9hcnJheTEwMDUp ICgpCisgIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmluaXRfYXJyYXku MDEwMDUiKSwgYWxpZ25lZCAoc2l6ZW9mICh2b2lkICopKSkpCisgID0geyBp bml0MTAwNSB9Oworc3RhdGljIHZvaWQKK2ZpbmkxMDA1ICgpCit7CisgIGlm IChjb3VudCAhPSAxMDA1KQorICAgIGFib3J0ICgpOworfQordm9pZCAoKmNv bnN0IGZpbmlfYXJyYXkxMDA1KSAoKQorICBfX2F0dHJpYnV0ZV9fICgoc2Vj dGlvbiAoIi5maW5pX2FycmF5LjAxMDA1IiksIGFsaWduZWQgKHNpemVvZiAo dm9pZCAqKSkpKQorICA9IHsgZmluaTEwMDUgfTsKKworc3RhdGljIHZvaWQK K2N0b3IxMDA3ICgpCit7CisgIGlmIChjb3VudCAhPSAxMDA1KQorICAgIGFi b3J0ICgpOworICBjb3VudCA9IDEwMDc7Cit9Cit2b2lkICgqY29uc3QgY3Rv cnMxMDA3KSAoKQorICBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5jdG9y cy42NDUyOCIpLCBhbGlnbmVkIChzaXplb2YgKHZvaWQgKikpKSkKKyAgPSB7 IGN0b3IxMDA3IH07CitzdGF0aWMgdm9pZAorZHRvcjEwMDcgKCkKK3sKKyAg aWYgKGNvdW50ICE9IDEwMDcpCisgICAgYWJvcnQgKCk7CisgIGNvdW50ID0g MTAwNTsKK30KK3ZvaWQgKCpjb25zdCBkdG9yczEwMDcpICgpCisgIF9fYXR0 cmlidXRlX18gKChzZWN0aW9uICgiLmR0b3JzLjY0NTI4IiksIGFsaWduZWQg KHNpemVvZiAodm9pZCAqKSkpKQorICA9IHsgZHRvcjEwMDcgfTsKKworc3Rh dGljIHZvaWQKK2luaXQ2NTUzMCAoKQoreworICBpZiAoY291bnQgIT0gMTAw NykKKyAgICBhYm9ydCAoKTsKKyAgY291bnQgPSA2NTUzMDsKK30KK3ZvaWQg KCpjb25zdCBpbml0X2FycmF5NjU1MzApICgpCisgIF9fYXR0cmlidXRlX18g KChzZWN0aW9uICgiLmluaXRfYXJyYXkuNjU1MzAiKSwgYWxpZ25lZCAoc2l6 ZW9mICh2b2lkICopKSkpCisgID0geyBpbml0NjU1MzAgfTsKK3N0YXRpYyB2 b2lkCitmaW5pNjU1MzAgKCkKK3sKKyAgaWYgKGNvdW50ICE9IDY1NTMwKQor ICAgIGFib3J0ICgpOworICBjb3VudCA9IDEwMDc7Cit9Cit2b2lkICgqY29u c3QgZmluaV9hcnJheTY1NTMwKSAoKQorICBfX2F0dHJpYnV0ZV9fICgoc2Vj dGlvbiAoIi5maW5pX2FycmF5LjY1NTMwIiksIGFsaWduZWQgKHNpemVvZiAo dm9pZCAqKSkpKQorICA9IHsgZmluaTY1NTMwIH07CisKK3N0YXRpYyB2b2lk CitjdG9yNjU1MzUgKCkKK3sKKyAgaWYgKGNvdW50ICE9IDY1NTMwKQorICAg IGFib3J0ICgpOworICBjb3VudCA9IDY1NTM1OworfQordm9pZCAoKmNvbnN0 IGN0b3JzNjU1MzUpICgpCisgIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgi LmN0b3JzIiksIGFsaWduZWQgKHNpemVvZiAodm9pZCAqKSkpKQorICA9IHsg Y3RvcjY1NTM1IH07CitzdGF0aWMgdm9pZAorZHRvcjY1NTM1ICgpCit7Cisg IGlmIChjb3VudCAhPSA2NTUzNSkKKyAgICBhYm9ydCAoKTsKKyAgY291bnQg PSA2NTUzMDsKK30KK3ZvaWQgKCpjb25zdCBkdG9yczY1NTM1KSAoKQorICBf X2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5kdG9ycyIpLCBhbGlnbmVkIChz aXplb2YgKHZvaWQgKikpKSkKKyAgPSB7IGR0b3I2NTUzNSB9OworCitpbnQK K21haW4gKCkKK3sKKyAgcmV0dXJuIDA7Cit9CiBfQUNFT0YKIGlmIGFjX2Zu X2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgogICBnY2NfY3ZfaW5pdGZp bmlfYXJyYXk9eWVzCkBAIC0xMDQ3Miw2ICsxMDU2MSw5IEBAIHJtIC1mIGNv cmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29u ZnRlc3QkYWNfZXhlZXh0IFwKICAgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKIGZpCiAKKyAgIGVsc2UKKyAg ICAgZ2NjX2N2X2luaXRmaW5pX2FycmF5PW5vCisgICBmaQogZmkKIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk Z2NjX2N2X2luaXRmaW5pX2FycmF5IiA+JjUKICRhc19lY2hvICIkZ2NjX2N2 X2luaXRmaW5pX2FycmF5IiA+JjY7IH0KZGlmZiAtLWdpdCBhL2djYy9jb25m aWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCmluZGV4IGVhY2YyMDAuLmZm YTRhODEgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrIGIvZ2Nj L2NvbmZpZ3VyZS5hYwpAQCAtMTEyNSw3ICsxMTI1LDExNiBAQCBmaQogIyBS ZXN0b3JlIENGTEFHUyBmcm9tIGJlZm9yZSB0aGUgZ2NjX0FDX05FRURfREVD TEFSQVRJT05TIHRlc3RzLgogQ0ZMQUdTPSIkc2F2ZWRfQ0ZMQUdTIgogCi1n Y2NfQUNfSU5JVEZJTklfQVJSQVkKKyMgQ2hlY2sgaWYgLmluaXRfYXJyYXkg Y2FuIGJlIHVzZWQgd2l0aCAuY3RvcnMuCitBQ19BUkdfRU5BQkxFKGluaXRm aW5pLWFycmF5LAorCVsgIC0tZW5hYmxlLWluaXRmaW5pLWFycmF5CXVzZSAu aW5pdF9hcnJheS8uZmluaV9hcnJheSBzZWN0aW9uc10sCisJW10sIFsKK0FD X0NBQ0hFX0NIRUNLKGZvciAucHJlaW5pdF9hcnJheS8uaW5pdF9hcnJheS8u ZmluaV9hcnJheSBzdXBwb3J0LAorCQkgZ2NjX2N2X2luaXRmaW5pX2FycmF5 LCBbZG5sCisgIGlmIHRlc3QgIngke2J1aWxkfSIgPSAieCR7dGFyZ2V0fSIg OyB0aGVuCisgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWwor ZXh0ZXJuIHZvaWQgYWJvcnQgKCk7CitzdGF0aWMgaW50IGNvdW50OworCitz dGF0aWMgdm9pZAoraW5pdDEwMDUgKCkKK3sKKyAgaWYgKGNvdW50ICE9IDAp CisgICAgYWJvcnQgKCk7CisgIGNvdW50ID0gMTAwNTsKK30KK3ZvaWQgKCpj b25zdCBpbml0X2FycmF5MTAwNVtdKSAoKQorICBfX2F0dHJpYnV0ZV9fICgo c2VjdGlvbiAoIi5pbml0X2FycmF5LjAxMDA1IiksIGFsaWduZWQgKHNpemVv ZiAodm9pZCAqKSkpKQorICA9IHsgaW5pdDEwMDUgfTsKK3N0YXRpYyB2b2lk CitmaW5pMTAwNSAoKQoreworICBpZiAoY291bnQgIT0gMTAwNSkKKyAgICBh Ym9ydCAoKTsKK30KK3ZvaWQgKCpjb25zdCBmaW5pX2FycmF5MTAwNVtdKSAo KQorICBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5maW5pX2FycmF5LjAx MDA1IiksIGFsaWduZWQgKHNpemVvZiAodm9pZCAqKSkpKQorICA9IHsgZmlu aTEwMDUgfTsKKworc3RhdGljIHZvaWQKK2N0b3IxMDA3ICgpCit7CisgIGlm IChjb3VudCAhPSAxMDA1KQorICAgIGFib3J0ICgpOworICBjb3VudCA9IDEw MDc7Cit9Cit2b2lkICgqY29uc3QgY3RvcnMxMDA3W10pICgpCisgIF9fYXR0 cmlidXRlX18gKChzZWN0aW9uICgiLmN0b3JzLjY0NTI4IiksIGFsaWduZWQg KHNpemVvZiAodm9pZCAqKSkpKQorICA9IHsgY3RvcjEwMDcgfTsKK3N0YXRp YyB2b2lkCitkdG9yMTAwNyAoKQoreworICBpZiAoY291bnQgIT0gMTAwNykK KyAgICBhYm9ydCAoKTsKKyAgY291bnQgPSAxMDA1OworfQordm9pZCAoKmNv bnN0IGR0b3JzMTAwN1tdKSAoKQorICBfX2F0dHJpYnV0ZV9fICgoc2VjdGlv biAoIi5kdG9ycy42NDUyOCIpLCBhbGlnbmVkIChzaXplb2YgKHZvaWQgKikp KSkKKyAgPSB7IGR0b3IxMDA3IH07CisKK3N0YXRpYyB2b2lkCitpbml0NjU1 MzAgKCkKK3sKKyAgaWYgKGNvdW50ICE9IDEwMDcpCisgICAgYWJvcnQgKCk7 CisgIGNvdW50ID0gNjU1MzA7Cit9Cit2b2lkICgqY29uc3QgaW5pdF9hcnJh eTY1NTMwW10pICgpCisgIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmlu aXRfYXJyYXkuNjU1MzAiKSwgYWxpZ25lZCAoc2l6ZW9mICh2b2lkICopKSkp CisgID0geyBpbml0NjU1MzAgfTsKK3N0YXRpYyB2b2lkCitmaW5pNjU1MzAg KCkKK3sKKyAgaWYgKGNvdW50ICE9IDY1NTMwKQorICAgIGFib3J0ICgpOwor ICBjb3VudCA9IDEwMDc7Cit9Cit2b2lkICgqY29uc3QgZmluaV9hcnJheTY1 NTMwW10pICgpCisgIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmZpbmlf YXJyYXkuNjU1MzAiKSwgYWxpZ25lZCAoc2l6ZW9mICh2b2lkICopKSkpCisg ID0geyBmaW5pNjU1MzAgfTsKKworc3RhdGljIHZvaWQKK2N0b3I2NTUzNSAo KQoreworICBpZiAoY291bnQgIT0gNjU1MzApCisgICAgYWJvcnQgKCk7Cisg IGNvdW50ID0gNjU1MzU7Cit9Cit2b2lkICgqY29uc3QgY3RvcnM2NTUzNVtd KSAoKQorICBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5jdG9ycyIpLCBh bGlnbmVkIChzaXplb2YgKHZvaWQgKikpKSkKKyAgPSB7IGN0b3I2NTUzNSB9 Oworc3RhdGljIHZvaWQKK2R0b3I2NTUzNSAoKQoreworICBpZiAoY291bnQg IT0gNjU1MzUpCisgICAgYWJvcnQgKCk7CisgIGNvdW50ID0gNjU1MzA7Cit9 Cit2b2lkICgqY29uc3QgZHRvcnM2NTUzNVtdKSAoKQorICBfX2F0dHJpYnV0 ZV9fICgoc2VjdGlvbiAoIi5kdG9ycyIpLCBhbGlnbmVkIChzaXplb2YgKHZv aWQgKikpKSkKKyAgPSB7IGR0b3I2NTUzNSB9OworCitpbnQKK21haW4gKCkK K3sKKyAgcmV0dXJuIDA7Cit9XSldLAorCSAgICAgW2djY19jdl9pbml0Zmlu aV9hcnJheT15ZXNdLCBbZ2NjX2N2X2luaXRmaW5pX2FycmF5PW5vXSwKKwkg ICAgIFtnY2NfY3ZfaW5pdGZpbmlfYXJyYXk9bm9dKQorICAgZWxzZQorICAg ICBnY2NfY3ZfaW5pdGZpbmlfYXJyYXk9bm8KKyAgIGZpXSkKKyAgZW5hYmxl X2luaXRmaW5pX2FycmF5PSRnY2NfY3ZfaW5pdGZpbmlfYXJyYXkKK10pCitp ZiB0ZXN0ICRlbmFibGVfaW5pdGZpbmlfYXJyYXkgPSB5ZXM7IHRoZW4KKyAg QUNfREVGSU5FKEhBVkVfSU5JVEZJTklfQVJSQVksIDEsCisgICAgW0RlZmlu ZSAuaW5pdF9hcnJheS8uZmluaV9hcnJheSBzZWN0aW9ucyBhcmUgYXZhaWxh YmxlIGFuZCB3b3JraW5nLl0pCitmaQogCiAjIG1rZGlyIHRha2VzIGEgc2lu Z2xlIGFyZ3VtZW50IG9uIHNvbWUgc3lzdGVtcy4gCiBnY2NfQUNfRlVOQ19N S0RJUl9UQUtFU19PTkVfQVJHCmRpZmYgLS1naXQgYS9nY2MvY3J0c3R1ZmYu YyBiL2djYy9jcnRzdHVmZi5jCmluZGV4IGI2NWY0OTAuLjdkMzE5MzRlIDEw MDY0NAotLS0gYS9nY2MvY3J0c3R1ZmYuYworKysgYi9nY2MvY3J0c3R1ZmYu YwpAQCAtMTg5LDYgKzE4OSw5IEBAIHR5cGVkZWYgdm9pZCAoKmZ1bmNfcHRy KSAodm9pZCk7CiAgICByZWZlciB0byBvbmx5IHRoZSBfX0NUT1JfRU5EX18g c3ltYm9sIGluIGNydGVuZC5vIGFuZCB0aGUgX19EVE9SX0xJU1RfXwogICAg c3ltYm9sIGluIGNydGJlZ2luLm8sIHdoZXJlIHRoZXkgYXJlIGRlZmluZWQu ICAqLwogCisvKiBObyBuZWVkIGZvciAuY3RvcnMvLmR0b3JzIHNlY3Rpb24g aWYgbGlua2VyIGNhbiBwbGFjZSB0aGVtIGluCisgICAuaW5pdF9hcnJheS8u ZmluaV9hcnJheSBzZWN0aW9uLiAgKi8KKyNpZm5kZWYgTk9fQ1RPUlNfRFRP UlNfU0VDVElPTlMKIC8qIFRoZSAtMSBpcyBhIGZsYWcgdG8gX19kb19nbG9i YWxfW2NkXXRvcnMgaW5kaWNhdGluZyB0aGF0IHRoaXMgdGFibGUKICAgIGRv ZXMgbm90IHN0YXJ0IHdpdGggYSBjb3VudCBvZiBlbGVtZW50cy4gICovCiAj aWZkZWYgQ1RPUl9MSVNUX0JFR0lOCkBAIC0yMTksNiArMjIyLDcgQEAgU1RB VElDIGZ1bmNfcHRyIF9fRFRPUl9MSVNUX19bMV0KICAgX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmR0b3JzIiksIGFsaWduZWQoc2l6ZW9mKGZ1bmNfcHRy KSkpKQogICA9IHsgKGZ1bmNfcHRyKSAoLTEpIH07CiAjZW5kaWYgLyogX19E VE9SX0xJU1RfXyBhbHRlcm5hdGl2ZXMgKi8KKyNlbmRpZiAvKiBOT19DVE9S U19EVE9SU19TRUNUSU9OUyAqLwogCiAjaWZkZWYgVVNFX0VIX0ZSQU1FX1JF R0lTVFJZCiAvKiBTdGljayBhIGxhYmVsIGF0IHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGZyYW1lIHVud2luZCBpbmZvIHNvIHdlIGNhbiByZWdpc3RlcgpAQCAt NDg5LDYgKzQ5Myw5IEBAIF9fZG9fZ2xvYmFsX2N0b3JzXzEodm9pZCkKIAog I2VsaWYgZGVmaW5lZChDUlRfRU5EKSAvKiAhIENSVF9CRUdJTiAqLwogCisv KiBObyBuZWVkIGZvciAuY3RvcnMvLmR0b3JzIHNlY3Rpb24gaWYgbGlua2Vy IGNhbiBwbGFjZSB0aGVtIGluCisgICAuaW5pdF9hcnJheS8uZmluaV9hcnJh eSBzZWN0aW9uLiAgKi8KKyNpZm5kZWYgTk9fQ1RPUlNfRFRPUlNfU0VDVElP TlMKIC8qIFB1dCBhIHdvcmQgY29udGFpbmluZyB6ZXJvIGF0IHRoZSBlbmQg b2YgZWFjaCBvZiBvdXIgdHdvIGxpc3RzIG9mIGZ1bmN0aW9uCiAgICBhZGRy ZXNzZXMuICBOb3RlIHRoYXQgdGhlIHdvcmRzIGRlZmluZWQgaGVyZSBnbyBp bnRvIHRoZSAuY3RvcnMgYW5kIC5kdG9ycwogICAgc2VjdGlvbnMgb2YgdGhl IGNydGVuZC5vIGZpbGUsIGFuZCBzaW5jZSB0aGF0IGZpbGUgaXMgYWx3YXlz IGxpbmtlZCBpbgpAQCAtNTM0LDYgKzU0MSw3IEBAIFNUQVRJQyBmdW5jX3B0 ciBfX0RUT1JfRU5EX19bMV0KICAgX19hdHRyaWJ1dGVfXygodXNlZCwgc2Vj dGlvbigiLmR0b3JzIiksIGFsaWduZWQoc2l6ZW9mKGZ1bmNfcHRyKSkpKQog ICA9IHsgKGZ1bmNfcHRyKSAwIH07CiAjZW5kaWYKKyNlbmRpZiAvKiBOT19D VE9SU19EVE9SU19TRUNUSU9OUyAqLwogCiAjaWZkZWYgRUhfRlJBTUVfU0VD VElPTl9OQU1FCiAvKiBUZXJtaW5hdGUgdGhlIGZyYW1lIHVud2luZCBpbmZv IHNlY3Rpb24gd2l0aCBhIDRieXRlIDAgYXMgYSBzZW50aW5lbDsK --00163646cedef3c00004a1d1f83a--