From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29851 invoked by alias); 7 May 2011 19:52:42 -0000 Received: (qmail 29801 invoked by uid 22791); 7 May 2011 19:52:33 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_05,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST,TW_BG X-Spam-Check-By: sourceware.org Received: from mail-pw0-f47.google.com (HELO mail-pw0-f47.google.com) (209.85.160.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 07 May 2011 19:52:14 +0000 Received: by pwj9 with SMTP id 9so2179503pwj.20 for ; Sat, 07 May 2011 12:52:13 -0700 (PDT) MIME-Version: 1.0 Received: by 10.68.31.132 with SMTP id a4mr7410174pbi.227.1304797933165; Sat, 07 May 2011 12:52:13 -0700 (PDT) Received: by 10.68.63.226 with HTTP; Sat, 7 May 2011 12:52:13 -0700 (PDT) Date: Sat, 07 May 2011 20:09:00 -0000 Message-ID: Subject: [Patch, libfortran] PR 48915 Fix incorrect return code with -fdump-core, error handling changes From: Janne Blomqvist To: Fortran List , GCC Patches Content-Type: multipart/mixed; boundary=bcaec520f4394f5d4e04a2b4f1ae 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-05/txt/msg00585.txt.bz2 --bcaec520f4394f5d4e04a2b4f1ae Content-Type: text/plain; charset=UTF-8 Content-length: 3358 Hi, this simple bug led me to rethink normal and error termination and thus the patch changes some other related stuff as well. So the original problem was that when -fdump-core was enabled, STOP with a numeric stop code made the program terminate with an incorrect return code, since the core dump generation is done by the program killing itself. The real problem is that previously, we were mixing up normal termination with a non-zero exit status (e.g. file not found) with aborting the program (e.g. some serious error detected). The attached patch reworks this so that normal termination (with a zero or non-zero exit code) is done with exit(), and no backtrace or core dump is generated in any circumstance. For serious errors, a backtrace and core dump are generated. Since OS'es contain widely used ways to control core dump generation (e.g. ulimit -c), and we no longer "frivolously" try to generate a core dump just because we're exiting with non-zero status, there is IMHO no longer any need for a gfortran-specific option; if we hit a serious error, we call abort() and a core dump is always generated if the user environment is so configured (and the system supports core dumps). Also, since backtraces and core dumps are now only generated for serious errors (not e.g. file not found). -fbacktrace is enabled by default. Regtested on x86_64-unknown-linux-gnu, Ok for trunk? frontend ChangeLog: 2011-05-07 Janne Blomqvist PR libfortran/48915 * gfortran.h (gfc_option_t): Remove flag_dump_core. * gfortran.texi (GFORTRAN_ERROR_DUMPCORE): Remove section. (GFORTRAN_ERROR_BACKTRACE): Document that it's enabled by default. * intrinsic.texi (ABORT): Remove explanation of -fdump-core. * invoke.texi: Remove -fdump-core, document that -fbacktrace is enabled by default. * lang.opt: Remove -fdump-core. * options.c (gfc_init_options): Make backtrace default to enabled, remove dump_core. (gfc_handle_option): Remove OPT_fdump-core. * trans-decl.c: Pass a 0 to preserve ABI. library ChangeLog: 2011-05-07 Janne Blomqvist PR libfortran/48915 * intrinsics/abort.c (abort): Call sys_abort(). * io/unix.c (st_vprintf): Call sys_abort(). * libgfortran.h (options_t): Remove dump_core member. (handler): Rename to backtrace_handler. (compile_options_t): Remove dump_core member. (sys_exit): Remove. (sys_abort): New function. * runtime/backtrace.c (show_backtrace): Print a message if backtrace is not available on target. * runtime/compile_options.c (backtrace_handler): New implementation based on example in Glibc manual. (set_options): Remove dump_core handling, make signal handler handle more signals. (init_compile_options): Remove dump_core. * runtime/environ.c (variable_table[]): Remove GFORTRAN_ERROR_DUMPCORE element. (show_variables): Update name, call exit(). * runtime/error.c (sys_exit): Remove. (sys_abort): New function. (recursion_check): Call sys_abort(). (os_error): Call exit(). (runtime_error): Likewise. (runtime_error_at): Likewise. (internal_error): Likewise. (generate_error): Likewise. (notify_std): Likewise. * runtime/stop.c (stop_numeric): Call exit(). (stop_numeric_f08): Likewise. (stop_string): Likewise. (error_stop_string): Call sys_abort(). (error_stop_numeric): Print backtrace, exit with provided code. -- Janne Blomqvist --bcaec520f4394f5d4e04a2b4f1ae Content-Type: text/x-patch; charset=US-ASCII; name="abort.diff" Content-Disposition: attachment; filename="abort.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gneyzmwy0 Content-length: 29252 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmggYi9nY2MvZm9y dHJhbi9nZm9ydHJhbi5oCmluZGV4IDkyYWRmNzIuLjNiNDk2N2QgMTAwNjQ0 Ci0tLSBhL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKKysrIGIvZ2NjL2ZvcnRy YW4vZ2ZvcnRyYW4uaApAQCAtMjIxMiw3ICsyMjEyLDYgQEAgdHlwZWRlZiBz dHJ1Y3QKICAgaW50IGZsYWdfYmFja3NsYXNoOwogICBpbnQgZmxhZ19iYWNr dHJhY2U7CiAgIGludCBmbGFnX2FsbG93X2xlYWRpbmdfdW5kZXJzY29yZTsK LSAgaW50IGZsYWdfZHVtcF9jb3JlOwogICBpbnQgZmxhZ19leHRlcm5hbF9i bGFzOwogICBpbnQgYmxhc19tYXRtdWxfbGltaXQ7CiAgIGludCBmbGFnX2Ny YXlfcG9pbnRlcjsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2dmb3J0cmFu LnRleGkgYi9nY2MvZm9ydHJhbi9nZm9ydHJhbi50ZXhpCmluZGV4IDEyODRj M2QuLjk5MTA1NzQgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2dmb3J0cmFu LnRleGkKKysrIGIvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4udGV4aQpAQCAtNTg4 LDcgKzU4OCw2IEBAIE1hbGZvcm1lZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMg YXJlIHNpbGVudGx5IGlnbm9yZWQuCiAqIEdGT1JUUkFOX0RFRkFVTFRfUkVD TDo6IERlZmF1bHQgcmVjb3JkIGxlbmd0aCBmb3IgbmV3IGZpbGVzCiAqIEdG T1JUUkFOX0xJU1RfU0VQQVJBVE9SOjogIFNlcGFyYXRvciBmb3IgbGlzdCBv dXRwdXQKICogR0ZPUlRSQU5fQ09OVkVSVF9VTklUOjogIFNldCBlbmRpYW5u ZXNzIGZvciB1bmZvcm1hdHRlZCBJL08KLSogR0ZPUlRSQU5fRVJST1JfRFVN UENPUkU6OiBEdW1wIGNvcmUgb24gcnVuLXRpbWUgZXJyb3JzCiAqIEdGT1JU UkFOX0VSUk9SX0JBQ0tUUkFDRTo6IFNob3cgYmFja3RyYWNlIG9uIHJ1bi10 aW1lIGVycm9ycwogQGVuZCBtZW51CiAKQEAgLTc1NCwyNiArNzUzLDE1IEBA IGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgb3ZlcnJpZGUgdGhlIENPTlZF UlQgc3BlY2lmaWVyIGluIHRoZQogb3BlbiBzdGF0ZW1lbnR9LiAgVGhpcyBp cyB0byBnaXZlIGNvbnRyb2wgb3ZlciBkYXRhIGZvcm1hdHMgdG8KIHVzZXJz IHdobyBkbyBub3QgaGF2ZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlaXIgcHJv Z3JhbSBhdmFpbGFibGUuCiAKLUBub2RlIEdGT1JUUkFOX0VSUk9SX0RVTVBD T1JFCi1Ac2VjdGlvbiBAZW52e0dGT1JUUkFOX0VSUk9SX0RVTVBDT1JFfS0t LUR1bXAgY29yZSBvbiBydW4tdGltZSBlcnJvcnMKLQotSWYgdGhlIEBlbnZ7 R0ZPUlRSQU5fRVJST1JfRFVNUENPUkV9IHZhcmlhYmxlIGlzIHNldCB0bwot QHNhbXB7eX0sIEBzYW1we1l9IG9yIEBzYW1wezF9IChvbmx5IHRoZSBmaXJz dCBsZXR0ZXIgaXMgcmVsZXZhbnQpCi10aGVuIGxpYnJhcnkgcnVuLXRpbWUg ZXJyb3JzIGNhdXNlIGNvcmUgZHVtcHMuICBUbyBkaXNhYmxlIHRoZSBjb3Jl Ci1kdW1wcywgc2V0IHRoZSB2YXJpYWJsZSB0byBAc2FtcHtufSwgQHNhbXB7 Tn0sIEBzYW1wezB9LiAgRGVmYXVsdAotaXMgbm90IHRvIGNvcmUgZHVtcCB1 bmxlc3MgdGhlIEBvcHRpb257LWZkdW1wLWNvcmV9IGNvbXBpbGUgb3B0aW9u Ci13YXMgdXNlZC4KLQogQG5vZGUgR0ZPUlRSQU5fRVJST1JfQkFDS1RSQUNF CiBAc2VjdGlvbiBAZW52e0dGT1JUUkFOX0VSUk9SX0JBQ0tUUkFDRX0tLS1T aG93IGJhY2t0cmFjZSBvbiBydW4tdGltZSBlcnJvcnMKIAotSWYgdGhlIEBl bnZ7R0ZPUlRSQU5fRVJST1JfQkFDS1RSQUNFfSB2YXJpYWJsZSBpcyBzZXQg dG8KLUBzYW1we3l9LCBAc2FtcHtZfSBvciBAc2FtcHsxfSAob25seSB0aGUg Zmlyc3QgbGV0dGVyIGlzIHJlbGV2YW50KQotdGhlbiBhIGJhY2t0cmFjZSBp cyBwcmludGVkIHdoZW4gYSBydW4tdGltZSBlcnJvciBvY2N1cnMuCi1UbyBk aXNhYmxlIHRoZSBiYWNrdHJhY2luZywgc2V0IHRoZSB2YXJpYWJsZSB0bwot QHNhbXB7bn0sIEBzYW1we059LCBAc2FtcHswfS4gIERlZmF1bHQgaXMgbm90 IHRvIHByaW50IGEgYmFja3RyYWNlCi11bmxlc3MgdGhlIEBvcHRpb257LWZi YWNrdHJhY2V9IGNvbXBpbGUgb3B0aW9uCi13YXMgdXNlZC4KK0lmIHRoZSBA ZW52e0dGT1JUUkFOX0VSUk9SX0JBQ0tUUkFDRX0gdmFyaWFibGUgaXMgc2V0 IHRvIEBzYW1we3l9LAorQHNhbXB7WX0gb3IgQHNhbXB7MX0gKG9ubHkgdGhl IGZpcnN0IGxldHRlciBpcyByZWxldmFudCkgdGhlbiBhCitiYWNrdHJhY2Ug aXMgcHJpbnRlZCB3aGVuIGEgc2VyaW91cyBydW4tdGltZSBlcnJvciBvY2N1 cnMuICBUbyBkaXNhYmxlCit0aGUgYmFja3RyYWNpbmcsIHNldCB0aGUgdmFy aWFibGUgdG8gQHNhbXB7bn0sIEBzYW1we059LCBAc2FtcHswfS4KK0RlZmF1 bHQgaXMgdG8gcHJpbnQgYSBiYWNrdHJhY2UgdW5sZXNzIHRoZSBAb3B0aW9u ey1mbm8tYmFja3RyYWNlfQorY29tcGlsZSBvcHRpb24gd2FzIHVzZWQuCiAK IEBjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogQGMgUEFSVCBJSTogTEFO R1VBR0UgUkVGRVJFTkNFCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9pbnRy aW5zaWMudGV4aSBiL2djYy9mb3J0cmFuL2ludHJpbnNpYy50ZXhpCmluZGV4 IGViZmZiMTIuLjgwNGIzMWYgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL2lu dHJpbnNpYy50ZXhpCisrKyBiL2djYy9mb3J0cmFuL2ludHJpbnNpYy50ZXhp CkBAIC0zNDUsMTAgKzM0NSw3IEBAIHRoZSBhcHBsaWNhYmxlIHN0YW5kYXJk IGZvciBlYWNoIGludHJpbnNpYyBwcm9jZWR1cmUgaXMgbm90ZWQuCiBAdGFi bGUgQGFzaXMKIEBpdGVtIEBlbXBoe0Rlc2NyaXB0aW9ufToKIEBjb2Rle0FC T1JUfSBjYXVzZXMgaW1tZWRpYXRlIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9n cmFtLiAgT24gb3BlcmF0aW5nCi1zeXN0ZW1zIHRoYXQgc3VwcG9ydCBhIGNv cmUgZHVtcCwgQGNvZGV7QUJPUlR9IHdpbGwgcHJvZHVjZSBhIGNvcmUgZHVt cCBldmVuIGlmCi10aGUgb3B0aW9uIEBvcHRpb257LWZuby1kdW1wLWNvcmV9 IGlzIGluIGVmZmVjdCwgd2hpY2ggaXMgc3VpdGFibGUgZm9yIGRlYnVnZ2lu ZwotcHVycG9zZXMuCi1AYyBUT0RPOiBDaGVjayBpZiB0aGlzICh3aXRoIC1m bm8tZHVtcC1jb3JlKSBpcyBjb3JyZWN0Lgorc3lzdGVtcyB0aGF0IHN1cHBv cnQgYSBjb3JlIGR1bXAsIEBjb2Rle0FCT1JUfSB3aWxsIHByb2R1Y2UgYSBj b3JlIGR1bXAuCiAKIEBpdGVtIEBlbXBoe1N0YW5kYXJkfToKIEdOVSBleHRl bnNpb24KZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2ludm9rZS50ZXhpIGIv Z2NjL2ZvcnRyYW4vaW52b2tlLnRleGkKaW5kZXggOWYwMjIzOS4uZjY4YjE4 YyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vaW52b2tlLnRleGkKKysrIGIv Z2NjL2ZvcnRyYW4vaW52b2tlLnRleGkKQEAgLTE0NSw3ICsxNDUsNyBAQCBh bmQgd2FybmluZ3N9LgogQGl0ZW0gRGVidWdnaW5nIE9wdGlvbnMKIEB4cmVm e0RlYnVnZ2luZyBPcHRpb25zLCxPcHRpb25zIGZvciBkZWJ1Z2dpbmcgeW91 ciBwcm9ncmFtIG9yIEdOVSBGb3J0cmFufS4KIEBnY2NvcHRsaXN0ey1mZHVt cC1mb3J0cmFuLW9yaWdpbmFsICAtZmR1bXAtZm9ydHJhbi1vcHRpbWl6ZWQg QGdvbAotLWZmcGUtdHJhcD1AdmFye2xpc3R9ICAtZmR1bXAtY29yZSAtZmJh Y2t0cmFjZSAtZmR1bXAtcGFyc2UtdHJlZX0KKy1mZnBlLXRyYXA9QHZhcnts aXN0fSAtZmJhY2t0cmFjZSAtZmR1bXAtcGFyc2UtdHJlZX0KIAogQGl0ZW0g RGlyZWN0b3J5IE9wdGlvbnMKIEB4cmVme0RpcmVjdG9yeSBPcHRpb25zLCxP cHRpb25zIGZvciBkaXJlY3Rvcnkgc2VhcmNofS4KQEAgLTkzNSwyMiArOTM1 LDE4IEBAIFNvbWUgb2YgdGhlIHJvdXRpbmVzIGluIHRoZSBGb3J0cmFuIHJ1 bnRpbWUgbGlicmFyeSwgbGlrZQogQGNvZGV7ZmZwZS10cmFwPXByZWNpc2lv bn0gaXMgdXNlZC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgdXNlIG9mIAogQGNv ZGV7ZmZwZS10cmFwPXByZWNpc2lvbn0gaXMgbm90IHJlY29tbWVuZGVkLgog Ci1AaXRlbSAtZmJhY2t0cmFjZQotQG9waW5kZXggQGNvZGV7ZmJhY2t0cmFj ZX0KK0BpdGVtIC1mbm8tYmFja3RyYWNlCitAb3BpbmRleCBAY29kZXtmbm8t YmFja3RyYWNlfQogQGNpbmRleCBiYWNrdHJhY2UKIEBjaW5kZXggdHJhY2UK LVNwZWNpZnkgdGhhdCwgd2hlbiBhIHJ1bnRpbWUgZXJyb3IgaXMgZW5jb3Vu dGVyZWQgb3IgYSBkZWFkbHkgc2lnbmFsIGlzCi1lbWl0dGVkIChzZWdtZW50 YXRpb24gZmF1bHQsIGlsbGVnYWwgaW5zdHJ1Y3Rpb24sIGJ1cyBlcnJvciBv cgotZmxvYXRpbmctcG9pbnQgZXhjZXB0aW9uKSwgdGhlIEZvcnRyYW4gcnVu dGltZQotbGlicmFyeSBzaG91bGQgb3V0cHV0IGEgYmFja3RyYWNlIG9mIHRo ZSBlcnJvci4gIFRoaXMgb3B0aW9uCi1vbmx5IGhhcyBpbmZsdWVuY2UgZm9y IGNvbXBpbGF0aW9uIG9mIHRoZSBGb3J0cmFuIG1haW4gcHJvZ3JhbS4KLQot QGl0ZW0gLWZkdW1wLWNvcmUKLUBjaW5kZXggY29yZSwgZHVtcAotQG9waW5k ZXggQGNvZGV7ZmR1bXAtY29yZX0KLVJlcXVlc3QgdGhhdCBhIGNvcmUtZHVt cCBmaWxlIGlzIHdyaXR0ZW4gdG8gZGlzayB3aGVuIGEgcnVudGltZSBlcnJv cgotaXMgZW5jb3VudGVyZWQgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgY29y ZSBkdW1wcy4gVGhpcyBvcHRpb24gaXMKLW9ubHkgZWZmZWN0aXZlIGZvciB0 aGUgY29tcGlsYXRpb24gb2YgdGhlIEZvcnRyYW4gbWFpbiBwcm9ncmFtLgor V2hlbiBhIHNlcmlvdXMgcnVudGltZSBlcnJvciBpcyBlbmNvdW50ZXJlZCBv ciBhIGRlYWRseSBzaWduYWwgaXMKK2VtaXR0ZWQgKHNlZ21lbnRhdGlvbiBm YXVsdCwgaWxsZWdhbCBpbnN0cnVjdGlvbiwgYnVzIGVycm9yLAorZmxvYXRp bmctcG9pbnQgZXhjZXB0aW9uLCBhbmQgdGhlIG90aGVyIFBPU0lYIHNpZ25h bHMgdGhhdCBoYXZlIHRoZQorYWN0aW9uIEBzYW1we2NvcmV9KSwgdGhlIEZv cnRyYW4gcnVudGltZSBsaWJyYXJ5IHRyaWVzIHRvIG91dHB1dCBhCitiYWNr dHJhY2Ugb2YgdGhlIGVycm9yLiBAY29kZXstZm5vLWJhY2t0cmFjZX0gZGlz YWJsZXMgdGhlIGJhY2t0cmFjZQorZ2VuZXJhdGlvbi4gVGhpcyBvcHRpb24g b25seSBoYXMgaW5mbHVlbmNlIGZvciBjb21waWxhdGlvbiBvZiB0aGUKK0Zv cnRyYW4gbWFpbiBwcm9ncmFtLgorCiBAZW5kIHRhYmxlCiAKIEB4cmVme0Rl YnVnZ2luZyBPcHRpb25zLCxPcHRpb25zIGZvciBEZWJ1Z2dpbmcgWW91ciBQ cm9ncmFtIG9yIEdDQywKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL2xhbmcu b3B0IGIvZ2NjL2ZvcnRyYW4vbGFuZy5vcHQKaW5kZXggY2U5NDRlMy4uYTA1 NmM1YyAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vbGFuZy5vcHQKKysrIGIv Z2NjL2ZvcnRyYW4vbGFuZy5vcHQKQEAgLTM2NiwxMCArMzY2LDYgQEAgZmRv bGxhci1vawogRm9ydHJhbgogQWxsb3cgZG9sbGFyIHNpZ25zIGluIGVudGl0 eSBuYW1lcwogCi1mZHVtcC1jb3JlCi1Gb3J0cmFuCi1EdW1wIGEgY29yZSBm aWxlIHdoZW4gYSBydW50aW1lIGVycm9yIG9jY3VycwotCiBmZHVtcC1mb3J0 cmFuLW9yaWdpbmFsCiBGb3J0cmFuCiBEaXNwbGF5IHRoZSBjb2RlIHRyZWUg YWZ0ZXIgcGFyc2luZwpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vb3B0aW9u cy5jIGIvZ2NjL2ZvcnRyYW4vb3B0aW9ucy5jCmluZGV4IGM2N2QxMDkuLmQ0 Nzc4YmEgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL29wdGlvbnMuYworKysg Yi9nY2MvZm9ydHJhbi9vcHRpb25zLmMKQEAgLTEzNCw5ICsxMzQsOCBAQCBn ZmNfaW5pdF9vcHRpb25zICh1bnNpZ25lZCBpbnQgZGVjb2RlZF9vcHRpb25z X2NvdW50LAogICBnZmNfb3B0aW9uLmZsYWdfYXV0b21hdGljID0gMTsKICAg Z2ZjX29wdGlvbi5mbGFnX2JhY2tzbGFzaCA9IDA7CiAgIGdmY19vcHRpb24u ZmxhZ19tb2R1bGVfcHJpdmF0ZSA9IDA7Ci0gIGdmY19vcHRpb24uZmxhZ19i YWNrdHJhY2UgPSAwOworICBnZmNfb3B0aW9uLmZsYWdfYmFja3RyYWNlID0g MTsKICAgZ2ZjX29wdGlvbi5mbGFnX2FsbG93X2xlYWRpbmdfdW5kZXJzY29y ZSA9IDA7Ci0gIGdmY19vcHRpb24uZmxhZ19kdW1wX2NvcmUgPSAwOwogICBn ZmNfb3B0aW9uLmZsYWdfZXh0ZXJuYWxfYmxhcyA9IDA7CiAgIGdmY19vcHRp b24uYmxhc19tYXRtdWxfbGltaXQgPSAzMDsKICAgZ2ZjX29wdGlvbi5mbGFn X2NyYXlfcG9pbnRlciA9IDA7CkBAIC02OTcsMTAgKzY5Niw2IEBAIGdmY19o YW5kbGVfb3B0aW9uIChzaXplX3Qgc2NvZGUsIGNvbnN0IGNoYXIgKmFyZywg aW50IHZhbHVlLAogICAgICAgZ2ZjX29wdGlvbi5ydGNoZWNrIHw9IEdGQ19S VENIRUNLX0FSUkFZX1RFTVBTOwogICAgICAgYnJlYWs7CiAgICAgICAKLSAg ICBjYXNlIE9QVF9mZHVtcF9jb3JlOgotICAgICAgZ2ZjX29wdGlvbi5mbGFn X2R1bXBfY29yZSA9IHZhbHVlOwotICAgICAgYnJlYWs7Ci0KICAgICBjYXNl IE9QVF9mY3JheV9wb2ludGVyOgogICAgICAgZ2ZjX29wdGlvbi5mbGFnX2Ny YXlfcG9pbnRlciA9IHZhbHVlOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQg YS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmMgYi9nY2MvZm9ydHJhbi90cmFu cy1kZWNsLmMKaW5kZXggNzdlMmE1OS4uZjAxMzhiMCAxMDA2NDQKLS0tIGEv Z2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCisrKyBiL2djYy9mb3J0cmFuL3Ry YW5zLWRlY2wuYwpAQCAtNDYzNiw5ICs0NjM2LDEyIEBAIGNyZWF0ZV9tYWlu X2Z1bmN0aW9uICh0cmVlIGZuZGVjbCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZmNfb3B0aW9uLmFsbG93X3N0ZCkp OwogICAgIENPTlNUUlVDVE9SX0FQUEVORF9FTFQgKHYsIE5VTExfVFJFRSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9pbnRfY3N0IChp bnRlZ2VyX3R5cGVfbm9kZSwgcGVkYW50aWMpKTsKKyAgICAvKiBUT0RPOiBU aGlzIGlzIHRoZSBvbGQgLWZkdW1wLWNvcmUgb3B0aW9uLCB3aGljaCBpcyB1 bnVzZWQgYnV0CisgICAgICAgcGFzc2VkIGR1ZSB0byBBQkkgY29tcGF0aWJp bGl0eTsgcmVtb3ZlIHdoZW4gYnVtcGluZyB0aGUKKyAgICAgICBsaWJyYXJ5 IEFCSS4gICovCiAgICAgQ09OU1RSVUNUT1JfQVBQRU5EX0VMVCAodiwgTlVM TF9UUkVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX2lu dF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdmY19vcHRpb24uZmxhZ19kdW1w X2NvcmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwKSk7CiAgICAgQ09OU1RSVUNUT1JfQVBQRU5EX0VMVCAodiwg TlVMTF9UUkVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk X2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmY19vcHRpb24uZmxhZ19i YWNrdHJhY2UpKTsKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2ludHJpbnNp Y3MvYWJvcnQuYyBiL2xpYmdmb3J0cmFuL2ludHJpbnNpY3MvYWJvcnQuYwpp bmRleCBhZGE0MDYxLi41NDNmOGZjIDEwMDY0NAotLS0gYS9saWJnZm9ydHJh bi9pbnRyaW5zaWNzL2Fib3J0LmMKKysrIGIvbGliZ2ZvcnRyYW4vaW50cmlu c2ljcy9hYm9ydC5jCkBAIC0zMCw2ICszMCw1IEBAIGV4cG9ydF9wcm90b19u cChQUkVGSVgoYWJvcnQpKTsKIAogdm9pZCBQUkVGSVgoYWJvcnQpICh2b2lk KQogewotICBjbG9zZV91bml0cyAoKTsKLSAgYWJvcnQgKCk7CisgIHN5c19h Ym9ydCAoKTsKIH0KZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2lvL3VuaXgu YyBiL2xpYmdmb3J0cmFuL2lvL3VuaXguYwppbmRleCA0ZTRiYzNiLi5kZDk5 NWVlIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9pby91bml4LmMKKysrIGIv bGliZ2ZvcnRyYW4vaW8vdW5peC5jCkBAIC0xMzgzLDcgKzEzODMsNyBAQCBz dF92cHJpbnRmIChjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXApCiAj ZGVmaW5lIEVSUk9SX01FU1NBR0UgIkludGVybmFsIGVycm9yOiBidWZmZXIg b3ZlcnJ1biBpbiBzdF92cHJpbnRmKClcbiIKICAgICAgIHdyaXRlIChmZCwg YnVmZmVyLCBTVF9WUFJJTlRGX1NJWkUtMSk7CiAgICAgICB3cml0ZSAoZmQs IEVSUk9SX01FU1NBR0UsIHN0cmxlbihFUlJPUl9NRVNTQUdFKSk7Ci0gICAg ICBzeXNfZXhpdCgyKTsKKyAgICAgIHN5c19hYm9ydCgpOwogI3VuZGVmIEVS Uk9SX01FU1NBR0UKIAogICAgIH0KZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFu L2xpYmdmb3J0cmFuLmggYi9saWJnZm9ydHJhbi9saWJnZm9ydHJhbi5oCmlu ZGV4IDZjY2NhY2EuLjU4ZmU5NmIgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFu L2xpYmdmb3J0cmFuLmgKKysrIGIvbGliZ2ZvcnRyYW4vbGliZ2ZvcnRyYW4u aApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgY29u c3QgY2hhciAqc2VwYXJhdG9yOwogCiAgIGludCB1c2Vfc3RkZXJyLCBhbGxf dW5idWZmZXJlZCwgdW5idWZmZXJlZF9wcmVjb25uZWN0ZWQsIGRlZmF1bHRf cmVjbDsKLSAgaW50IGZwZSwgZHVtcF9jb3JlLCBiYWNrdHJhY2U7CisgIGlu dCBmcGUsIGJhY2t0cmFjZTsKIH0KIG9wdGlvbnNfdDsKIAogZXh0ZXJuIG9w dGlvbnNfdCBvcHRpb25zOwogaW50ZXJuYWxfcHJvdG8ob3B0aW9ucyk7CiAK LWV4dGVybiB2b2lkIGhhbmRsZXIgKGludCk7Ci1pbnRlcm5hbF9wcm90byho YW5kbGVyKTsKK2V4dGVybiB2b2lkIGJhY2t0cmFjZV9oYW5kbGVyIChpbnQp OworaW50ZXJuYWxfcHJvdG8oYmFja3RyYWNlX2hhbmRsZXIpOwogCiAKIC8q IENvbXBpbGUtdGltZSBvcHRpb25zIHRoYXQgd2lsbCBpbmZsdWVuY2UgdGhl IGxpYnJhcnkuICAqLwpAQCAtNTI4LDcgKzUyOCw2IEBAIHR5cGVkZWYgc3Ry dWN0CiAgIGludCBhbGxvd19zdGQ7CiAgIGludCBwZWRhbnRpYzsKICAgaW50 IGNvbnZlcnQ7Ci0gIGludCBkdW1wX2NvcmU7CiAgIGludCBiYWNrdHJhY2U7 CiAgIGludCBzaWduX3plcm87CiAgIHNpemVfdCByZWNvcmRfbWFya2VyOwpA QCAtNjg4LDggKzY4Nyw4IEBAIGludGVybmFsX3Byb3RvKHNob3dfYmFja3Ry YWNlKTsKICNkZWZpbmUgR0ZDX09UT0FfQlVGX1NJWkUgKEdGQ19MQVJHRVNU X0JVRiAqIDMgKyAxKQogI2RlZmluZSBHRkNfQlRPQV9CVUZfU0laRSAoR0ZD X0xBUkdFU1RfQlVGICogOCArIDEpCiAKLWV4dGVybiB2b2lkIHN5c19leGl0 IChpbnQpIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwotaW50ZXJuYWxf cHJvdG8oc3lzX2V4aXQpOworZXh0ZXJuIHZvaWQgc3lzX2Fib3J0ICh2b2lk KSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKK2ludGVybmFsX3Byb3Rv KHN5c19hYm9ydCk7CiAKIGV4dGVybiBjb25zdCBjaGFyICpnZmNfeHRvYSAo R0ZDX1VJTlRFR0VSX0xBUkdFU1QsIGNoYXIgKiwgc2l6ZV90KTsKIGludGVy bmFsX3Byb3RvKGdmY194dG9hKTsKZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFu L3J1bnRpbWUvYmFja3RyYWNlLmMgYi9saWJnZm9ydHJhbi9ydW50aW1lL2Jh Y2t0cmFjZS5jCmluZGV4IDVlNGYxNWMuLjJhNDgxY2QgMTAwNjQ0Ci0tLSBh L2xpYmdmb3J0cmFuL3J1bnRpbWUvYmFja3RyYWNlLmMKKysrIGIvbGliZ2Zv cnRyYW4vcnVudGltZS9iYWNrdHJhY2UuYwpAQCAtMzE4LDUgKzMxOCw3IEBA IGZhbGxiYWNrOgogICAvKiBGYWxsYmFjayB0byB0aGUgZ2xpYmMgYmFja3Ry YWNlLiAgKi8KICAgc3RfcHJpbnRmICgiXG5CYWNrdHJhY2UgZm9yIHRoaXMg ZXJyb3I6XG4iKTsKICAgZHVtcF9nbGliY19iYWNrdHJhY2UgKGRlcHRoLCBz dHIpOworICByZXR1cm47CiAjZW5kaWYKKyAgc3RfcHJpbnRmICgiXG5CYWNr dHJhY2Ugbm90IHlldCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSwgc29y cnkhXG4iKTsKIH0KZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL3J1bnRpbWUv Y29tcGlsZV9vcHRpb25zLmMgYi9saWJnZm9ydHJhbi9ydW50aW1lL2NvbXBp bGVfb3B0aW9ucy5jCmluZGV4IDYyYzQwMWIuLmRjMGRhNGIgMTAwNjQ0Ci0t LSBhL2xpYmdmb3J0cmFuL3J1bnRpbWUvY29tcGlsZV9vcHRpb25zLmMKKysr IGIvbGliZ2ZvcnRyYW4vcnVudGltZS9jb21waWxlX29wdGlvbnMuYwpAQCAt MzMsNDkgKzMzLDI4IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENP UFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQogY29t cGlsZV9vcHRpb25zX3QgY29tcGlsZV9vcHRpb25zOwogCiAKK3ZvbGF0aWxl IHNpZ19hdG9taWNfdCBmYXRhbF9lcnJvcl9pbl9wcm9ncmVzcyA9IDA7CisK IC8qIEEgc2lnbmFsIGhhbmRsZXIgdG8gYWxsb3cgdXMgdG8gb3V0cHV0IGEg YmFja3RyYWNlLiAgKi8KIHZvaWQKLWhhbmRsZXIgKGludCBzaWdudW0pCiti YWNrdHJhY2VfaGFuZGxlciAoaW50IHNpZ251bSkKIHsKLSAgY29uc3QgY2hh ciAqIG5hbWUgPSBOVUxMLCAqIGRlc2MgPSBOVUxMOwotCi0gIHN3aXRjaCAo c2lnbnVtKQotICAgIHsKLSNpZiBkZWZpbmVkKFNJR1NFR1YpCi0gICAgICBj YXNlIFNJR1NFR1Y6Ci0JbmFtZSA9ICJTSUdTRUdWIjsKLQlkZXNjID0gIlNl Z21lbnRhdGlvbiBmYXVsdCI7Ci0JYnJlYWs7Ci0jZW5kaWYKLQotI2lmIGRl ZmluZWQoU0lHQlVTKQotICAgICAgY2FzZSBTSUdCVVM6Ci0JbmFtZSA9ICJT SUdCVVMiOwotCWRlc2MgPSAiQnVzIGVycm9yIjsKLQlicmVhazsKLSNlbmRp ZgotCi0jaWYgZGVmaW5lZChTSUdJTEwpCi0gICAgICBjYXNlIFNJR0lMTDoK LQluYW1lID0gIlNJR0lMTCI7Ci0JZGVzYyA9ICJJbGxlZ2FsIGluc3RydWN0 aW9uIjsKLQlicmVhazsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChTSUdGUEUp Ci0gICAgICBjYXNlIFNJR0ZQRToKLQluYW1lID0gIlNJR0ZQRSI7Ci0JZGVz YyA9ICJGbG9hdGluZy1wb2ludCBleGNlcHRpb24iOwotCWJyZWFrOwotI2Vu ZGlmCi0gICAgfQotCi0gIGlmIChuYW1lKQotICAgIHN0X3ByaW50ZiAoIlxu UHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgJWQgKCVzKTogJXMuXG4iLCBzaWdu dW0sIG5hbWUsIGRlc2MpOwotICBlbHNlCi0gICAgc3RfcHJpbnRmICgiXG5Q cm9ncmFtIHJlY2VpdmVkIHNpZ25hbCAlZC5cbiIsIHNpZ251bSk7Ci0KLSAg c3lzX2V4aXQgKDUpOworICAvKiBTaW5jZSB0aGlzIGhhbmRsZXIgaXMgZXN0 YWJsaXNoZWQgZm9yIG1vcmUgdGhhbiBvbmUga2luZCBvZiBzaWduYWwsIAor ICAgICBpdCBtaWdodCBzdGlsbCBnZXQgaW52b2tlZCByZWN1cnNpdmVseSBi eSBkZWxpdmVyeSBvZiBzb21lIG90aGVyIGtpbmQKKyAgICAgb2Ygc2lnbmFs LiAgVXNlIGEgc3RhdGljIHZhcmlhYmxlIHRvIGtlZXAgdHJhY2sgb2YgdGhh dC4gKi8KKyAgaWYgKGZhdGFsX2Vycm9yX2luX3Byb2dyZXNzKQorICAgIHJh aXNlIChzaWdudW0pOworICBmYXRhbF9lcnJvcl9pbl9wcm9ncmVzcyA9IDE7 CisKKyAgc2hvd19iYWNrdHJhY2UoKTsKKworICAvKiBOb3cgcmVyYWlzZSB0 aGUgc2lnbmFsLiAgV2UgcmVhY3RpdmF0ZSB0aGUgc2lnbmFsJ3MKKyAgICAg ZGVmYXVsdCBoYW5kbGluZywgd2hpY2ggaXMgdG8gdGVybWluYXRlIHRoZSBw cm9jZXNzLgorICAgICBXZSBjb3VsZCBqdXN0IGNhbGwgZXhpdCBvciBhYm9y dCwKKyAgICAgYnV0IHJlcmFpc2luZyB0aGUgc2lnbmFsIHNldHMgdGhlIHJl dHVybiBzdGF0dXMKKyAgICAgZnJvbSB0aGUgcHJvY2VzcyBjb3JyZWN0bHku ICovCisgIHNpZ25hbCAoc2lnbnVtLCBTSUdfREZMKTsKKyAgcmFpc2UgKHNp Z251bSk7CiB9CiAKIApAQCAtOTIsOCArNzEsOSBAQCBzZXRfb3B0aW9ucyAo aW50IG51bSwgaW50IG9wdGlvbnNbXSkKICAgICBjb21waWxlX29wdGlvbnMu YWxsb3dfc3RkID0gb3B0aW9uc1sxXTsKICAgaWYgKG51bSA+PSAzKQogICAg IGNvbXBpbGVfb3B0aW9ucy5wZWRhbnRpYyA9IG9wdGlvbnNbMl07Ci0gIGlm IChudW0gPj0gNCkKLSAgICBjb21waWxlX29wdGlvbnMuZHVtcF9jb3JlID0g b3B0aW9uc1szXTsKKyAgLyogb3B0aW9uc1szXSBpcyB0aGUgcmVtb3ZlZCAt ZmR1bXAtY29yZSBvcHRpb24uIEl0J3MgcGxhY2UgaW4gdGhlCisgICAgIG9w dGlvbnMgYXJyYXkgaXMgcmV0YWluZWQgZHVlIHRvIEFCSSBjb21wYXRpYmls aXR5LiBSZW1vdmUgd2hlbgorICAgICBidW1waW5nIHRoZSBsaWJyYXJ5IEFC SS4gICovCiAgIGlmIChudW0gPj0gNSkKICAgICBjb21waWxlX29wdGlvbnMu YmFja3RyYWNlID0gb3B0aW9uc1s0XTsKICAgaWYgKG51bSA+PSA2KQpAQCAt MTAzLDI2ICs4Myw1MyBAQCBzZXRfb3B0aW9ucyAoaW50IG51bSwgaW50IG9w dGlvbnNbXSkKICAgaWYgKG51bSA+PSA4KQogICAgIGNvbXBpbGVfb3B0aW9u cy5yYW5nZV9jaGVjayA9IG9wdGlvbnNbN107CiAKLSAgLyogSWYgYmFja3Ry YWNlIGlzIHJlcXVpcmVkLCB3ZSBzZXQgc2lnbmFsIGhhbmRsZXJzIG9uIG1v c3QgY29tbW9uCi0gICAgIHNpZ25hbHMuICAqLwotI2lmIGRlZmluZWQoSEFW RV9TSUdOQUwpICYmIChkZWZpbmVkKFNJR1NFR1YpIHx8IGRlZmluZWQoU0lH QlVTKSBcCi0JCQkgICAgIHx8IGRlZmluZWQoU0lHSUxMKSB8fCBkZWZpbmVk KFNJR0ZQRSkpCisgIC8qIElmIGJhY2t0cmFjZSBpcyByZXF1aXJlZCwgd2Ug c2V0IHNpZ25hbCBoYW5kbGVycyBvbiB0aGUgUE9TSVgKKyAgICAgMjAwMSBz aWduYWxzIHdpdGggY29yZSBhY3Rpb24uICAqLworI2lmIGRlZmluZWQoSEFW RV9TSUdOQUwpICYmIChkZWZpbmVkKFNJR1FVSVQpIHx8IGRlZmluZWQoU0lH SUxMKSBcCisJCQkgICAgIHx8IGRlZmluZWQoU0lHQUJSVCkgfHwgZGVmaW5l ZChTSUdGUEUpIFwKKwkJCSAgICAgfHwgZGVmaW5lZChTSUdTRUdWKSB8fCBk ZWZpbmVkKFNJR0JVUykgXAorCQkJICAgICB8fCBkZWZpbmVkKFNJR1NZUykg fHwgZGVmaW5lZChTSUdUUkFQKSBcCisJCQkgICAgIHx8IGRlZmluZWQoU0lH WENQVSkgfHwgZGVmaW5lZChTSUdYRlNaKSkKICAgaWYgKGNvbXBpbGVfb3B0 aW9ucy5iYWNrdHJhY2UpCiAgICAgeworI2lmIGRlZmluZWQoU0lHUVVJVCkK KyAgICAgIHNpZ25hbCAoU0lHUVVJVCwgYmFja3RyYWNlX2hhbmRsZXIpOwor I2VuZGlmCisKKyNpZiBkZWZpbmVkKFNJR0lMTCkKKyAgICAgIHNpZ25hbCAo U0lHSUxMLCBiYWNrdHJhY2VfaGFuZGxlcik7CisjZW5kaWYKKworI2lmIGRl ZmluZWQoU0lHQUJSVCkKKyAgICAgIHNpZ25hbCAoU0lHQUJSVCwgYmFja3Ry YWNlX2hhbmRsZXIpOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFNJR0ZQRSkK KyAgICAgIHNpZ25hbCAoU0lHRlBFLCBiYWNrdHJhY2VfaGFuZGxlcik7Cisj ZW5kaWYKKwogI2lmIGRlZmluZWQoU0lHU0VHVikKLSAgICAgIHNpZ25hbCAo U0lHU0VHViwgaGFuZGxlcik7CisgICAgICBzaWduYWwgKFNJR1NFR1YsIGJh Y2t0cmFjZV9oYW5kbGVyKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChTSUdC VVMpCi0gICAgICBzaWduYWwgKFNJR0JVUywgaGFuZGxlcik7CisgICAgICBz aWduYWwgKFNJR0JVUywgYmFja3RyYWNlX2hhbmRsZXIpOwogI2VuZGlmCiAK LSNpZiBkZWZpbmVkKFNJR0lMTCkKLSAgICAgIHNpZ25hbCAoU0lHSUxMLCBo YW5kbGVyKTsKKyNpZiBkZWZpbmVkKFNJR1NZUykKKyAgICAgIHNpZ25hbCAo U0lHU1lTLCBiYWNrdHJhY2VfaGFuZGxlcik7CiAjZW5kaWYKIAotI2lmIGRl ZmluZWQoU0lHRlBFKQotICAgICAgc2lnbmFsIChTSUdGUEUsIGhhbmRsZXIp OworI2lmIGRlZmluZWQoU0lHVFJBUCkKKyAgICAgIHNpZ25hbCAoU0lHVFJB UCwgYmFja3RyYWNlX2hhbmRsZXIpOworI2VuZGlmCisKKyNpZiBkZWZpbmVk KFNJR1hDUFUpCisgICAgICBzaWduYWwgKFNJR1hDUFUsIGJhY2t0cmFjZV9o YW5kbGVyKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChTSUdYRlNaKQorICAg ICAgc2lnbmFsIChTSUdYRlNaLCBiYWNrdHJhY2VfaGFuZGxlcik7CiAjZW5k aWYKICAgICB9CiAjZW5kaWYKQEAgLTE0MCw3ICsxNDcsNiBAQCBpbml0X2Nv bXBpbGVfb3B0aW9ucyAodm9pZCkKICAgICB8IEdGQ19TVERfRjIwMDMgfCBH RkNfU1REX0YyMDA4IHwgR0ZDX1NURF9GOTUgfCBHRkNfU1REX0Y3NwogICAg IHwgR0ZDX1NURF9GMjAwOF9PQlMgfCBHRkNfU1REX0dOVSB8IEdGQ19TVERf TEVHQUNZOwogICBjb21waWxlX29wdGlvbnMucGVkYW50aWMgPSAwOwotICBj b21waWxlX29wdGlvbnMuZHVtcF9jb3JlID0gMDsKICAgY29tcGlsZV9vcHRp b25zLmJhY2t0cmFjZSA9IDA7CiAgIGNvbXBpbGVfb3B0aW9ucy5zaWduX3pl cm8gPSAxOwogICBjb21waWxlX29wdGlvbnMucmFuZ2VfY2hlY2sgPSAxOwpk aWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vcnVudGltZS9lbnZpcm9uLmMgYi9s aWJnZm9ydHJhbi9ydW50aW1lL2Vudmlyb24uYwppbmRleCBhNmNlNjQ1Li41 MDJkYThmIDEwMDY0NAotLS0gYS9saWJnZm9ydHJhbi9ydW50aW1lL2Vudmly b24uYworKysgYi9saWJnZm9ydHJhbi9ydW50aW1lL2Vudmlyb24uYwpAQCAt MzE5LDExICszMTksNiBAQCBzdGF0aWMgdmFyaWFibGUgdmFyaWFibGVfdGFi bGVbXSA9IHsKICAgeyJHRk9SVFJBTl9DT05WRVJUX1VOSVQiLCAwLCAwLCBp bml0X3VuZm9ybWF0dGVkLCBzaG93X3N0cmluZywKICAgICJTZXQgZm9ybWF0 IGZvciB1bmZvcm1hdHRlZCBmaWxlcyIsIDB9LAogCi0gIC8qIEJlaGF2aW91 ciB3aGVuIGVuY291dGVyaW5nIGEgcnVudGltZSBlcnJvci4gICovCi0gIHsi R0ZPUlRSQU5fRVJST1JfRFVNUENPUkUiLCAtMSwgJm9wdGlvbnMuZHVtcF9j b3JlLAotICAgIGluaXRfYm9vbGVhbiwgc2hvd19ib29sZWFuLAotICAgICJE dW1wIGEgY29yZSBmaWxlIChpZiBwb3NzaWJsZSkgb24gcnVudGltZSBlcnJv ciIsIC0xfSwKLQogICB7IkdGT1JUUkFOX0VSUk9SX0JBQ0tUUkFDRSIsIC0x LCAmb3B0aW9ucy5iYWNrdHJhY2UsCiAgICAgaW5pdF9ib29sZWFuLCBzaG93 X2Jvb2xlYW4sCiAgICAgIlByaW50IG91dCBhIGJhY2t0cmFjZSAoaWYgcG9z c2libGUpIG9uIHJ1bnRpbWUgZXJyb3IiLCAtMX0sCkBAIC0zNTIsNyArMzQ3 LDcgQEAgc2hvd192YXJpYWJsZXMgKHZvaWQpCiAgIGludCBuOwogCiAgIC8q IFRPRE86IHByaW50IHZlcnNpb24gbnVtYmVyLiAgKi8KLSAgc3RfcHJpbnRm ICgiR05VIEZvcnRyYW4gOTUgcnVudGltZSBsaWJyYXJ5IHZlcnNpb24gIgor ICBzdF9wcmludGYgKCJHTlUgRm9ydHJhbiBydW50aW1lIGxpYnJhcnkgdmVy c2lvbiAiCiAJICAgICAiVU5LTk9XTiIgIlxuXG4iKTsKIAogICBzdF9wcmlu dGYgKCJFbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4iKTsKQEAgLTM5MCw3ICsz ODUsNyBAQCBzaG93X3ZhcmlhYmxlcyAodm9pZCkKIAogICAvKiBzdF9wcmlu dGYoIiAgLS1yZXN1bWUgPGRyb3BmaWxlPiAgUmVzdW1lIHByb2dyYW0gZXhl Y3V0aW9uIGZyb20gZHJvcGZpbGVcbiIpOyAqLwogCi0gIHN5c19leGl0ICgw KTsKKyAgZXhpdCAoMCk7CiB9CiAKIC8qIFRoaXMgaXMgdGhlIGhhbmRsaW5n IG9mIHRoZSBHRk9SVFJBTl9DT05WRVJUX1VOSVRTIGVudmlyb25tZW50IHZh cmlhYmxlLgpkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vcnVudGltZS9lcnJv ci5jIGIvbGliZ2ZvcnRyYW4vcnVudGltZS9lcnJvci5jCmluZGV4IDA2YzE0 NGEuLjlhZDQzNWMgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFuL3J1bnRpbWUv ZXJyb3IuYworKysgYi9saWJnZm9ydHJhbi9ydW50aW1lL2Vycm9yLmMKQEAg LTU4LDQ0ICs1OCwzMiBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBD T1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKICNl bmRpZgogCiAKLS8qIHN5c19leGl0KCktLSBUZXJtaW5hdGUgdGhlIHByb2dy YW0gd2l0aCBhbiBleGl0IGNvZGUuICAqLwotCi12b2lkCi1zeXNfZXhpdCAo aW50IGNvZGUpCi17Ci0gIC8qIFNob3cgZXJyb3IgYmFja3RyYWNlIGlmIHBv c3NpYmxlLiAgKi8KLSAgaWYgKGNvZGUgIT0gMCAmJiBjb2RlICE9IDQKLSAg ICAgICYmIChvcHRpb25zLmJhY2t0cmFjZSA9PSAxCi0JICB8fCAob3B0aW9u cy5iYWNrdHJhY2UgPT0gLTEgJiYgY29tcGlsZV9vcHRpb25zLmJhY2t0cmFj ZSA9PSAxKSkpCi0gICAgc2hvd19iYWNrdHJhY2UgKCk7Ci0KLSAgLyogRHVt cCBjb3JlIGlmIHJlcXVlc3RlZC4gICovCi0gIGlmIChjb2RlICE9IDAKLSAg ICAgICYmIChvcHRpb25zLmR1bXBfY29yZSA9PSAxCi0JIHx8IChvcHRpb25z LmR1bXBfY29yZSA9PSAtMSAmJiBjb21waWxlX29wdGlvbnMuZHVtcF9jb3Jl ID09IDEpKSkKLSAgICB7Ci0jaWYgZGVmaW5lZChIQVZFX0dFVFJMSU1JVCkg JiYgZGVmaW5lZChSTElNSVRfQ09SRSkKLSAgICAgIC8qIFdhcm4gaWYgYSBj b3JlIGZpbGUgY2Fubm90IGJlIHByb2R1Y2VkIGJlY2F1c2UKLQkgb2YgY29y ZSBzaXplIGxpbWl0LiAgKi8KLQotICAgICAgc3RydWN0IHJsaW1pdCBjb3Jl X2xpbWl0OwotCi0gICAgICBpZiAoZ2V0cmxpbWl0IChSTElNSVRfQ09SRSwg JmNvcmVfbGltaXQpID09IDAgJiYgY29yZV9saW1pdC5ybGltX2N1ciA9PSAw KQotCXN0X3ByaW50ZiAoIioqIFdhcm5pbmc6IGEgY29yZSBkdW1wIHdhcyBy ZXF1ZXN0ZWQsIGJ1dCB0aGUgY29yZSBzaXplIgotCQkgICAibGltaXRcbioq ICAgICAgICAgIGlzIGN1cnJlbnRseSB6ZXJvLlxuXG4iKTsKLSNlbmRpZgot ICAgICAgCi0gICAgICAKLSNpZiBkZWZpbmVkKEhBVkVfS0lMTCkgJiYgZGVm aW5lZChIQVZFX0dFVFBJRCkgJiYgZGVmaW5lZChTSUdRVUlUKQotICAgICAg a2lsbCAoZ2V0cGlkICgpLCBTSUdRVUlUKTsKLSNlbHNlCi0gICAgICBzdF9w cmludGYgKCJDb3JlIGR1bXAgbm90IHBvc3NpYmxlLCBzb3JyeS4iKTsKLSNl bmRpZgotICAgIH0KLQotICBleGl0IChjb2RlKTsKLX0KLQorLyogVGVybWlu YXRpb24gb2YgYSBwcm9ncmFtOiBGMjAwOCAyLjMuNSB0YWxrcyBhYm91dCAi bm9ybWFsCisgICB0ZXJtaW5hdGlvbiIgYW5kICJlcnJvciB0ZXJtaW5hdGlv biIuIE5vcm1hbCB0ZXJtaW5hdGlvbiBvY2N1cnMgYXMKKyAgIGEgcmVzdWx0 IG9mIGUuZy4gZXhlY3V0aW5nIHRoZSBlbmQgcHJvZ3JhbSBzdGF0ZW1lbnQs IGFuZCBleGVjdXRpbmcKKyAgIHRoZSBTVE9QIHN0YXRlbWVudC4gSXQgaW5j bHVkZXMgdGhlIGVmZmVjdCBvZiB0aGUgQyBleGl0KCkKKyAgIGZ1bmN0aW9u LiAKKworICAgRXJyb3IgdGVybWluYXRpb24gaXMgaW5pdGlhdGVkIHdoZW4g dGhlIEVSUk9SIFNUT1Agc3RhdGVtZW50IGlzCisgICBleGVjdXRlZCwgd2hl biBBTExPQ0FURS9ERUFMTE9DQVRFIGZhaWxzIHdpdGhvdXQgU1RBVD0gYmVp bmcKKyAgIHNwZWNpZmllZCwgd2hlbiBzb21lIG9mIHRoZSBjby1hcnJheSBz eW5jaHJvbml6YXRpb24gc3RhdGVtZW50cworICAgZmFpbCB3aXRob3V0IFNU QVQ9IGJlaW5nIHNwZWNpZmllZCwgYW5kIHNvbWUgSS9PIGVycm9ycyBpZgor ICAgRVJSL0lPU1RBVC9FTkQvRU9SIGlzIG5vdCBwcmVzZW50LCBhbmQgZmlu YWxseSBFWEVDVVRFX0NPTU1BTkRfTElORQorICAgZmFpbHVyZSB3aXRob3V0 IENNRFNUQVQ9LgorCisgICAyLjMuNSBhbHNvIGV4cGxhaW5zIGhvdyBjby1p bWFnZXMgc3luY2hyb25pemUgZHVyaW5nIHRlcm1pbmF0aW9uLgorCisgICBJ biBsaWJnZm9ydHJhbiB3ZSBoYXZlIHR3byB3YXlzIG9mIGVuZGluZyBhIHBy b2dyYW0uIGV4aXQoY29kZSkgaXMKKyAgIGEgbm9ybWFsIGV4aXQ7IGNhbGxp bmcgZXhpdCgpIGFsc28gY2F1c2VzIG9wZW4gdW5pdHMgdG8gYmUKKyAgIGNs b3NlZC4gTm8gYmFja3RyYWNlIG9yIGNvcmUgZHVtcCBpcyBuZWVkZWQgaGVy ZS4gV2hlbiBzb21ldGhpbmcKKyAgIGdvZXMgd3JvbmcsIHdlIGhhdmUgc3lz X2Fib3J0KCkgd2hpY2ggdHJpZXMgdG8gcHJpbnQgdGhlIGJhY2t0cmFjZQor ICAgaWYgLWZiYWNrdHJhY2UgaXMgZW5hYmxlZCwgYW5kIHRoZSBkdW1wcyBj b3JlOyB3aGV0aGVyIGEgY29yZSBmaWxlCisgICBpcyBnZW5lcmF0ZWQgaXMg c3lzdGVtIGRlcGVuZGVudC4gV2hlbiBhYm9ydGluZywgd2UgZG9uJ3QgZmx1 c2ggYW5kCisgICBjbG9zZSBvcGVuIHVuaXRzLCBhcyBwcm9ncmFtIG1lbW9y eSBtaWdodCBiZSBjb3JydXB0ZWQgYW5kIHdlJ2QKKyAgIHJhdGhlciByaXNr IGxvc2luZyBkaXJ0eSBkYXRhIGluIHRoZSBidWZmZXJzIHJhdGhlciB0aGFu IGNvcnJ1cHRpbmcKKyAgIGZpbGVzIG9uIGRpc2suCisKKyovCiAKIC8qIEVy cm9yIGNvbmRpdGlvbnMuICBUaGUgdHJpY2t5IHBhcnQgaGVyZSBpcyBwcmlu dGluZyBhIG1lc3NhZ2Ugd2hlbgogICogaXQgaXMgdGhlIEkvTyBzdWJzeXN0 ZW0gdGhhdCBpcyBzZXZlcmVseSB3b3VuZGVkLiAgT3VyIGdvYWwgaXMgdG8K QEAgLTExMiw2ICsxMDAsMjggQEAgc3lzX2V4aXQgKGludCBjb2RlKQogICog T3RoZXIgZXJyb3IgcmV0dXJucyBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBTVE9Q IHN0YXRlbWVudCB3aXRoIGEgbnVtZXJpYyBjb2RlLgogICovCiAKKworLyog c3lzX2Fib3J0KCktLSBUZXJtaW5hdGUgdGhlIHByb2dyYW0gc2hvd2luZyBi YWNrdHJhY2UgYW5kIGR1bXBpbmcKKyAgIGNvcmUuICAqLworCit2b2lkCitz eXNfYWJvcnQgKCkKK3sKKyAgLyogSWYgYmFja3RyYWNpbmcgaXMgZW5hYmxl ZCwgcHJpbnQgYmFja3RyYWNlIGFuZCBkaXNhYmxlIHNpZ25hbAorICAgICBo YW5kbGVyIGZvciBBQlJULiAgKi8KKyAgaWYgKG9wdGlvbnMuYmFja3RyYWNl ID09IDEKKyAgICAgIHx8IChvcHRpb25zLmJhY2t0cmFjZSA9PSAtMSAmJiBj b21waWxlX29wdGlvbnMuYmFja3RyYWNlID09IDEpKQorICAgIHsKKyAgICAg IHNob3dfYmFja3RyYWNlICgpOworI2lmIGRlZmluZWQoSEFWRV9TSUdOQUwp ICYmIGRlZmluZWQoU0lHQUJSVCkKKyAgICAgIHNpZ25hbCAoU0lHQUJSVCwg U0lHX0RGTCk7CisjZW5kaWYKKyAgICB9CisKKyAgYWJvcnQoKTsKK30KKwor CiAvKiBnZmNfeHRvYSgpLS0gSW50ZWdlciB0byBoZXhhZGVjaW1hbCBjb252 ZXJzaW9uLiAgKi8KIAogY29uc3QgY2hhciAqCkBAIC0yMTYsNyArMjI2LDcg QEAgcmVjdXJzaW9uX2NoZWNrICh2b2lkKQogCiAgIC8qIERvbid0IGV2ZW4g dHJ5IHRvIHByaW50IHNvbWV0aGluZyBhdCB0aGlzIHBvaW50ICovCiAgIGlm IChtYWdpYyA9PSBNQUdJQykKLSAgICBzeXNfZXhpdCAoNCk7CisgICAgc3lz X2Fib3J0ICgpOwogCiAgIG1hZ2ljID0gTUFHSUM7CiB9CkBAIC0yMzUsNyAr MjQ1LDcgQEAgb3NfZXJyb3IgKGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiAgIHJl Y3Vyc2lvbl9jaGVjayAoKTsKICAgc3RfcHJpbnRmICgiT3BlcmF0aW5nIHN5 c3RlbSBlcnJvcjogJXNcbiVzXG4iLCAKIAkgICAgIGdmX3N0cmVycm9yIChl cnJubywgZXJybXNnLCBTVFJFUlJfTUFYU1opLCBtZXNzYWdlKTsKLSAgc3lz X2V4aXQgKDEpOworICBleGl0ICgxKTsKIH0KIGlleHBvcnQob3NfZXJyb3Ip OwogCkBAIC0yNTQsNyArMjY0LDcgQEAgcnVudGltZV9lcnJvciAoY29uc3Qg Y2hhciAqbWVzc2FnZSwgLi4uKQogICBzdF92cHJpbnRmIChtZXNzYWdlLCBh cCk7CiAgIHZhX2VuZCAoYXApOwogICBzdF9wcmludGYgKCJcbiIpOwotICBz eXNfZXhpdCAoMik7CisgIGV4aXQgKDIpOwogfQogaWV4cG9ydChydW50aW1l X2Vycm9yKTsKIApAQCAtMjczLDcgKzI4Myw3IEBAIHJ1bnRpbWVfZXJyb3Jf YXQgKGNvbnN0IGNoYXIgKndoZXJlLCBjb25zdCBjaGFyICptZXNzYWdlLCAu Li4pCiAgIHN0X3ZwcmludGYgKG1lc3NhZ2UsIGFwKTsKICAgdmFfZW5kIChh cCk7CiAgIHN0X3ByaW50ZiAoIlxuIik7Ci0gIHN5c19leGl0ICgyKTsKKyAg ZXhpdCAoMik7CiB9CiBpZXhwb3J0KHJ1bnRpbWVfZXJyb3JfYXQpOwogCkBA IC0zMDksNyArMzE5LDcgQEAgaW50ZXJuYWxfZXJyb3IgKHN0X3BhcmFtZXRl cl9jb21tb24gKmNtcCwgY29uc3QgY2hhciAqbWVzc2FnZSkKICAgICAgYmVj YXVzZSBob3BlZnVsbHkgaXQgZG9lc24ndCBoYXBwZW4gdG9vIG9mdGVuKS4g ICovCiAgIHN0dXBpZF9mdW5jdGlvbl9uYW1lX2Zvcl9zdGF0aWNfbGlua2lu ZygpOwogCi0gIHN5c19leGl0ICgzKTsKKyAgZXhpdCAoMyk7CiB9CiAKIApA QCAtNDc1LDcgKzQ4NSw3IEBAIGdlbmVyYXRlX2Vycm9yIChzdF9wYXJhbWV0 ZXJfY29tbW9uICpjbXAsIGludCBmYW1pbHksIGNvbnN0IGNoYXIgKm1lc3Nh Z2UpCiAgIHJlY3Vyc2lvbl9jaGVjayAoKTsKICAgc2hvd19sb2N1cyAoY21w KTsKICAgc3RfcHJpbnRmICgiRm9ydHJhbiBydW50aW1lIGVycm9yOiAlc1xu IiwgbWVzc2FnZSk7Ci0gIHN5c19leGl0ICgyKTsKKyAgZXhpdCAoMik7CiB9 CiBpZXhwb3J0KGdlbmVyYXRlX2Vycm9yKTsKIApAQCAtNTMzLDcgKzU0Myw3 IEBAIG5vdGlmeV9zdGQgKHN0X3BhcmFtZXRlcl9jb21tb24gKmNtcCwgaW50 IHN0ZCwgY29uc3QgY2hhciAqIG1lc3NhZ2UpCiAgICAgICByZWN1cnNpb25f Y2hlY2sgKCk7CiAgICAgICBzaG93X2xvY3VzIChjbXApOwogICAgICAgc3Rf cHJpbnRmICgiRm9ydHJhbiBydW50aW1lIGVycm9yOiAlc1xuIiwgbWVzc2Fn ZSk7Ci0gICAgICBzeXNfZXhpdCAoMik7CisgICAgICBleGl0ICgyKTsKICAg ICB9CiAgIGVsc2UKICAgICB7CmRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9y dW50aW1lL3N0b3AuYyBiL2xpYmdmb3J0cmFuL3J1bnRpbWUvc3RvcC5jCmlu ZGV4IDI5ZjUwMzEuLmIyZjUxYTEgMTAwNjQ0Ci0tLSBhL2xpYmdmb3J0cmFu L3J1bnRpbWUvc3RvcC5jCisrKyBiL2xpYmdmb3J0cmFuL3J1bnRpbWUvc3Rv cC5jCkBAIC00MCw3ICs0MCw3IEBAIHN0b3BfbnVtZXJpYyAoR0ZDX0lOVEVH RVJfNCBjb2RlKQogICBlbHNlCiAgICAgc3RfcHJpbnRmICgiU1RPUCAlZFxu IiwgKGludCljb2RlKTsKIAotICBzeXNfZXhpdCAoY29kZSk7CisgIGV4aXQg KGNvZGUpOwogfQogCiAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZAogc3RvcF9u dW1lcmljX2YwOCAoR0ZDX0lOVEVHRVJfNCBjb2RlKQogewogICBzdF9wcmlu dGYgKCJTVE9QICVkXG4iLCAoaW50KWNvZGUpOwotICBzeXNfZXhpdCAoY29k ZSk7CisgIGV4aXQgKGNvZGUpOwogfQogCiAKQEAgLTcwLDcgKzcwLDcgQEAg c3RvcF9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cmluZywgR0ZDX0lOVEVHRVJf NCBsZW4pCiAJc3RfcHJpbnRmICgiJWMiLCAqKHN0cmluZysrKSk7CiAgICAg ICBzdF9wcmludGYgKCJcbiIpOwogICAgIH0KLSAgc3lzX2V4aXQgKDApOwor ICBleGl0ICgwKTsKIH0KIAogCkBAIC05MSw3ICs5MSw3IEBAIGVycm9yX3N0 b3Bfc3RyaW5nIChjb25zdCBjaGFyICpzdHJpbmcsIEdGQ19JTlRFR0VSXzQg bGVuKQogICAgIHN0X3ByaW50ZiAoIiVjIiwgKihzdHJpbmcrKykpOwogICBz dF9wcmludGYgKCJcbiIpOwogCi0gIHN5c19leGl0ICgxKTsKKyAgc3lzX2Fi b3J0ICgpOwogfQogCiAKQEAgLTEwNSw1ICsxMDUsOCBAQCB2b2lkCiBlcnJv cl9zdG9wX251bWVyaWMgKEdGQ19JTlRFR0VSXzQgY29kZSkKIHsKICAgc3Rf cHJpbnRmICgiRVJST1IgU1RPUCAlZFxuIiwgKGludCkgY29kZSk7Ci0gIHN5 c19leGl0IChjb2RlKTsKKyAgaWYgKG9wdGlvbnMuYmFja3RyYWNlID09IDEK KyAgICAgIHx8IChvcHRpb25zLmJhY2t0cmFjZSA9PSAtMSAmJiBjb21waWxl X29wdGlvbnMuYmFja3RyYWNlID09IDEpKQorICAgIHNob3dfYmFja3RyYWNl ICgpOworICBleGl0IChjb2RlKTsKIH0K --bcaec520f4394f5d4e04a2b4f1ae--