From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28252 invoked by alias); 7 Apr 2011 13:53:11 -0000 Received: (qmail 28233 invoked by uid 22791); 7 Apr 2011 13:53:07 -0000 X-SWARE-Spam-Status: No, hits=-1.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_FN X-Spam-Check-By: sourceware.org Received: from mail-qy0-f175.google.com (HELO mail-qy0-f175.google.com) (209.85.216.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 07 Apr 2011 13:53:00 +0000 Received: by qyk35 with SMTP id 35so3524964qyk.20 for ; Thu, 07 Apr 2011 06:52:59 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.0.75 with SMTP id 11mr685261qca.94.1302184379570; Thu, 07 Apr 2011 06:52:59 -0700 (PDT) Received: by 10.229.97.206 with HTTP; Thu, 7 Apr 2011 06:52:59 -0700 (PDT) Date: Thu, 07 Apr 2011 13:53:00 -0000 Message-ID: Subject: [patch i386]: Cleanup calling convention handling in i386.c and fix PR target/9601 and PR target/11772 From: Kai Tietz To: GCC Patches Cc: Richard Henderson Content-Type: multipart/mixed; boundary=90e6ba5bb9dd605a5904a0546d6b 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/msg00550.txt.bz2 --90e6ba5bb9dd605a5904a0546d6b Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1740 Hello, This patch cleans up a bit the calling convention checking in i386 architecture. By this I could fix some pretty old bugs about the -mrtd option. See as reference http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11772 and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9601 For none-prototyped function calls nowadays the linker is able to do the stdcall fixup successful (avoiding warning via -Wl,--enable-stdcall-fixup). So we emit for this case just the undecorated function's symbol name. ChangeLog 2011-04-07 Kai Tietz PR target/9601 PR target/11772 * config/i386/i386-protos.h (ix86_get_callcvt): New prototype. * config/i386/i386.c (ix86_handle_cconv_attribute): Adjust comment. (ix86_is_msabi_thiscall): Removed. (ix86_is_type_thiscall): Likewise. (ix86_get_callcvt): New function. (ix86_comp_type_attributes): Simplify check. (ix86_function_regparm): Use ix86_get_callcvt for calling convention attribute checks. (ix86_return_pops_args): Likewise. (ix86_static_chain): Likewise. (x86_this_parameter): Likewise. (x86_output_mi_thunk): Likewise. * config/i386/i386.h (IX86_CALLCVT_CDECL, IX86_CALLCVT_STDCALL, IX86_CALLCVT_FASTCALL, IX86_CALLCVT_THISCALL, IX86_CALLCVT_REGPARM, IX86_CALLCVT_SSEREGPARM): New macros to represent calling convention by flag-values. (IX86_BASE_CALLCVT): Helper macro. * config/i386/netware.c (i386_nlm_maybe_mangle_decl_assembler_name): Use ix86_get_callcvt for calling convention attribute checks. * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name): Likewise. (gen_stdcall_or_fastcall_suffix): Handle TARGET_RTD case for none-prototyped function calls. Tested for i686-w64-mingw32, x86_64-w64-mingw32, and x86_64-pc-linux-gnu. Ok for apply? Regards, Kai --90e6ba5bb9dd605a5904a0546d6b Content-Type: text/plain; charset=US-ASCII; name="cleanup_i386_cvt.txt" Content-Disposition: attachment; filename="cleanup_i386_cvt.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm7qy7ze0 Content-length: 19996 SW5kZXg6IGdjYy9nY2MvY29uZmlnL2kzODYvaTM4Ni1wcm90b3MuaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mub3JpZy9nY2MvY29uZmlnL2kz ODYvaTM4Ni1wcm90b3MuaAkyMDExLTAxLTEzIDIwOjU1OjMwLjAwMDAwMDAw MCArMDEwMAorKysgZ2NjL2djYy9jb25maWcvaTM4Ni9pMzg2LXByb3Rvcy5o CTIwMTEtMDQtMDcgMTE6MDI6MTYuNjQ1OTg1MjAwICswMjAwCkBAIC0xOTEs NiArMTkxLDggQEAgZXh0ZXJuIHRyZWUgaXg4Nl9oYW5kbGVfc2hhcmVkX2F0 dHJpYnV0ZQogZXh0ZXJuIHRyZWUgaXg4Nl9oYW5kbGVfc2VsZWN0YW55X2F0 dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBl eHRlcm4gaW50IHg4Nl9maWVsZF9hbGlnbm1lbnQgKHRyZWUsIGludCk7CiBl eHRlcm4gdHJlZSBpeDg2X3ZhbGlkX3RhcmdldF9hdHRyaWJ1dGVfdHJlZSAo dHJlZSk7CitleHRlcm4gdW5zaWduZWQgaW50IGl4ODZfZ2V0X2NhbGxjdnQg KGNvbnN0X3RyZWUpOworCiAjZW5kaWYKIAogZXh0ZXJuIHJ0eCBpeDg2X3Rs c19nZXRfYWRkciAodm9pZCk7CkluZGV4OiBnY2MvZ2NjL2NvbmZpZy9pMzg2 L2kzODYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2Mub3JpZy9n Y2MvY29uZmlnL2kzODYvaTM4Ni5jCTIwMTEtMDQtMDYgMTk6MTM6MzAuMDAw MDAwMDAwICswMjAwCisrKyBnY2MvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwky MDExLTA0LTA3IDE0OjUxOjIyLjQxMTk3NTgwMCArMDIwMApAQCAtNTMxMiw3 ICs1MzEyLDcgQEAgaXg4Nl9oYW5kbGVfY2NvbnZfYXR0cmlidXRlICh0cmVl ICpub2RlLAogICAgICAgcmV0dXJuIE5VTExfVFJFRTsKICAgICB9CiAKLSAg LyogQ2FuIGNvbWJpbmUgcmVncGFybSB3aXRoIGFsbCBhdHRyaWJ1dGVzIGJ1 dCBmYXN0Y2FsbC4gICovCisgIC8qIENhbiBjb21iaW5lIHJlZ3Bhcm0gd2l0 aCBhbGwgYXR0cmlidXRlcyBidXQgZmFzdGNhbGwsIGFuZCB0aGlzY2FsbC4g ICovCiAgIGlmIChpc19hdHRyaWJ1dGVfcCAoInJlZ3Bhcm0iLCBuYW1lKSkK ICAgICB7CiAgICAgICB0cmVlIGNzdDsKQEAgLTU0MzYsMzggKzU0MzYsNTAg QEAgaXg4Nl9oYW5kbGVfY2NvbnZfYXR0cmlidXRlICh0cmVlICpub2RlLAog ICByZXR1cm4gTlVMTF9UUkVFOwogfQogCi0vKiBUaGlzIGZ1bmN0aW9uIGNo ZWNrcyBpZiB0aGUgbWV0aG9kLWZ1bmN0aW9uIGhhcyBkZWZhdWx0IF9fdGhp c2NhbGwKLSAgIGNhbGxpbmctY29udmVudGlvbiBmb3IgMzItYml0IG1zYWJp LgotICAgSXQgcmV0dXJucyB0cnVlIGlmIFRZUEUgaXMgb2Yga2luZCBNRVRI T0RfVFlQRSwgbm8gc3RkYXJnIGZ1bmN0aW9uLAotICAgYW5kIHRoZSBNU19B QkkgMzItYml0IGlzIHVzZWQuICBPdGhlcndpc2UgaXQgcmV0dXJucyBmYWxz ZS4gICovCisvKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgZnJvbSBUWVBF IHRoZSBjYWxsaW5nLWNvbnZlbnRpb24uICAqLwogCi1zdGF0aWMgYm9vbAot aXg4Nl9pc19tc2FiaV90aGlzY2FsbCAoY29uc3RfdHJlZSB0eXBlKQordW5z aWduZWQgaW50CitpeDg2X2dldF9jYWxsY3Z0IChjb25zdF90cmVlIHR5cGUp CiB7Ci0gIGlmIChUQVJHRVRfNjRCSVQgfHwgaXg4Nl9mdW5jdGlvbl90eXBl X2FiaSAodHlwZSkgIT0gTVNfQUJJCi0gICAgICB8fCBUUkVFX0NPREUgKHR5 cGUpICE9IE1FVEhPRF9UWVBFIHx8IHN0ZGFyZ19wICh0eXBlKSkKLSAgICBy ZXR1cm4gZmFsc2U7Ci0gIC8qIENoZWNrIGZvciBkaWZmZXJlbnQgY2FsbGlu Zy1jb252ZW50aW9ucy4gICovCi0gIGlmIChsb29rdXBfYXR0cmlidXRlICgi Y2RlY2wiLCBUWVBFX0FUVFJJQlVURVMgKHR5cGUpKQotICAgICAgfHwgbG9v a3VwX2F0dHJpYnV0ZSAoInN0ZGNhbGwiLCBUWVBFX0FUVFJJQlVURVMgKHR5 cGUpKQotICAgICAgfHwgbG9va3VwX2F0dHJpYnV0ZSAoImZhc3RjYWxsIiwg VFlQRV9BVFRSSUJVVEVTICh0eXBlKSkKLSAgICAgIHx8IGxvb2t1cF9hdHRy aWJ1dGUgKCJyZWdwYXJtIiwgVFlQRV9BVFRSSUJVVEVTICh0eXBlKSkKLSAg ICAgIHx8IGxvb2t1cF9hdHRyaWJ1dGUgKCJzc2VyZWdwYXJtIiwgVFlQRV9B VFRSSUJVVEVTICh0eXBlKSkpCi0gICAgcmV0dXJuIGZhbHNlOwotICByZXR1 cm4gdHJ1ZTsKLX0KKyAgdW5zaWduZWQgaW50IHJldCA9IDA7CiAKLS8qIFRo aXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSB0aGlzY2FsbCBhdHRyaWJ1dGUg aXMgc2V0IGZvciB0aGUgVFlQRSwKLSAgIG9yIGlmIGl0IGlzIGFuIG1ldGhv ZC10eXBlIHdpdGggZGVmYXVsdCB0aGlzY2FsbCBjb252ZW50aW9uLgotICAg SXQgcmV0dXJucyB0cnVlIGlmIGZ1bmN0aW9uIG1hdGNoLCBvdGhlcndpc2Ug ZmFsc2UgaXMgcmV0dXJuZWQuICAqLworICBpZiAoVEFSR0VUXzY0QklUKQor ICAgIHJldHVybiBJWDg2X0NBTExDVlRfQ0RFQ0w7CiAKLXN0YXRpYyBib29s Ci1peDg2X2lzX3R5cGVfdGhpc2NhbGwgKGNvbnN0X3RyZWUgdHlwZSkKLXsK LSAgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJ0aGlzY2FsbCIsIFRZUEVfQVRU UklCVVRFUyAodHlwZSkpCi0gICAgICB8fCBpeDg2X2lzX21zYWJpX3RoaXNj YWxsICh0eXBlKSkKLSAgICByZXR1cm4gdHJ1ZTsKLSAgcmV0dXJuIGZhbHNl OworICBpZiAobG9va3VwX2F0dHJpYnV0ZSAoImNkZWNsIiwgVFlQRV9BVFRS SUJVVEVTICh0eXBlKSkpCisgICAgcmV0IHw9IElYODZfQ0FMTENWVF9DREVD TDsKKyAgZWxzZSBpZiAobG9va3VwX2F0dHJpYnV0ZSAoInN0ZGNhbGwiLCBU WVBFX0FUVFJJQlVURVMgKHR5cGUpKSkKKyAgICByZXQgfD0gSVg4Nl9DQUxM Q1ZUX1NURENBTEw7CisgIGVsc2UgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJm YXN0Y2FsbCIsIFRZUEVfQVRUUklCVVRFUyAodHlwZSkpKQorICAgIHJldCB8 PSBJWDg2X0NBTExDVlRfRkFTVENBTEw7CisgIGVsc2UgaWYgKGxvb2t1cF9h dHRyaWJ1dGUgKCJ0aGlzY2FsbCIsIFRZUEVfQVRUUklCVVRFUyAodHlwZSkp KQorICAgIHJldCB8PSBJWDg2X0NBTExDVlRfVEhJU0NBTEw7CisKKyAgLyog UmVncGFyYW0gaXNuJ3QgYWxsb3dlZCBmb3IgdGhpc2NhbGwgYW5kIGZhc3Rj YWxsLiAgKi8KKyAgaWYgKChyZXQgJiAoSVg4Nl9DQUxMQ1ZUX1RISVNDQUxM IHwgSVg4Nl9DQUxMQ1ZUX0ZBU1RDQUxMKSkgPT0gMCkKKyAgICB7CisgICAg ICBpZiAobG9va3VwX2F0dHJpYnV0ZSAoInJlZ3Bhcm0iLCBUWVBFX0FUVFJJ QlVURVMgKHR5cGUpKSkKKyAgICAgICAgcmV0IHw9IElYODZfQ0FMTENWVF9S RUdQQVJNOworICAgICAgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJzc2VyZWdw YXJtIiwgVFlQRV9BVFRSSUJVVEVTICh0eXBlKSkpCisgICAgICAgIHJldCB8 PSBJWDg2X0NBTExDVlRfU1NFUkVHUEFSTTsKKyAgICB9CisKKyAgaWYgKElY ODZfQkFTRV9DQUxMQ1ZUKHJldCkgIT0gMCkKKyAgICByZXR1cm4gcmV0Owor CisgIC8qIFNwZWNpYWwgY2FzZSByZWdwYXJtL3NzZXJlZ3Bhcm0sIHdoaWNo IGFyZSBlaXRoZXIgY2RlY2wgb3Igc3RkY2FsbC4gICovCisgIGlmICgocmV0 ICYgKElYODZfQ0FMTENWVF9SRUdQQVJNIHwgSVg4Nl9DQUxMQ1ZUX1NTRVJF R1BBUk0pKSAhPSAwKQorICAgIHJldHVybiAocmV0IHwgKChUQVJHRVRfUlRE ICYmICFzdGRhcmdfcCAodHlwZSkpID8gSVg4Nl9DQUxMQ1ZUX1NURENBTEwK KwkJCQkJCSAgICA6IElYODZfQ0FMTENWVF9DREVDTCkpOworCisgIC8qIFdl IGRvbid0IGhhdmUgZm91bmQgYSBkZWZhdWx0IGNhbGwtY29udmVudGlvbiBz cGVjaWZpZXIsCisgICAgIHNvIGFwcGx5IGRlZmF1bHQuICAqLworICBpZiAo VEFSR0VUX1JURCAmJiAhc3RkYXJnX3AgKHR5cGUpKQorICAgIHJldHVybiBJ WDg2X0NBTExDVlRfU1REQ0FMTDsKKyAgZWxzZSBpZiAoVFJFRV9DT0RFICh0 eXBlKSAhPSBNRVRIT0RfVFlQRSB8fCBzdGRhcmdfcCAodHlwZSkKKwkgICB8 fCBpeDg2X2Z1bmN0aW9uX3R5cGVfYWJpICh0eXBlKSAhPSBNU19BQkkpCisg ICAgcmV0dXJuIElYODZfQ0FMTENWVF9DREVDTDsKKyAgcmV0dXJuIElYODZf Q0FMTENWVF9USElTQ0FMTDsKIH0KIAogLyogUmV0dXJuIDAgaWYgdGhlIGF0 dHJpYnV0ZXMgZm9yIHR3byB0eXBlcyBhcmUgaW5jb21wYXRpYmxlLCAxIGlm IHRoZXkKQEAgLTU0NzcsNDMgKzU0ODksMTggQEAgaXg4Nl9pc190eXBlX3Ro aXNjYWxsIChjb25zdF90cmVlIHR5cGUpCiBzdGF0aWMgaW50CiBpeDg2X2Nv bXBfdHlwZV9hdHRyaWJ1dGVzIChjb25zdF90cmVlIHR5cGUxLCBjb25zdF90 cmVlIHR5cGUyKQogewotICAvKiBDaGVjayBmb3IgbWlzbWF0Y2ggb2Ygbm9u LWRlZmF1bHQgY2FsbGluZyBjb252ZW50aW9uLiAgKi8KLSAgYm9vbCBpc190 aGlzY2FsbCA9IGl4ODZfaXNfbXNhYmlfdGhpc2NhbGwgKHR5cGUxKTsKLSAg Y29uc3QgY2hhciAqY29uc3QgcnRkc3RyID0gVEFSR0VUX1JURCA/IChpc190 aGlzY2FsbCA/ICJ0aGlzY2FsbCIgOiAiY2RlY2wiKSA6ICJzdGRjYWxsIjsK KyAgdW5zaWduZWQgaW50IGNjdnQxLCBjY3Z0MjsKIAogICBpZiAoVFJFRV9D T0RFICh0eXBlMSkgIT0gRlVOQ1RJT05fVFlQRQogICAgICAgJiYgVFJFRV9D T0RFICh0eXBlMSkgIT0gTUVUSE9EX1RZUEUpCiAgICAgcmV0dXJuIDE7CiAK LSAgLyogQ2hlY2sgZm9yIG1pc21hdGNoZWQgZmFzdGNhbGwvcmVncGFybSB0 eXBlcy4gICovCi0gIGlmICgoIWxvb2t1cF9hdHRyaWJ1dGUgKCJmYXN0Y2Fs bCIsIFRZUEVfQVRUUklCVVRFUyAodHlwZTEpKQotICAgICAgICE9ICFsb29r dXBfYXR0cmlidXRlICgiZmFzdGNhbGwiLCBUWVBFX0FUVFJJQlVURVMgKHR5 cGUyKSkpCi0gICAgICB8fCAoaXg4Nl9mdW5jdGlvbl9yZWdwYXJtICh0eXBl MSwgTlVMTCkKLQkgICE9IGl4ODZfZnVuY3Rpb25fcmVncGFybSAodHlwZTIs IE5VTEwpKSkKKyAgY2N2dDEgPSBpeDg2X2dldF9jYWxsY3Z0ICh0eXBlMSk7 CisgIGNjdnQyID0gaXg4Nl9nZXRfY2FsbGN2dCAodHlwZTIpOworICBpZiAo Y2N2dDEgIT0gY2N2dDIpCiAgICAgcmV0dXJuIDA7Ci0KLSAgLyogQ2hlY2sg Zm9yIG1pc21hdGNoZWQgc3NlcmVncGFybSB0eXBlcy4gICovCi0gIGlmICgh bG9va3VwX2F0dHJpYnV0ZSAoInNzZXJlZ3Bhcm0iLCBUWVBFX0FUVFJJQlVU RVMgKHR5cGUxKSkKLSAgICAgICE9ICFsb29rdXBfYXR0cmlidXRlICgic3Nl cmVncGFybSIsIFRZUEVfQVRUUklCVVRFUyAodHlwZTIpKSkKLSAgICByZXR1 cm4gMDsKLQotICAvKiBDaGVjayBmb3IgbWlzbWF0Y2hlZCB0aGlzY2FsbCB0 eXBlcy4gICovCi0gIGlmIChpc190aGlzY2FsbCAmJiAhVEFSR0VUX1JURCkK LSAgICB7Ci0gICAgICBpZiAoIWxvb2t1cF9hdHRyaWJ1dGUgKCJjZGVjbCIs IFRZUEVfQVRUUklCVVRFUyAodHlwZTEpKQotCSAgIT0gIWxvb2t1cF9hdHRy aWJ1dGUgKCJjZGVjbCIsIFRZUEVfQVRUUklCVVRFUyAodHlwZTIpKSkKLQly ZXR1cm4gMDsKLSAgICB9Ci0gIGVsc2UgaWYgKCFpc190aGlzY2FsbCB8fCBU QVJHRVRfUlREKQotICAgIHsKLSAgICAgIGlmICghbG9va3VwX2F0dHJpYnV0 ZSAoInRoaXNjYWxsIiwgVFlQRV9BVFRSSUJVVEVTICh0eXBlMSkpCi0JICAh PSAhbG9va3VwX2F0dHJpYnV0ZSAoInRoaXNjYWxsIiwgVFlQRV9BVFRSSUJV VEVTICh0eXBlMikpKQotCXJldHVybiAwOwotICAgIH0KLQotICAvKiBDaGVj ayBmb3IgbWlzbWF0Y2hlZCByZXR1cm4gdHlwZXMgKGNkZWNsIHZzIHN0ZGNh bGwpLiAgKi8KLSAgaWYgKCFsb29rdXBfYXR0cmlidXRlIChydGRzdHIsIFRZ UEVfQVRUUklCVVRFUyAodHlwZTEpKQotICAgICAgIT0gIWxvb2t1cF9hdHRy aWJ1dGUgKHJ0ZHN0ciwgVFlQRV9BVFRSSUJVVEVTICh0eXBlMikpKQorICBp ZiAoaXg4Nl9mdW5jdGlvbl9yZWdwYXJtICh0eXBlMSwgTlVMTCkKKyAgICAg ICE9IGl4ODZfZnVuY3Rpb25fcmVncGFybSAodHlwZTIsIE5VTEwpKQogICAg IHJldHVybiAwOwogCiAgIHJldHVybiAxOwpAQCAtNTUyOCwyMyArNTUxNSwy NiBAQCBpeDg2X2Z1bmN0aW9uX3JlZ3Bhcm0gKGNvbnN0X3RyZWUgdHlwZSwK IHsKICAgdHJlZSBhdHRyOwogICBpbnQgcmVncGFybTsKKyAgdW5zaWduZWQg aW50IGNjdnQ7CiAKICAgaWYgKFRBUkdFVF82NEJJVCkKICAgICByZXR1cm4g KGl4ODZfZnVuY3Rpb25fdHlwZV9hYmkgKHR5cGUpID09IFNZU1ZfQUJJCiAJ ICAgID8gWDg2XzY0X1JFR1BBUk1fTUFYIDogWDg2XzY0X01TX1JFR1BBUk1f TUFYKTsKLQorICBjY3Z0ID0gaXg4Nl9nZXRfY2FsbGN2dCAodHlwZSk7CiAg IHJlZ3Bhcm0gPSBpeDg2X3JlZ3Bhcm07Ci0gIGF0dHIgPSBsb29rdXBfYXR0 cmlidXRlICgicmVncGFybSIsIFRZUEVfQVRUUklCVVRFUyAodHlwZSkpOwot ICBpZiAoYXR0cikKKworICBpZiAoKGNjdnQgJiBJWDg2X0NBTExDVlRfUkVH UEFSTSkgIT0gMCkKICAgICB7Ci0gICAgICByZWdwYXJtID0gVFJFRV9JTlRf Q1NUX0xPVyAoVFJFRV9WQUxVRSAoVFJFRV9WQUxVRSAoYXR0cikpKTsKLSAg ICAgIHJldHVybiByZWdwYXJtOworICAgICAgYXR0ciA9IGxvb2t1cF9hdHRy aWJ1dGUgKCJyZWdwYXJtIiwgVFlQRV9BVFRSSUJVVEVTICh0eXBlKSk7Cisg ICAgICBpZiAoYXR0cikKKwl7CisJICByZWdwYXJtID0gVFJFRV9JTlRfQ1NU X0xPVyAoVFJFRV9WQUxVRSAoVFJFRV9WQUxVRSAoYXR0cikpKTsKKwkgIHJl dHVybiByZWdwYXJtOworCX0KICAgICB9Ci0KLSAgaWYgKGxvb2t1cF9hdHRy aWJ1dGUgKCJmYXN0Y2FsbCIsIFRZUEVfQVRUUklCVVRFUyAodHlwZSkpKQor ICBlbHNlIGlmIChjY3Z0ID09IElYODZfQ0FMTENWVF9GQVNUQ0FMTCkKICAg ICByZXR1cm4gMjsKLQotICBpZiAoaXg4Nl9pc190eXBlX3RoaXNjYWxsICh0 eXBlKSkKKyAgZWxzZSBpZiAoY2N2dCA9PSBJWDg2X0NBTExDVlRfVEhJU0NB TEwpCiAgICAgcmV0dXJuIDE7CiAKICAgLyogVXNlIHJlZ2lzdGVyIGNhbGxp bmcgY29udmVudGlvbiBmb3IgbG9jYWwgZnVuY3Rpb25zIHdoZW4gcG9zc2li bGUuICAqLwpAQCAtNTY5NSwyOCArNTY4NSwyNyBAQCBpeDg2X2tlZXBfYWdn cmVnYXRlX3JldHVybl9wb2ludGVyICh0cmVlCiBzdGF0aWMgaW50CiBpeDg2 X3JldHVybl9wb3BzX2FyZ3MgKHRyZWUgZnVuZGVjbCwgdHJlZSBmdW50eXBl LCBpbnQgc2l6ZSkKIHsKLSAgaW50IHJ0ZDsKKyAgaW50IHJ0ZCA9IDA7Cisg IHVuc2lnbmVkIGludCBjY3Z0OwogCiAgIC8qIE5vbmUgb2YgdGhlIDY0LWJp dCBBQklzIHBvcCBhcmd1bWVudHMuICAqLwogICBpZiAoVEFSR0VUXzY0QklU KQogICAgIHJldHVybiAwOwogCi0gIHJ0ZCA9IFRBUkdFVF9SVEQgJiYgKCFm dW5kZWNsIHx8IFRSRUVfQ09ERSAoZnVuZGVjbCkgIT0gSURFTlRJRklFUl9O T0RFKTsKKyAgY2N2dCA9IGl4ODZfZ2V0X2NhbGxjdnQgKGZ1bnR5cGUpOwog Ci0gIC8qIENkZWNsIGZ1bmN0aW9ucyBvdmVycmlkZSAtbXJ0ZCwgYW5kIG5l dmVyIHBvcCB0aGUgc3RhY2suICAqLwotICBpZiAoISBsb29rdXBfYXR0cmli dXRlICgiY2RlY2wiLCBUWVBFX0FUVFJJQlVURVMgKGZ1bnR5cGUpKSkKKyAg c3dpdGNoIChJWDg2X0JBU0VfQ0FMTENWVCAoY2N2dCkpCiAgICAgewotICAg ICAgLyogU3RkY2FsbCBhbmQgZmFzdGNhbGwgZnVuY3Rpb25zIHdpbGwgcG9w IHRoZSBzdGFjayBpZiBub3QKLSAgICAgICAgIHZhcmlhYmxlIGFyZ3MuICAq LwotICAgICAgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJzdGRjYWxsIiwgVFlQ RV9BVFRSSUJVVEVTIChmdW50eXBlKSkKLQkgIHx8IGxvb2t1cF9hdHRyaWJ1 dGUgKCJmYXN0Y2FsbCIsIFRZUEVfQVRUUklCVVRFUyAoZnVudHlwZSkpCi0g ICAgICAgICAgfHwgaXg4Nl9pc190eXBlX3RoaXNjYWxsIChmdW50eXBlKSkK LQlydGQgPSAxOwotCi0gICAgICBpZiAocnRkICYmICEgc3RkYXJnX3AgKGZ1 bnR5cGUpKQotCXJldHVybiBzaXplOworICAgIGNhc2UgSVg4Nl9DQUxMQ1ZU X1NURENBTEw6CisgICAgY2FzZSBJWDg2X0NBTExDVlRfRkFTVENBTEw6Cisg ICAgY2FzZSBJWDg2X0NBTExDVlRfVEhJU0NBTEw6CisgICAgICBydGQgPSAx OworICAgICAgYnJlYWs7CiAgICAgfQogCisgIGlmIChydGQgJiYgISBzdGRh cmdfcCAoZnVudHlwZSkpCisgICAgcmV0dXJuIHNpemU7CisKICAgLyogTG9z ZSBhbnkgZmFrZSBzdHJ1Y3R1cmUgcmV0dXJuIGFyZ3VtZW50IGlmIGl0IGlz IHBhc3NlZCBvbiB0aGUgc3RhY2suICAqLwogICBpZiAoYWdncmVnYXRlX3Zh bHVlX3AgKFRSRUVfVFlQRSAoZnVudHlwZSksIGZ1bmRlY2wpCiAgICAgICAm JiAhaXg4Nl9rZWVwX2FnZ3JlZ2F0ZV9yZXR1cm5fcG9pbnRlciAoZnVudHlw ZSkpCkBAIC02MDQ4LDEyICs2MDM3LDEzIEBAIGluaXRfY3VtdWxhdGl2ZV9h cmdzIChDVU1VTEFUSVZFX0FSR1MgKmMKIAkgZWxzZSBsb29rIGZvciByZWdw YXJtIGluZm9ybWF0aW9uLiAgKi8KICAgICAgIGlmIChmbnR5cGUpCiAJewot CSAgaWYgKGl4ODZfaXNfdHlwZV90aGlzY2FsbCAoZm50eXBlKSkKKwkgIHVu c2lnbmVkIGludCBjY3Z0ID0gaXg4Nl9nZXRfY2FsbGN2dCAoZm50eXBlKTsK KwkgIGlmIChjY3Z0ID09IElYODZfQ0FMTENWVF9USElTQ0FMTCkKIAkgICAg ewogCSAgICAgIGN1bS0+bnJlZ3MgPSAxOwogCSAgICAgIGN1bS0+ZmFzdGNh bGwgPSAxOyAvKiBTYW1lIGZpcnN0IHJlZ2lzdGVyIGFzIGluIGZhc3RjYWxs LiAgKi8KIAkgICAgfQotCSAgZWxzZSBpZiAobG9va3VwX2F0dHJpYnV0ZSAo ImZhc3RjYWxsIiwgVFlQRV9BVFRSSUJVVEVTIChmbnR5cGUpKSkKKwkgIGVs c2UgaWYgKGNjdnQgPT0gSVg4Nl9DQUxMQ1ZUX0ZBU1RDQUxMKQogCSAgICB7 CiAJICAgICAgY3VtLT5ucmVncyA9IDI7CiAJICAgICAgY3VtLT5mYXN0Y2Fs bCA9IDE7CkBAIC05ODM5LDEzICs5ODI5LDE0IEBAIGZpbmRfZHJhcF9yZWcg KHZvaWQpCiAKICAgICAgIC8qIFJldXNlIHN0YXRpYyBjaGFpbiByZWdpc3Rl ciBpZiBpdCBpc24ndCB1c2VkIGZvciBwYXJhbWV0ZXIKICAgICAgICAgIHBh c3NpbmcuICAqLwotICAgICAgaWYgKGl4ODZfZnVuY3Rpb25fcmVncGFybSAo VFJFRV9UWVBFIChkZWNsKSwgZGVjbCkgPD0gMgotCSAgJiYgIWxvb2t1cF9h dHRyaWJ1dGUgKCJmYXN0Y2FsbCIsCi0gICAgCQkJCVRZUEVfQVRUUklCVVRF UyAoVFJFRV9UWVBFIChkZWNsKSkpCi0JICAmJiAhaXg4Nl9pc190eXBlX3Ro aXNjYWxsIChUUkVFX1RZUEUgKGRlY2wpKSkKLQlyZXR1cm4gQ1hfUkVHOwot ICAgICAgZWxzZQotCXJldHVybiBESV9SRUc7CisgICAgICBpZiAoaXg4Nl9m dW5jdGlvbl9yZWdwYXJtIChUUkVFX1RZUEUgKGRlY2wpLCBkZWNsKSA8PSAy KQorCXsKKwkgIHVuc2lnbmVkIGludCBjY3Z0ID0gaXg4Nl9nZXRfY2FsbGN2 dCAoVFJFRV9UWVBFIChkZWNsKSk7CisJICBpZiAoY2N2dCAhPSBJWDg2X0NB TExDVlRfRkFTVENBTEwKKwkgICAgICAmJiBjY3Z0ICE9IElYODZfQ0FMTENW VF9USElTQ0FMTCkKKwkgIHJldHVybiBDWF9SRUc7CisJfQorICAgICAgcmV0 dXJuIERJX1JFRzsKICAgICB9CiB9CiAKQEAgLTIzMjgyLDE3ICsyMzI3Mywy MCBAQCBpeDg2X3N0YXRpY19jaGFpbiAoY29uc3RfdHJlZSBmbmRlY2wsIGJv CiAgIGVsc2UKICAgICB7CiAgICAgICB0cmVlIGZudHlwZTsKKyAgICAgIHVu c2lnbmVkIGludCBjY3Z0OworCiAgICAgICAvKiBCeSBkZWZhdWx0IGluIDMy LWJpdCBtb2RlIHdlIHVzZSBFQ1ggdG8gcGFzcyB0aGUgc3RhdGljIGNoYWlu LiAgKi8KICAgICAgIHJlZ25vID0gQ1hfUkVHOwogCiAgICAgICBmbnR5cGUg PSBUUkVFX1RZUEUgKGZuZGVjbCk7Ci0gICAgICBpZiAobG9va3VwX2F0dHJp YnV0ZSAoImZhc3RjYWxsIiwgVFlQRV9BVFRSSUJVVEVTIChmbnR5cGUpKSkK KyAgICAgIGNjdnQgPSBpeDg2X2dldF9jYWxsY3Z0IChmbnR5cGUpOworICAg ICAgaWYgKGNjdnQgPT0gSVg4Nl9DQUxMQ1ZUX0ZBU1RDQUxMKQogCXsKIAkg IC8qIEZhc3RjYWxsIGZ1bmN0aW9ucyB1c2UgZWN4L2VkeCBmb3IgYXJndW1l bnRzLCB3aGljaCBsZWF2ZXMKIAkgICAgIHVzIHdpdGggRUFYIGZvciB0aGUg c3RhdGljIGNoYWluLiAgKi8KIAkgIHJlZ25vID0gQVhfUkVHOwogCX0KLSAg ICAgIGVsc2UgaWYgKGl4ODZfaXNfdHlwZV90aGlzY2FsbCAoZm50eXBlKSkK KyAgICAgIGVsc2UgaWYgKGNjdnQgPT0gSVg4Nl9DQUxMQ1ZUX1RISVNDQUxM KQogCXsKIAkgIC8qIFRoaXNjYWxsIGZ1bmN0aW9ucyB1c2UgZWN4IGZvciBh cmd1bWVudHMsIHdoaWNoIGxlYXZlcwogCSAgICAgdXMgd2l0aCBFQVggZm9y IHRoZSBzdGF0aWMgY2hhaW4uICAqLwpAQCAtMjk4NDYsMTAgKzI5ODQwLDEx IEBAIHg4Nl90aGlzX3BhcmFtZXRlciAodHJlZSBmdW5jdGlvbikKICAgaWYg KG5yZWdzID4gMCAmJiAhc3RkYXJnX3AgKHR5cGUpKQogICAgIHsKICAgICAg IGludCByZWdubzsKKyAgICAgIHVuc2lnbmVkIGludCBjY3Z0ID0gaXg4Nl9n ZXRfY2FsbGN2dCAodHlwZSk7CiAKLSAgICAgIGlmIChsb29rdXBfYXR0cmli dXRlICgiZmFzdGNhbGwiLCBUWVBFX0FUVFJJQlVURVMgKHR5cGUpKSkKKyAg ICAgIGlmIChjY3Z0ID09IElYODZfQ0FMTENWVF9GQVNUQ0FMTCkKIAlyZWdu byA9IGFnZ3IgPyBEWF9SRUcgOiBDWF9SRUc7Ci0gICAgICBlbHNlIGlmIChp eDg2X2lzX3R5cGVfdGhpc2NhbGwgKHR5cGUpKQorICAgICAgZWxzZSBpZiAo Y2N2dCA9PSBJWDg2X0NBTExDVlRfVEhJU0NBTEwpCiAgICAgICAgIHsKIAkg IHJlZ25vID0gQ1hfUkVHOwogCSAgaWYgKGFnZ3IpCkBAIC0yOTk2Niw5ICsy OTk2MSw5IEBAIHg4Nl9vdXRwdXRfbWlfdGh1bmsgKEZJTEUgKmZpbGUsCiAg ICAgICBlbHNlCiAJewogCSAgaW50IHRtcF9yZWdubyA9IENYX1JFRzsKLQkg IGlmIChsb29rdXBfYXR0cmlidXRlICgiZmFzdGNhbGwiLAotCQkJCVRZUEVf QVRUUklCVVRFUyAoVFJFRV9UWVBFIChmdW5jdGlvbikpKQotCSAgICAgIHx8 IGl4ODZfaXNfdHlwZV90aGlzY2FsbCAoVFJFRV9UWVBFIChmdW5jdGlvbikp KQorCSAgdW5zaWduZWQgaW50IGNjdnQgPSBpeDg2X2dldF9jYWxsY3Z0IChU UkVFX1RZUEUgKGZ1bmN0aW9uKSk7CisJICBpZiAoY2N2dCA9PSBJWDg2X0NB TExDVlRfRkFTVENBTEwKKwkgICAgICB8fCBjY3Z0ID09IElYODZfQ0FMTENW VF9USElTQ0FMTCkKIAkgICAgdG1wX3JlZ25vID0gQVhfUkVHOwogCSAgdG1w ID0gZ2VuX3J0eF9SRUcgKFNJbW9kZSwgdG1wX3JlZ25vKTsKIAl9CkluZGV4 OiBnY2MvZ2NjL2NvbmZpZy9pMzg2L2kzODYuaAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBnY2Mub3JpZy9nY2MvY29uZmlnL2kzODYvaTM4Ni5oCTIw MTEtMDQtMDMgMTM6NTk6NTQuMDAwMDAwMDAwICswMjAwCisrKyBnY2MvZ2Nj L2NvbmZpZy9pMzg2L2kzODYuaAkyMDExLTA0LTA3IDExOjAyOjM3LjQzMDYy NDUwMCArMDIwMApAQCAtMjM2OCw2ICsyMzY4LDE4IEBAIGV4dGVybiB2b2lk IGRlYnVnX2Rpc3BhdGNoX3dpbmRvdyAoaW50KTsKIAkoKFZBTFVFKSA9IEdF VF9NT0RFX0JJVFNJWkUgKE1PREUpLCBUQVJHRVRfQk1JKQogCiAKKy8qIEZs YWdzIHJldHVybmVkIGJ5IGl4ODZfZ2V0X2NhbGxjdnQgKCkuICAqLworI2Rl ZmluZSBJWDg2X0NBTExDVlRfQ0RFQ0wJMHgxCisjZGVmaW5lIElYODZfQ0FM TENWVF9TVERDQUxMCTB4MgorI2RlZmluZSBJWDg2X0NBTExDVlRfRkFTVENB TEwJMHg0CisjZGVmaW5lIElYODZfQ0FMTENWVF9USElTQ0FMTAkweDgKKyNk ZWZpbmUgSVg4Nl9DQUxMQ1ZUX1JFR1BBUk0JMHgxMAorI2RlZmluZSBJWDg2 X0NBTExDVlRfU1NFUkVHUEFSTQkweDIwCisKKyNkZWZpbmUgSVg4Nl9CQVNF X0NBTExDVlQoRkxBR1MpIFwKKwkoKEZMQUdTKSAmIChJWDg2X0NBTExDVlRf Q0RFQ0wgfCBJWDg2X0NBTExDVlRfU1REQ0FMTCBcCisJCSAgICB8IElYODZf Q0FMTENWVF9GQVNUQ0FMTCB8IElYODZfQ0FMTENWVF9USElTQ0FMTCkpCisK IC8qCiBMb2NhbCB2YXJpYWJsZXM6CiB2ZXJzaW9uLWNvbnRyb2w6IHQKSW5k ZXg6IGdjYy9nY2MvY29uZmlnL2kzODYvbmV0d2FyZS5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGdjYy5vcmlnL2djYy9jb25maWcvaTM4Ni9uZXR3 YXJlLmMJMjAxMC0xMS0zMCAyMTowMToxNS4wMDAwMDAwMDAgKzAxMDAKKysr IGdjYy9nY2MvY29uZmlnL2kzODYvbmV0d2FyZS5jCTIwMTEtMDQtMDcgMTM6 MDk6NDcuOTgzNTgxNzAwICswMjAwCkBAIC0xNDgsMTIgKzE0OCwxNCBAQCBp Mzg2X25sbV9tYXliZV9tYW5nbGVfZGVjbF9hc3NlbWJsZXJfbmFtCiB7CiAg IHRyZWUgdHlwZV9hdHRyaWJ1dGVzID0gVFlQRV9BVFRSSUJVVEVTIChUUkVF X1RZUEUgKGRlY2wpKTsKICAgdHJlZSBuZXdfaWQ7CisgIHVuc2lnbmVkIGlu dCBjY3Z0ID0gaXg4Nl9nZXRfY2FsbGN2dCAoVFJFRV9UWVBFIChkZWNsKSk7 CiAKLSAgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJzdGRjYWxsIiwgdHlwZV9h dHRyaWJ1dGVzKSkKKyAgaWYgKChjY3Z0ICYgSVg4Nl9DQUxMQ1ZUX1NURENB TEwpICE9IDApCiAgICAgbmV3X2lkID0gZ2VuX3N0ZGNhbGxfb3JfZmFzdGNh bGxfZGVjb3JhdGlvbiAoZGVjbCwgaWQsICdfJyk7Ci0gIGVsc2UgaWYgKGxv b2t1cF9hdHRyaWJ1dGUgKCJmYXN0Y2FsbCIsIHR5cGVfYXR0cmlidXRlcykp CisgIGVsc2UgaWYgKGNjdnQgPT0gSVg4Nl9DQUxMQ1ZUX0ZBU1RDQUxMKQog ICAgIG5ld19pZCA9IGdlbl9zdGRjYWxsX29yX2Zhc3RjYWxsX2RlY29yYXRp b24gKGRlY2wsIGlkLCBGQVNUQ0FMTF9QUkVGSVgpOwotICBlbHNlIGlmICgo bmV3X2lkID0gbG9va3VwX2F0dHJpYnV0ZSAoInJlZ3Bhcm0iLCB0eXBlX2F0 dHJpYnV0ZXMpKSkKKyAgZWxzZSBpZiAoKGN2dCAmIElYODZfQ0FMTENWVF9S RUdQQVJNKSAhPSAwCisJICAgJiYgKG5ld19pZCA9IGxvb2t1cF9hdHRyaWJ1 dGUgKCJyZWdwYXJtIiwgdHlwZV9hdHRyaWJ1dGVzKSkpCiAgICAgbmV3X2lk ID0gZ2VuX3JlZ3Bhcm1fcHJlZml4IChkZWNsLCBpZCwKIAkJICBUUkVFX0lO VF9DU1RfTE9XIChUUkVFX1ZBTFVFIChUUkVFX1ZBTFVFIChuZXdfaWQpKSkp OwogICBlbHNlCkluZGV4OiBnY2MvZ2NjL2NvbmZpZy9pMzg2L3dpbm50LmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjLm9yaWcvZ2NjL2NvbmZp Zy9pMzg2L3dpbm50LmMJMjAxMS0wMS0xMyAyMDo1NTozMC4wMDAwMDAwMDAg KzAxMDAKKysrIGdjYy9nY2MvY29uZmlnL2kzODYvd2lubnQuYwkyMDExLTA0 LTA3IDE1OjIxOjQyLjU2ODYwNjMwMCArMDIwMApAQCAtMTcwLDcgKzE3MCw3 IEBAIGdlbl9zdGRjYWxsX29yX2Zhc3RjYWxsX3N1ZmZpeCAodHJlZSBkZWMK ICAgSE9TVF9XSURFX0lOVCB0b3RhbCA9IDA7CiAgIGNvbnN0IGNoYXIgKm9s ZF9zdHIgPSBJREVOVElGSUVSX1BPSU5URVIgKGlkICE9IE5VTExfVFJFRSA/ IGlkIDogREVDTF9OQU1FIChkZWNsKSk7CiAgIGNoYXIgKm5ld19zdHIsICpw OwotICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGRlY2wpOworICB0cmVlIHR5 cGUgPSBUUkVFX1RZUEUgKERFQ0xfT1JJR0lOIChkZWNsKSk7CiAgIHRyZWUg YXJnOwogICBmdW5jdGlvbl9hcmdzX2l0ZXJhdG9yIGFyZ3NfaXRlcjsKIApA QCAtMjAyLDcgKzIwMiwxMiBAQCBnZW5fc3RkY2FsbF9vcl9mYXN0Y2FsbF9z dWZmaXggKHRyZWUgZGVjCiAJCSAgICAgICAvIHBhcm1fYm91bmRhcnlfYnl0 ZXMgKiBwYXJtX2JvdW5kYXJ5X2J5dGVzKTsKIAkgIHRvdGFsICs9IHBhcm1f c2l6ZTsKIAl9Ci0gICAgICB9CisgICAgfQorICBlbHNlIGlmIChUQVJHRVRf UlREICYmIGZhc3RjYWxsID09IGZhbHNlKQorICAgIC8qIElmIHdlIGFyZSB1 c2luZyAtbXJ0ZCBlbWl0IHVuZGVjb3JhdGVkIHN5bWJvbCBhbmQgbGV0IGxp bmtlcgorICAgICAgIGRvIHRoZSBwcm9wZXIgcmVzb2x2aW5nLiAgKi8KKyAg ICByZXR1cm4gTlVMTF9SVFg7CisKICAgLyogQXNzdW1lIG1heCBvZiA4IGJh c2UgMTAgZGlnaXRzIGluIHRoZSBzdWZmaXguICAqLwogICBwID0gbmV3X3N0 ciA9IFhBTExPQ0FWRUMgKGNoYXIsIDEgKyBzdHJsZW4gKG9sZF9zdHIpICsg MSArIDggKyAxKTsKICAgaWYgKGZhc3RjYWxsKQpAQCAtMjIyLDEwICsyMjcs MTAgQEAgaTM4Nl9wZV9tYXliZV9tYW5nbGVfZGVjbF9hc3NlbWJsZXJfbmFt ZQogCiAgIGlmIChUUkVFX0NPREUgKGRlY2wpID09IEZVTkNUSU9OX0RFQ0wp CiAgICAgeyAKLSAgICAgIHRyZWUgdHlwZV9hdHRyaWJ1dGVzID0gVFlQRV9B VFRSSUJVVEVTIChUUkVFX1RZUEUgKGRlY2wpKTsKLSAgICAgIGlmIChsb29r dXBfYXR0cmlidXRlICgic3RkY2FsbCIsIHR5cGVfYXR0cmlidXRlcykpCisg ICAgICB1bnNpZ25lZCBpbnQgY2N2dCA9IGl4ODZfZ2V0X2NhbGxjdnQgKFRS RUVfVFlQRSAoZGVjbCkpOworICAgICAgaWYgKChjY3Z0ICYgSVg4Nl9DQUxM Q1ZUX1NURENBTEwpICE9IDApCiAJbmV3X2lkID0gZ2VuX3N0ZGNhbGxfb3Jf ZmFzdGNhbGxfc3VmZml4IChkZWNsLCBpZCwgZmFsc2UpOwotICAgICAgZWxz ZSBpZiAobG9va3VwX2F0dHJpYnV0ZSAoImZhc3RjYWxsIiwgdHlwZV9hdHRy aWJ1dGVzKSkKKyAgICAgIGVsc2UgaWYgKGNjdnQgPT0gSVg4Nl9DQUxMQ1ZU X0ZBU1RDQUxMKQogCW5ld19pZCA9IGdlbl9zdGRjYWxsX29yX2Zhc3RjYWxs X3N1ZmZpeCAoZGVjbCwgaWQsIHRydWUpOwogICAgIH0KIAo= --90e6ba5bb9dd605a5904a0546d6b--