From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#12881: Assume at least POSIX.1-1988 for fcntl.h Date: Wed, 14 Nov 2012 22:32:07 -0800 Organization: UCLA Computer Science Department Message-ID: <50A48C67.7020603@cs.ucla.edu> References: <50A34A56.9080007@cs.ucla.edu> <83y5i4t7gm.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080405040800060107020407" X-Trace: ger.gmane.org 1352961153 27521 80.91.229.3 (15 Nov 2012 06:32:33 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 15 Nov 2012 06:32:33 +0000 (UTC) Cc: 12881@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Nov 15 07:32:44 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TYt0D-0005WV-Ec for geb-bug-gnu-emacs@m.gmane.org; Thu, 15 Nov 2012 07:32:41 +0100 Original-Received: from localhost ([::1]:50975 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYt03-00067d-KL for geb-bug-gnu-emacs@m.gmane.org; Thu, 15 Nov 2012 01:32:31 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:38301) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYszz-00067D-4G for bug-gnu-emacs@gnu.org; Thu, 15 Nov 2012 01:32:30 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TYszw-0008N4-1F for bug-gnu-emacs@gnu.org; Thu, 15 Nov 2012 01:32:27 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33307) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYszv-0008My-To for bug-gnu-emacs@gnu.org; Thu, 15 Nov 2012 01:32:23 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TYt0Y-0003Os-GY for bug-gnu-emacs@gnu.org; Thu, 15 Nov 2012 01:33:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 15 Nov 2012 06:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12881 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 12881-submit@debbugs.gnu.org id=B12881.135296117713059 (code B ref 12881); Thu, 15 Nov 2012 06:33:02 +0000 Original-Received: (at 12881) by debbugs.gnu.org; 15 Nov 2012 06:32:57 +0000 Original-Received: from localhost ([127.0.0.1]:43558 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TYt0R-0003OW-DH for submit@debbugs.gnu.org; Thu, 15 Nov 2012 01:32:56 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:58530) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TYt0L-0003OL-LE for 12881@debbugs.gnu.org; Thu, 15 Nov 2012 01:32:53 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 361D8A60004; Wed, 14 Nov 2012 22:32:09 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rXplWItKhvIu; Wed, 14 Nov 2012 22:32:07 -0800 (PST) Original-Received: from [192.168.1.3] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 9868CA60001; Wed, 14 Nov 2012 22:32:07 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20121028 Thunderbird/16.0.2 In-Reply-To: <83y5i4t7gm.fsf@gnu.org> X-Spam-Score: -4.4 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-Spam-Score: -4.4 (----) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:66948 Archived-At: This is a multi-part message in MIME format. --------------080405040800060107020407 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 11/14/2012 09:33 AM, Eli Zaretskii wrote: > In several places, it actually changes the code involved > in dealing with the related issues. Here's one example: As far as I know, that is the only example involving O_NONBLOCK. > Here, the code that was left is identical to the one used by platforms > with O_NONBLOCK, but the code used by platforms with O_NDELAY was > different in non-trivial ways. Do those differences matter for Microsoft platforms? If so, it's simple to keep them just for DOS_NT, with the following further change: === modified file 'src/process.c' --- src/process.c 2012-11-14 07:26:25 +0000 +++ src/process.c 2012-11-15 06:19:46 +0000 @@ -4797,6 +4797,14 @@ #endif else if (nread == -1 && errno == EAGAIN) ; +#ifdef DOS_NT + /* Note that we cannot distinguish between no input + available now and a closed pipe. + With luck, a closed pipe will be accompanied by + subprocess termination and SIGCHLD. */ + else if (nread == 0 && !NETCONN_P (proc) && !SERIALCONN_P (proc)) + ; +#endif #ifdef HAVE_PTYS /* On some OSs with ptys, when the process on one end of a pty exits, the other end gets an error reading with > Another potential problem is that the Windows emulation of fcntl only > works for sockets, whereas O_NONBLOCK is now used in other system > calls, like in emacs_open etc. emacs_open is the only other system call where it's used, and there it's used only in code that is "#ifndef DOS_NT", so it should be OK. > This patch also modifies code unrelated to O_NONBLOCK, like this one: That's OK, as this patch is about all symbols defined by fcntl.h in POSIX.1-1988, not just about O_NONBLOCK. > Failing that, Someone(TM) will have to do the footwork of making > sure these changes don't break non-Posix platforms. The only non-POSIX platform are the Microsoft ones, right? And if the above analysis is right, we should be OK. Attached is a revised patch, relative to trunk bzr 110904, and with the above extra change. --------------080405040800060107020407 Content-Type: text/plain; charset=UTF-8; name="fcntl.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fcntl.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTExLTE0 IDA0OjU1OjQxICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMS0xNSAwNjowMzo0NSArMDAw MApAQCAtMSwzICsxLDggQEAKKzIwMTItMTEtMTUgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgorCisJQXNzdW1lIFBPU0lYIDEwMDMuMS0xOTg4IG9yIGxhdGVyIGZvciBm Y250bC5oIChCdWcjMTI4ODEpLgorCSogbGliL2dudWxpYi5tazogUmVnZW5lcmF0ZS4KKwog MjAxMi0xMS0xNCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKIAlVc2Ug ZmFjY2Vzc2F0LCBub3QgYWNjZXNzLCB3aGVuIGNoZWNraW5nIGZpbGUgcGVybWlzc2lvbnMg KEJ1ZyMxMjYzMikuCgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4vQ1BQLURFRklORVMnCi0t LSBhZG1pbi9DUFAtREVGSU5FUwkyMDEyLTExLTA1IDAzOjE4OjMyICswMDAwCisrKyBhZG1p bi9DUFAtREVGSU5FUwkyMDEyLTExLTE0IDA3OjI2OjI1ICswMDAwCkBAIC00MjAsOCArNDIw LDYgQEAKIE5TSUdfTUlOSU1VTQogTlVMTF9ERVZJQ0UKIE9SRElOQVJZX0xJTksKLU9fUkRP TkxZCi1PX1JEV1IKIFBBR0VTSVpFCiBQUkVGRVJfVlNVU1AKIFBUWV9JVEVSQVRJT04KCj09 PSBtb2RpZmllZCBmaWxlICdhZG1pbi9DaGFuZ2VMb2cnCi0tLSBhZG1pbi9DaGFuZ2VMb2cJ MjAxMi0xMS0xNCAwNDo1NTo0MSArMDAwMAorKysgYWRtaW4vQ2hhbmdlTG9nCTIwMTItMTEt MTUgMDY6MDM6NDUgKzAwMDAKQEAgLTEsMyArMSw5IEBACisyMDEyLTExLTE1ICBQYXVsIEVn Z2VydCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKworCUFzc3VtZSBQT1NJWCAxMDAzLjEtMTk4 OCBvciBsYXRlciBmb3IgZmNudGwuaCAoQnVnIzEyODgxKS4KKwkqIENQUC1ERUZJTkVTIChP X1JET05MWSwgT19SRFdSKTogUmVtb3ZlLgorCSogbWVyZ2UtZ251bGliIChHTlVMSUJfTU9E VUxFUyk6IEFkZCBmY250bC1oLgorCiAyMDEyLTExLTE0ICBQYXVsIEVnZ2VydCAgPGVnZ2Vy dEBjcy51Y2xhLmVkdT4KIAogCVVzZSBmYWNjZXNzYXQsIG5vdCBhY2Nlc3MsIHdoZW4gY2hl Y2tpbmcgZmlsZSBwZXJtaXNzaW9ucyAoQnVnIzEyNjMyKS4KCj09PSBtb2RpZmllZCBmaWxl ICdhZG1pbi9tZXJnZS1nbnVsaWInCi0tLSBhZG1pbi9tZXJnZS1nbnVsaWIJMjAxMi0xMS0x NCAwNDo1NTo0MSArMDAwMAorKysgYWRtaW4vbWVyZ2UtZ251bGliCTIwMTItMTEtMTQgMDc6 MjY6MjUgKzAwMDAKQEAgLTI5LDcgKzI5LDcgQEAKICAgYWxsb2NhLW9wdCBjLWN0eXBlIGMt c3RyY2FzZQogICBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUgY3J5cHRv L3NoYTEgY3J5cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyCiAgIGR0b2FzdHIgZHRvdGltZXNw ZWMgZHVwMiBlbnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdAotICBmaWxlbW9kZSBnZXRsb2Fk YXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkKKyAgZmNudGwtaCBmaWxlbW9k ZSBnZXRsb2FkYXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkKICAgaWdub3Jl LXZhbHVlIGludHByb3BzIGxhcmdlZmlsZSBsc3RhdAogICBtYW55d2FybmluZ3MgbWt0aW1l IHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHJlYWRsaW5rCiAgIHNvY2tsZW4gc3RhdC10aW1l IHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGli L2dudWxpYi5taycKLS0tIGxpYi9nbnVsaWIubWsJMjAxMi0xMS0xNCAwNDo1NTo0MSArMDAw MAorKysgbGliL2dudWxpYi5tawkyMDEyLTExLTE0IDA3OjI2OjI1ICswMDAwCkBAIC0yMSw3 ICsyMSw3IEBACiAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBv ZiB0aGF0IHByb2dyYW0uCiAjCiAjIEdlbmVyYXRlZCBieSBnbnVsaWItdG9vbC4KLSMgUmVw cm9kdWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbGliPWxpYmdudSAt LXNvdXJjZS1iYXNlPWxpYiAtLW00LWJhc2U9bTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1i YXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1hdm9pZD1hdC1pbnRlcm5hbCAtLWF2 b2lkPWVycm5vIC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZmNudGwgLS1hdm9pZD1mc3RhdCAt LWF2b2lkPW1hbGxvYy1wb3NpeCAtLWF2b2lkPW1zdmMtaW52YWwgLS1hdm9pZD1tc3ZjLW5v dGhyb3cgLS1hdm9pZD1vcGVuYXQtZGllIC0tYXZvaWQ9b3BlbmF0LWggLS1hdm9pZD1yYWlz ZSAtLWF2b2lkPXNhdmUtY3dkIC0tYXZvaWQ9c2VsZWN0IC0tYXZvaWQ9c2lncHJvY21hc2sg LS1hdm9pZD1zeXNfdHlwZXMgLS1hdm9pZD10aHJlYWRsaWIgLS1tYWtlZmlsZS1uYW1lPWdu dWxpYi5tayAtLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRvb2wgLS1tYWNy by1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBhbGxvY2Etb3B0IGMtY3R5cGUgYy1zdHJjYXNl IGNhcmVhZGxpbmthdCBjbG9zZS1zdHJlYW0gY3J5cHRvL21kNSBjcnlwdG8vc2hhMSBjcnlw dG8vc2hhMjU2IGNyeXB0by9zaGE1MTIgZHRvYXN0ciBkdG90aW1lc3BlYyBkdXAyIGVudmly b24gZXhlY2luZm8gZmFjY2Vzc2F0IGZpbGVtb2RlIGdldGxvYWRhdmcgZ2V0b3B0LWdudSBn ZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFsdWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxz dGF0IG1hbnl3YXJuaW5ncyBta3RpbWUgcHNlbGVjdCBwdGhyZWFkX3NpZ21hc2sgcmVhZGxp bmsgc29ja2xlbiBzdGF0LXRpbWUgc3RkYWxpZ24gc3RkYXJnIHN0ZGJvb2wgc3RkaW8gc3Ry ZnRpbWUgc3RydG9pbWF4IHN0cnRvdW1heCBzeW1saW5rIHN5c19zdGF0IHN5c190aW1lIHRp bWUgdGltZXItdGltZSB0aW1lc3BlYy1hZGQgdGltZXNwZWMtc3ViIHV0aW1lbnMgd2Fybmlu Z3MKKyMgUmVwcm9kdWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbGli PWxpYmdudSAtLXNvdXJjZS1iYXNlPWxpYiAtLW00LWJhc2U9bTQgLS1kb2MtYmFzZT1kb2Mg LS10ZXN0cy1iYXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1hdm9pZD1hdC1pbnRl cm5hbCAtLWF2b2lkPWVycm5vIC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZmNudGwgLS1hdm9p ZD1mc3RhdCAtLWF2b2lkPW1hbGxvYy1wb3NpeCAtLWF2b2lkPW1zdmMtaW52YWwgLS1hdm9p ZD1tc3ZjLW5vdGhyb3cgLS1hdm9pZD1vcGVuYXQtZGllIC0tYXZvaWQ9b3BlbmF0LWggLS1h dm9pZD1yYWlzZSAtLWF2b2lkPXNhdmUtY3dkIC0tYXZvaWQ9c2VsZWN0IC0tYXZvaWQ9c2ln cHJvY21hc2sgLS1hdm9pZD1zeXNfdHlwZXMgLS1hdm9pZD10aHJlYWRsaWIgLS1tYWtlZmls ZS1uYW1lPWdudWxpYi5tayAtLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRv b2wgLS1tYWNyby1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBhbGxvY2Etb3B0IGMtY3R5cGUg Yy1zdHJjYXNlIGNhcmVhZGxpbmthdCBjbG9zZS1zdHJlYW0gY3J5cHRvL21kNSBjcnlwdG8v c2hhMSBjcnlwdG8vc2hhMjU2IGNyeXB0by9zaGE1MTIgZHRvYXN0ciBkdG90aW1lc3BlYyBk dXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0IGZjbnRsLWggZmlsZW1vZGUgZ2V0bG9h ZGF2ZyBnZXRvcHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5IGlnbm9yZS12YWx1ZSBpbnRw cm9wcyBsYXJnZWZpbGUgbHN0YXQgbWFueXdhcm5pbmdzIG1rdGltZSBwc2VsZWN0IHB0aHJl YWRfc2lnbWFzayByZWFkbGluayBzb2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcg c3RkYm9vbCBzdGRpbyBzdHJmdGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lz X3N0YXQgc3lzX3RpbWUgdGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1z dWIgdXRpbWVucyB3YXJuaW5ncwogCiAKIE1PU1RMWUNMRUFORklMRVMgKz0gY29yZSAqLnN0 YWNrZHVtcAoKPT09IG1vZGlmaWVkIGZpbGUgJ250L0NoYW5nZUxvZycKLS0tIG50L0NoYW5n ZUxvZwkyMDEyLTExLTE0IDE3OjIyOjU1ICswMDAwCisrKyBudC9DaGFuZ2VMb2cJMjAxMi0x MS0xNSAwNjowMzo0NSArMDAwMApAQCAtMSwzICsxLDkgQEAKKzIwMTItMTEtMTUgIFBhdWwg RWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorCisJQXNzdW1lIFBPU0lYIDEwMDMuMS0x OTg4IG9yIGxhdGVyIGZvciBmY250bC5oIChCdWcjMTI4ODEpLgorCSogaW5jL3N5cy9zb2Nr ZXQuaCAoT19OT05CTE9DSyk6IFJlbmFtZSBmcm9tIE9fTkRFTEFZLCBzaW5jZSB0aGUKKwlQ T1NJWCBuYW1lIGZvciB0aGlzIGZsYWcgaXMgT19OT05CTE9DSy4gIEFsbCB1c2VzIGNoYW5n ZWQuCisKIDIwMTItMTEtMTQgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5vcmc+CiAKIAkq IGluYy91bmlzdGQuaCAoZmFjY2Vzc2F0KTogQWRkIHByb3RvdHlwZS4KCj09PSBtb2RpZmll ZCBmaWxlICdudC9pbmMvc3lzL3NvY2tldC5oJwotLS0gbnQvaW5jL3N5cy9zb2NrZXQuaAky MDEyLTA5LTMwIDIxOjM2OjQyICswMDAwCisrKyBudC9pbmMvc3lzL3NvY2tldC5oCTIwMTIt MTEtMTQgMDc6MjY6MjUgKzAwMDAKQEAgLTExOSw3ICsxMTksNyBAQAogICAgYW4gZmNudGwg ZnVuY3Rpb24sIGZvciBzZXR0aW5nIHNvY2tldHMgdG8gbm9uLWJsb2NraW5nIG1vZGUuICAq LwogaW50IGZjbnRsIChpbnQgcywgaW50IGNtZCwgaW50IG9wdGlvbnMpOwogI2RlZmluZSBG X1NFVEZMICAgNAotI2RlZmluZSBPX05ERUxBWSAgMDQwMDAKKyNkZWZpbmUgT19OT05CTE9D SyAgMDQwMDAKIAogLyogd2UgYXJlIHByb3ZpZGluZyBhIHJlYWwgaF9lcnJubyB2YXJpYWJs ZSAqLwogI3VuZGVmIGhfZXJybm8KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9n JwotLS0gc3JjL0NoYW5nZUxvZwkyMDEyLTExLTE1IDAwOjQxOjMyICswMDAwCisrKyBzcmMv Q2hhbmdlTG9nCTIwMTItMTEtMTUgMDY6MTk6NDYgKzAwMDAKQEAgLTEsNSArMSwyNyBAQAog MjAxMi0xMS0xNSAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKKwlBc3N1 bWUgUE9TSVggMTAwMy4xLTE5ODggb3IgbGF0ZXIgZm9yIGZjbnRsLmggKEJ1ZyMxMjg4MSku CisJKiBjYWxscHJvYy5jIChyZWxvY2F0ZV9mZCk6IEFzc3VtZSBGX0RVUEZELgorCSogZW1h Y3MuYywgdGVybS5jIChPX1JEV1IpOiBSZW1vdmUuCisJKiBrZXlib2FyZC5jICh0dHlfcmVh ZF9hdmFpbF9pbnB1dCk6IFVzZSBPX05PTkJMT0NLIHJhdGhlciB0aGFuCisJT19OREVMQVks IHNpbmNlIE9fTk9OQkxPQ0sgaXMgdGhlIHN0YW5kYXJkIG5hbWUgZm9yIHRoaXMgZmxhZy4K KwkqIHByb2Nlc3MuYyAoTk9OX0JMT0NLSU5HX0NPTk5FQ1QsIGFsbG9jYXRlX3B0eSwgY3Jl YXRlX3Byb2Nlc3MpCisJKGNyZWF0ZV9wdHksIEZtYWtlX25ldHdvcmtfcHJvY2Vzcywgc2Vy dmVyX2FjY2VwdF9jb25uZWN0aW9uKQorCSh3YWl0X3JlYWRpbmdfcHJvY2Vzc19vdXRwdXQs IGluaXRfcHJvY2Vzc19lbWFjcyk6CisJQXNzdW1lIE9fTk9OQkxPQ0suCisJKHdhaXRfcmVh ZGluZ19wcm9jZXNzX291dHB1dCk6IFB1dCBpbiBhIHNwZWNpYWwgY2FzZSBmb3IgRE9TX05U LAorCXRvIG1pbWljayB0aGUgb2xkZXIgYmVoYXZpb3Igd2hlcmUgaXQgaGFkIE9fTkRFTEFZ IGJ1dCBub3QgT19OT05CTE9DSy4KKwlJdCdzIG5vdCBjbGVhciB0aGlzIGlzIG5lZWRlZCwg YnV0IGl0J3MgYSBtb3JlLWNvbnNlcnZhdGl2ZSBjaGFuZ2UuCisJKGNyZWF0ZV9wcm9jZXNz KTogQXNzdW1lIEZEX0NMT0VYRUMuCisJKGNyZWF0ZV9wcm9jZXNzLCBjcmVhdGVfcHR5KTog QXNzdW1lIE9fTk9DVFRZLgorCSogc3lzZGVwLmMgKGluaXRfc3lzX21vZGVzLCByZXNldF9z eXNfbW9kZXMpOiBBc3N1bWUgRl9TRVRGTC4KKwkocmVzZXRfc3lzX21vZGVzKTogVXNlIE9f Tk9OQkxPQ0sgcmF0aGVyIHRoYW4gT19OREVMQVkuCisJKHNlcmlhbF9vcGVuKTogQXNzdW1l IE9fTk9OQkxPQ0sgYW5kIE9fTk9DVFRZLgorCSogdGVybS5jIChPX05PQ1RUWSk6IFJlbW92 ZS4KKwkoaW5pdF90dHkpOiBBc3N1bWUgT19JR05PUkVfQ1RUWSBpcyBkZWZpbmVkIHRvIDAg b24gcGxhdGZvcm1zIHRoYXQKKwlsYWNrIGl0LCBzaW5jZSBnbnVsaWIgZ3VhcmFudGVlcyB0 aGlzLgorCSogdzMyLmMgKGZjbnRsKTogVGVzdCBmb3IgT19OT05CTE9DSyByYXRoZXIgdGhh biBPX05ERUxBWS4KKwogCSogZXZhbC5jIChtYXJrX2JhY2t0cmFjZSkgW0JZVEVfTUFSS19T VEFDS106IFJlbW92ZSBzdHJheSAnKicuCiAJVGhpcyBmb2xsb3dzIHVwIG9uIHRoZSAyMDEy LTA5LTI5IHBhdGNoIHRoYXQgcmVtb3ZlZCBpbmRpcmVjdGlvbgogCWZvciB0aGUgJ2Z1bmN0 aW9uJyBmaWVsZC4gIFJlcG9ydGVkIGJ5IFNlcmdleSBWaW5va3Vyb3YgaW4KCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvY2FsbHByb2MuYycKLS0tIHNyYy9jYWxscHJvYy5jCTIwMTItMTEt MTQgMDQ6NTU6NDEgKzAwMDAKKysrIHNyYy9jYWxscHJvYy5jCTIwMTItMTEtMTQgMDc6MjY6 MjUgKzAwMDAKQEAgLTEzMTcsMTYgKzEzMTcsNyBAQAogICAgIHJldHVybiBmZDsKICAgZWxz ZQogICAgIHsKLSAgICAgIGludCBuZXc7Ci0jaWZkZWYgRl9EVVBGRAotICAgICAgbmV3ID0g ZmNudGwgKGZkLCBGX0RVUEZELCBtaW5mZCk7Ci0jZWxzZQotICAgICAgbmV3ID0gZHVwIChm ZCk7Ci0gICAgICBpZiAobmV3ICE9IC0xKQotCS8qIE5vdGUgdGhhdCB3ZSBob2xkIHRoZSBv cmlnaW5hbCBGRCBvcGVuIHdoaWxlIHdlIHJlY3Vyc2UsCi0JICAgdG8gZ3VhcmFudGVlIHdl J2xsIGdldCBhIG5ldyBGRCBpZiB3ZSBuZWVkIGl0LiAgKi8KLQluZXcgPSByZWxvY2F0ZV9m ZCAobmV3LCBtaW5mZCk7Ci0jZW5kaWYKKyAgICAgIGludCBuZXcgPSBmY250bCAoZmQsIEZf RFVQRkQsIG1pbmZkKTsKICAgICAgIGlmIChuZXcgPT0gLTEpCiAJewogCSAgY29uc3QgY2hh ciAqbWVzc2FnZV8xID0gIkVycm9yIHdoaWxlIHNldHRpbmcgdXAgY2hpbGQ6ICI7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3JjL2VtYWNzLmMnCi0tLSBzcmMvZW1hY3MuYwkyMDEyLTExLTA4 IDE5OjEyOjIzICswMDAwCisrKyBzcmMvZW1hY3MuYwkyMDEyLTExLTE0IDA3OjI2OjI1ICsw MDAwCkBAIC05NSwxMCArOTUsNiBAQAogI2luY2x1ZGUgPHN5cy9wZXJzb25hbGl0eS5oPgog I2VuZGlmCiAKLSNpZm5kZWYgT19SRFdSCi0jZGVmaW5lIE9fUkRXUiAyCi0jZW5kaWYKLQog c3RhdGljIGNvbnN0IGNoYXIgZW1hY3NfdmVyc2lvbltdID0gVkVSU0lPTjsKIHN0YXRpYyBj b25zdCBjaGFyIGVtYWNzX2NvcHlyaWdodFtdID0gQ09QWVJJR0hUOwogCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2tleWJvYXJkLmMnCi0tLSBzcmMva2V5Ym9hcmQuYwkyMDEyLTExLTA4 IDA5OjI2OjQwICswMDAwCisrKyBzcmMva2V5Ym9hcmQuYwkyMDEyLTExLTE0IDA3OjI2OjI1 ICswMDAwCkBAIC02OTQ4LDcgKzY5NDgsNyBAQAogI2VsaWYgZGVmaW5lZCBVU0cgfHwgZGVm aW5lZCBDWUdXSU4KICAgLyogUmVhZCBzb21lIGlucHV0IGlmIGF2YWlsYWJsZSwgYnV0IGRv bid0IHdhaXQuICAqLwogICBuX3RvX3JlYWQgPSBzaXplb2YgY2J1ZjsKLSAgZmNudGwgKGZp bGVubyAodHR5LT5pbnB1dCksIEZfU0VURkwsIE9fTkRFTEFZKTsKKyAgZmNudGwgKGZpbGVu byAodHR5LT5pbnB1dCksIEZfU0VURkwsIE9fTk9OQkxPQ0spOwogI2Vsc2UKICMgZXJyb3Ig IkNhbm5vdCByZWFkIHdpdGhvdXQgcG9zc2libHkgZGVsYXlpbmciCiAjZW5kaWYKQEAgLTY5 ODIsNyArNjk4Miw3IEBACiAgICAgfQogICB3aGlsZSAoCiAgICAgICAgICAvKiBXZSB1c2Vk IHRvIHJldHJ5IHRoZSByZWFkIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZC4KLSAgICAgICAgICAg IEJ1dCB0aGlzIGRvZXMgdGhlIHdyb25nIHRoaW5nIHdoZW4gT19OREVMQVkgY2F1c2VzCisg ICAgICAgICAgICBCdXQgdGhpcyBkb2VzIHRoZSB3cm9uZyB0aGluZyB3aGVuIE9fTk9OQkxP Q0sgY2F1c2VzCiAgICAgICAgICAgICBhbiBFQUdBSU4gZXJyb3IuICBEb2VzIGFueWJvZHkg a25vdyBvZiBhIHNpdHVhdGlvbgogICAgICAgICAgICAgd2hlcmUgYSByZXRyeSBpcyBhY3R1 YWxseSBuZWVkZWQ/ICAqLwogI2lmIDAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvcHJvY2Vz cy5jJwotLS0gc3JjL3Byb2Nlc3MuYwkyMDEyLTExLTE0IDA0OjU1OjQxICswMDAwCisrKyBz cmMvcHJvY2Vzcy5jCTIwMTItMTEtMTUgMDY6MTk6NDYgKzAwMDAKQEAgLTIwOCwxMSArMjA4 LDkgQEAKICNpZm5kZWYgTk9OX0JMT0NLSU5HX0NPTk5FQ1QKICNpZmRlZiBIQVZFX1NFTEVD VAogI2lmIGRlZmluZWQgKEhBVkVfR0VUUEVFUk5BTUUpIHx8IGRlZmluZWQgKEdOVV9MSU5V WCkKLSNpZiBPX05PTkJMT0NLIHx8IE9fTkRFTEFZCiAjaWYgZGVmaW5lZCAoRVdPVUxEQkxP Q0spIHx8IGRlZmluZWQgKEVJTlBST0dSRVNTKQogI2RlZmluZSBOT05fQkxPQ0tJTkdfQ09O TkVDVAogI2VuZGlmIC8qIEVXT1VMREJMT0NLIHx8IEVJTlBST0dSRVNTICovCi0jZW5kaWYg LyogT19OT05CTE9DSyB8fCBPX05ERUxBWSAqLwogI2VuZGlmIC8qIEhBVkVfR0VUUEVFUk5B TUUgfHwgR05VX0xJTlVYICovCiAjZW5kaWYgLyogSEFWRV9TRUxFQ1QgKi8KICNlbmRpZiAv KiBOT05fQkxPQ0tJTkdfQ09OTkVDVCAqLwpAQCAtNjU0LDEzICs2NTIsNyBAQAogI2lmZGVm IFBUWV9PUEVOCiAJUFRZX09QRU47CiAjZWxzZSAvKiBubyBQVFlfT1BFTiAqLwotCXsKLSMg IGlmIE9fTk9OQkxPQ0sKLQkgIGZkID0gZW1hY3Nfb3BlbiAocHR5X25hbWUsIE9fUkRXUiB8 IE9fTk9OQkxPQ0ssIDApOwotIyAgZWxzZQotCSAgZmQgPSBlbWFjc19vcGVuIChwdHlfbmFt ZSwgT19SRFdSIHwgT19OREVMQVksIDApOwotIyAgZW5kaWYKLQl9CisJZmQgPSBlbWFjc19v cGVuIChwdHlfbmFtZSwgT19SRFdSIHwgT19OT05CTE9DSywgMCk7CiAjZW5kaWYgLyogbm8g UFRZX09QRU4gKi8KIAogCWlmIChmZCA+PSAwKQpAQCAtMTU5OCw3ICsxNTkwLDcgQEAKICAg aW50IGluY2hhbm5lbCwgb3V0Y2hhbm5lbDsKICAgcGlkX3QgcGlkOwogICBpbnQgc3ZbMl07 Ci0jaWYgIWRlZmluZWQgKFdJTkRPV1NOVCkgJiYgZGVmaW5lZCAoRkRfQ0xPRVhFQykKKyNp Zm5kZWYgV0lORE9XU05UCiAgIGludCB3YWl0X2NoaWxkX3NldHVwWzJdOwogI2VuZGlmCiAj aWZkZWYgU0lHQ0hMRApAQCAtMTYyNCwxMyArMTYxNiw5IEBACiAjaWYgISBkZWZpbmVkIChV U0cpIHx8IGRlZmluZWQgKFVTR19TVUJUVFlfV09SS1MpCiAgICAgICAvKiBPbiBtb3N0IFVT RyBzeXN0ZW1zIGl0IGRvZXMgbm90IHdvcmsgdG8gb3BlbiB0aGUgcHR5J3MgdHR5IGhlcmUs CiAJIHRoZW4gY2xvc2UgaXQgYW5kIHJlb3BlbiBpdCBpbiB0aGUgY2hpbGQuICAqLwotI2lm IE9fTk9DVFRZCiAgICAgICAvKiBEb24ndCBsZXQgdGhpcyB0ZXJtaW5hbCBiZWNvbWUgb3Vy IGNvbnRyb2xsaW5nIHRlcm1pbmFsCiAJIChpbiBjYXNlIHdlIGRvbid0IGhhdmUgb25lKS4g ICovCiAgICAgICBmb3Jrb3V0ID0gZm9ya2luID0gZW1hY3Nfb3BlbiAocHR5X25hbWUsIE9f UkRXUiB8IE9fTk9DVFRZLCAwKTsKLSNlbHNlCi0gICAgICBmb3Jrb3V0ID0gZm9ya2luID0g ZW1hY3Nfb3BlbiAocHR5X25hbWUsIE9fUkRXUiwgMCk7Ci0jZW5kaWYKICAgICAgIGlmIChm b3JraW4gPCAwKQogCXJlcG9ydF9maWxlX2Vycm9yICgiT3BlbmluZyBwdHkiLCBRbmlsKTsK ICNlbHNlCkBAIC0xNjU5LDcgKzE2NDcsNyBAQAogICAgICAgZm9ya2luID0gc3ZbMF07CiAg ICAgfQogCi0jaWYgIWRlZmluZWQgKFdJTkRPV1NOVCkgJiYgZGVmaW5lZCAoRkRfQ0xPRVhF QykKKyNpZm5kZWYgV0lORE9XU05UCiAgICAgewogICAgICAgaW50IHRlbTsKIApAQCAtMTY3 OCwxNSArMTY2Niw4IEBACiAgICAgfQogI2VuZGlmCiAKLSNpZiBPX05PTkJMT0NLCiAgIGZj bnRsIChpbmNoYW5uZWwsIEZfU0VURkwsIE9fTk9OQkxPQ0spOwogICBmY250bCAob3V0Y2hh bm5lbCwgRl9TRVRGTCwgT19OT05CTE9DSyk7Ci0jZWxzZQotI2lmIE9fTkRFTEFZCi0gIGZj bnRsIChpbmNoYW5uZWwsIEZfU0VURkwsIE9fTkRFTEFZKTsKLSAgZmNudGwgKG91dGNoYW5u ZWwsIEZfU0VURkwsIE9fTkRFTEFZKTsKLSNlbmRpZgotI2VuZGlmCiAKICAgLyogUmVjb3Jk IHRoaXMgYXMgYW4gYWN0aXZlIHByb2Nlc3MsIHdpdGggaXRzIGNoYW5uZWxzLgogICAgICBB cyBhIHJlc3VsdCwgY2hpbGRfc2V0dXAgd2lsbCBjbG9zZSBFbWFjcydzIHNpZGUgb2YgdGhl IHBpcGVzLiAgKi8KQEAgLTE4NDUsOSArMTgyNiw3IEBACiAgICAgICBwaWQgPSBjaGlsZF9z ZXR1cCAoeGZvcmtpbiwgeGZvcmtvdXQsIHhmb3Jrb3V0LAogCQkJIG5ld19hcmd2LCAxLCBl bmNvZGVkX2N1cnJlbnRfZGlyKTsKICNlbHNlICAvKiBub3QgV0lORE9XU05UICovCi0jaWZk ZWYgRkRfQ0xPRVhFQwogICAgICAgZW1hY3NfY2xvc2UgKHdhaXRfY2hpbGRfc2V0dXBbMF0p OwotI2VuZGlmCiAgICAgICBjaGlsZF9zZXR1cCAoeGZvcmtpbiwgeGZvcmtvdXQsIHhmb3Jr b3V0LAogCQkgICBuZXdfYXJndiwgMSwgZW5jb2RlZF9jdXJyZW50X2Rpcik7CiAjZW5kaWYg Lyogbm90IFdJTkRPV1NOVCAqLwpAQCAtMTkwNiw3ICsxODg1LDcgQEAKIAogICAgICAgcHNl dF90dHlfbmFtZSAoWFBST0NFU1MgKHByb2Nlc3MpLCBsaXNwX3B0eV9uYW1lKTsKIAotI2lm ICFkZWZpbmVkIChXSU5ET1dTTlQpICYmIGRlZmluZWQgKEZEX0NMT0VYRUMpCisjaWZuZGVm IFdJTkRPV1NOVAogICAgICAgLyogV2FpdCBmb3IgY2hpbGRfc2V0dXAgdG8gY29tcGxldGUg aW4gY2FzZSB0aGF0IHZmb3JrIGlzCiAJIGFjdHVhbGx5IGRlZmluZWQgYXMgZm9yay4gIFRo ZSBkZXNjcmlwdG9yIHdhaXRfY2hpbGRfc2V0dXBbMV0KIAkgb2YgYSBwaXBlIGlzIGNsb3Nl ZCBhdCB0aGUgY2hpbGQgc2lkZSBlaXRoZXIgYnkgY2xvc2Utb24tZXhlYwpAQCAtMTk0Mywx MyArMTkyMiw5IEBACiAjaWYgISBkZWZpbmVkIChVU0cpIHx8IGRlZmluZWQgKFVTR19TVUJU VFlfV09SS1MpCiAgICAgICAvKiBPbiBtb3N0IFVTRyBzeXN0ZW1zIGl0IGRvZXMgbm90IHdv cmsgdG8gb3BlbiB0aGUgcHR5J3MgdHR5IGhlcmUsCiAJIHRoZW4gY2xvc2UgaXQgYW5kIHJl b3BlbiBpdCBpbiB0aGUgY2hpbGQuICAqLwotI2lmIE9fTk9DVFRZCiAgICAgICAvKiBEb24n dCBsZXQgdGhpcyB0ZXJtaW5hbCBiZWNvbWUgb3VyIGNvbnRyb2xsaW5nIHRlcm1pbmFsCiAJ IChpbiBjYXNlIHdlIGRvbid0IGhhdmUgb25lKS4gICovCiAgICAgICBpbnQgZm9ya291dCA9 IGVtYWNzX29wZW4gKHB0eV9uYW1lLCBPX1JEV1IgfCBPX05PQ1RUWSwgMCk7Ci0jZWxzZQot ICAgICAgaW50IGZvcmtvdXQgPSBlbWFjc19vcGVuIChwdHlfbmFtZSwgT19SRFdSLCAwKTsK LSNlbmRpZgogICAgICAgaWYgKGZvcmtvdXQgPCAwKQogCXJlcG9ydF9maWxlX2Vycm9yICgi T3BlbmluZyBwdHkiLCBRbmlsKTsKICNpZiBkZWZpbmVkIChET05UX1JFT1BFTl9QVFkpCkBA IC0xOTYzLDE1ICsxOTM4LDggQEAKICAgICB9CiAjZW5kaWYgLyogSEFWRV9QVFlTICovCiAK LSNpZiBPX05PTkJMT0NLCiAgIGZjbnRsIChpbmNoYW5uZWwsIEZfU0VURkwsIE9fTk9OQkxP Q0spOwogICBmY250bCAob3V0Y2hhbm5lbCwgRl9TRVRGTCwgT19OT05CTE9DSyk7Ci0jZWxz ZQotI2lmIE9fTkRFTEFZCi0gIGZjbnRsIChpbmNoYW5uZWwsIEZfU0VURkwsIE9fTkRFTEFZ KTsKLSAgZmNudGwgKG91dGNoYW5uZWwsIEZfU0VURkwsIE9fTkRFTEFZKTsKLSNlbmRpZgot I2VuZGlmCiAKICAgLyogUmVjb3JkIHRoaXMgYXMgYW4gYWN0aXZlIHByb2Nlc3MsIHdpdGgg aXRzIGNoYW5uZWxzLgogICAgICBBcyBhIHJlc3VsdCwgY2hpbGRfc2V0dXAgd2lsbCBjbG9z ZSBFbWFjcydzIHNpZGUgb2YgdGhlIHBpcGVzLiAgKi8KQEAgLTI5MjcsMTMgKzI4OTUsOSBA QAogICAgIHsKICAgICAgIC8qIERvbid0IHN1cHBvcnQgbmV0d29yayBzb2NrZXRzIHdoZW4g bm9uLWJsb2NraW5nIG1vZGUgaXMKIAkgbm90IGF2YWlsYWJsZSwgc2luY2UgYSBibG9ja2Vk IEVtYWNzIGlzIG5vdCB1c2VmdWwuICAqLwotI2lmICFPX05PTkJMT0NLICYmICFPX05ERUxB WQotICAgICAgZXJyb3IgKCJOZXR3b3JrIHNlcnZlcnMgbm90IHN1cHBvcnRlZCIpOwotI2Vs c2UKICAgICAgIGlzX3NlcnZlciA9IDE7CiAgICAgICBpZiAoVFlQRV9SQU5HRURfSU5URUdF UlAgKGludCwgdGVtKSkKIAliYWNrbG9nID0gWElOVCAodGVtKTsKLSNlbmRpZgogICAgIH0K IAogICAvKiBNYWtlIFFDYWRkcmVzcyBhbiBhbGlhcyBmb3IgOmxvY2FsIChzZXJ2ZXIpIG9y IDpyZW1vdGUgKGNsaWVudCkuICAqLwpAQCAtMzE5MywxMSArMzE1Nyw3IEBACiAjaWZkZWYg Tk9OX0JMT0NLSU5HX0NPTk5FQ1QKICAgICAgIGlmIChpc19ub25fYmxvY2tpbmdfY2xpZW50 KQogCXsKLSNpZiBPX05PTkJMT0NLCiAJICByZXQgPSBmY250bCAocywgRl9TRVRGTCwgT19O T05CTE9DSyk7Ci0jZWxzZQotCSAgcmV0ID0gZmNudGwgKHMsIEZfU0VURkwsIE9fTkRFTEFZ KTsKLSNlbmRpZgogCSAgaWYgKHJldCA8IDApCiAJICAgIHsKIAkgICAgICB4ZXJybm8gPSBl cnJubzsKQEAgLTM0MTAsMTMgKzMzNzAsNyBAQAogCiAgIGNoYW5fcHJvY2Vzc1tpbmNoXSA9 IHByb2M7CiAKLSNpZiBPX05PTkJMT0NLCiAgIGZjbnRsIChpbmNoLCBGX1NFVEZMLCBPX05P TkJMT0NLKTsKLSNlbHNlCi0jaWYgT19OREVMQVkKLSAgZmNudGwgKGluY2gsIEZfU0VURkws IE9fTkRFTEFZKTsKLSNlbmRpZgotI2VuZGlmCiAKICAgcCA9IFhQUk9DRVNTIChwcm9jKTsK IApAQCAtNDE0NSwxMyArNDA5OSw3IEBACiAKICAgY2hhbl9wcm9jZXNzW3NdID0gcHJvYzsK IAotI2lmIE9fTk9OQkxPQ0sKICAgZmNudGwgKHMsIEZfU0VURkwsIE9fTk9OQkxPQ0spOwot I2Vsc2UKLSNpZiBPX05ERUxBWQotICBmY250bCAocywgRl9TRVRGTCwgT19OREVMQVkpOwot I2VuZGlmCi0jZW5kaWYKIAogICBwID0gWFBST0NFU1MgKHByb2MpOwogCkBAIC00ODQ3LDIz ICs0Nzk1LDE2IEBACiAJICAgICAgZWxzZSBpZiAobnJlYWQgPT0gLTEgJiYgZXJybm8gPT0g RVdPVUxEQkxPQ0spCiAJCTsKICNlbmRpZgotCSAgICAgIC8qIElTQyA0LjEgZGVmaW5lcyBi b3RoIEVXT1VMREJMT0NLIGFuZCBPX05PTkJMT0NLLAotCQkgYW5kIEVtYWNzIHVzZXMgT19O T05CTE9DSywgc28gd2hhdCB3ZSBnZXQgaXMgRUFHQUlOLiAgKi8KLSNpZiBPX05PTkJMT0NL Ci0JICAgICAgZWxzZSBpZiAobnJlYWQgPT0gLTEgJiYgZXJybm8gPT0gRUFHQUlOKQotCQk7 Ci0jZWxzZQotI2lmIE9fTkRFTEFZCi0JICAgICAgZWxzZSBpZiAobnJlYWQgPT0gLTEgJiYg ZXJybm8gPT0gRUFHQUlOKQotCQk7CisJICAgICAgZWxzZSBpZiAobnJlYWQgPT0gLTEgJiYg ZXJybm8gPT0gRUFHQUlOKQorCQk7CisjaWZkZWYgRE9TX05UCiAJICAgICAgLyogTm90ZSB0 aGF0IHdlIGNhbm5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIG5vIGlucHV0CiAJCSBhdmFpbGFi bGUgbm93IGFuZCBhIGNsb3NlZCBwaXBlLgogCQkgV2l0aCBsdWNrLCBhIGNsb3NlZCBwaXBl IHdpbGwgYmUgYWNjb21wYW5pZWQgYnkKIAkJIHN1YnByb2Nlc3MgdGVybWluYXRpb24gYW5k IFNJR0NITEQuICAqLwogCSAgICAgIGVsc2UgaWYgKG5yZWFkID09IDAgJiYgIU5FVENPTk5f UCAocHJvYykgJiYgIVNFUklBTENPTk5fUCAocHJvYykpCiAJCTsKLSNlbmRpZiAvKiBPX05E RUxBWSAqLwotI2VuZGlmIC8qIE9fTk9OQkxPQ0sgKi8KKyNlbmRpZgogI2lmZGVmIEhBVkVf UFRZUwogCSAgICAgIC8qIE9uIHNvbWUgT1NzIHdpdGggcHR5cywgd2hlbiB0aGUgcHJvY2Vz cyBvbiBvbmUgZW5kIG9mCiAJCSBhIHB0eSBleGl0cywgdGhlIG90aGVyIGVuZCBnZXRzIGFu IGVycm9yIHJlYWRpbmcgd2l0aApAQCAtNzM0OCw5ICs3Mjg5LDcgQEAKICNpZmRlZiBIQVZF X0dFVFNPQ0tOQU1FCiAgICBBRERfU1VCRkVBVFVSRSAoUUNzZXJ2aWNlLCBRdCk7CiAjZW5k aWYKLSNpZiBPX05PTkJMT0NLIHx8IE9fTkRFTEFZCiAgICBBRERfU1VCRkVBVFVSRSAoUUNz ZXJ2ZXIsIFF0KTsKLSNlbmRpZgogCiAgICBmb3IgKHNvcHQgPSBzb2NrZXRfb3B0aW9uczsg c29wdC0+bmFtZTsgc29wdCsrKQogICAgICBzdWJmZWF0dXJlcyA9IHB1cmVfY29ucyAoaW50 ZXJuX2Nfc3RyaW5nIChzb3B0LT5uYW1lKSwgc3ViZmVhdHVyZXMpOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9zeXNkZXAuYycKLS0tIHNyYy9zeXNkZXAuYwkyMDEyLTExLTE0IDA0OjU1 OjQxICswMDAwCisrKyBzcmMvc3lzZGVwLmMJMjAxMi0xMS0xNCAwNzoyNjoyNSArMDAwMApA QCAtMTAzOSw4ICsxMDM5LDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZmRlZiBGX1NFVEZM Ci0jaWZkZWYgRl9HRVRPV04JCS8qIEZfU0VURkwgZG9lcyBub3QgaW1wbHkgZXhpc3RlbmNl IG9mIEZfR0VUT1dOICovCisjaWZkZWYgRl9HRVRPV04KICAgaWYgKGludGVycnVwdF9pbnB1 dCkKICAgICB7CiAgICAgICBvbGRfZmNudGxfb3duZXJbZmlsZW5vICh0dHlfb3V0LT5pbnB1 dCldID0KQEAgLTEwNTgsNyArMTA1Nyw2IEBACiAjZW5kaWYgLyogSEFWRV9HUE0gKi8KICAg ICB9CiAjZW5kaWYgLyogRl9HRVRPV04gKi8KLSNlbmRpZiAvKiBGX1NFVEZMICovCiAKICNp ZmRlZiBfSU9GQkYKICAgLyogVGhpcyBzeW1ib2wgaXMgZGVmaW5lZCBvbiByZWNlbnQgVVNH IHN5c3RlbXMuCkBAIC0xMjc4LDggKzEyNzYsNyBAQAogICBmc3luYyAoZmlsZW5vICh0dHlf b3V0LT5vdXRwdXQpKTsKICNlbmRpZgogCi0jaWZkZWYgRl9TRVRGTAotI2lmZGVmIEZfU0VU T1dOCQkvKiBGX1NFVEZMIGRvZXMgbm90IGltcGx5IGV4aXN0ZW5jZSBvZiBGX1NFVE9XTiAq LworI2lmZGVmIEZfU0VUT1dOCiAgIGlmIChpbnRlcnJ1cHRfaW5wdXQpCiAgICAgewogICAg ICAgcmVzZXRfc2lnaW8gKGZpbGVubyAodHR5X291dC0+aW5wdXQpKTsKQEAgLTEyODcsMTEg KzEyODQsOCBAQAogICAgICAgICAgICAgIG9sZF9mY250bF9vd25lcltmaWxlbm8gKHR0eV9v dXQtPmlucHV0KV0pOwogICAgIH0KICNlbmRpZiAvKiBGX1NFVE9XTiAqLwotI2lmIE9fTkRF TEFZCiAgIGZjbnRsIChmaWxlbm8gKHR0eV9vdXQtPmlucHV0KSwgRl9TRVRGTCwKLSAgICAg ICAgIGZjbnRsIChmaWxlbm8gKHR0eV9vdXQtPmlucHV0KSwgRl9HRVRGTCwgMCkgJiB+T19O REVMQVkpOwotI2VuZGlmCi0jZW5kaWYgLyogRl9TRVRGTCAqLworICAgICAgICAgZmNudGwg KGZpbGVubyAodHR5X291dC0+aW5wdXQpLCBGX0dFVEZMLCAwKSAmIH5PX05PTkJMT0NLKTsK IAogICBpZiAodHR5X291dC0+b2xkX3R0eSkKICAgICB3aGlsZSAoZW1hY3Nfc2V0X3R0eSAo ZmlsZW5vICh0dHlfb3V0LT5pbnB1dCksCkBAIC0yMzgwLDE5ICsyMzc0LDcgQEAKIGludAog c2VyaWFsX29wZW4gKGNoYXIgKnBvcnQpCiB7Ci0gIGludCBmZCA9IC0xOwotCi0gIGZkID0g ZW1hY3Nfb3BlbiAoKGNoYXIqKSBwb3J0LAotCQkgICBPX1JEV1IKLSNpZiBPX05PTkJMT0NL Ci0JCSAgIHwgT19OT05CTE9DSwotI2Vsc2UKLQkJICAgfCBPX05ERUxBWQotI2VuZGlmCi0j aWYgT19OT0NUVFkKLQkJICAgfCBPX05PQ1RUWQotI2VuZGlmCi0JCSAgICwgMCk7CisgIGlu dCBmZCA9IGVtYWNzX29wZW4gKHBvcnQsIE9fUkRXUiB8IE9fTk9DVFRZIHwgT19OT05CTE9D SywgMCk7CiAgIGlmIChmZCA8IDApCiAgICAgewogICAgICAgZXJyb3IgKCJDb3VsZCBub3Qg b3BlbiAlczogJXMiLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy90ZXJtLmMnCi0tLSBzcmMv dGVybS5jCTIwMTItMTEtMTQgMDQ6NTU6NDEgKzAwMDAKKysrIHNyYy90ZXJtLmMJMjAxMi0x MS0xNCAwNzoyNjoyNSArMDAwMApAQCAtNTUsMTQgKzU1LDYgQEAKICNpbmNsdWRlICJ4dGVy bS5oIgogI2VuZGlmCiAKLSNpZm5kZWYgT19SRFdSCi0jZGVmaW5lIE9fUkRXUiAyCi0jZW5k aWYKLQotI2lmbmRlZiBPX05PQ1RUWQotI2RlZmluZSBPX05PQ1RUWSAwCi0jZW5kaWYKLQog LyogVGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgY29uc29sZSBkZXZpY2UuICAqLwogI2lmZGVm IFdJTkRPV1NOVAogI2RlZmluZSBERVZfVFRZICAiQ09OT1VUJCIKQEAgLTI5ODksMjIgKzI5 ODEsMTggQEAKICAgc2V0X3R0eV9ob29rcyAodGVybWluYWwpOwogCiAgIHsKLSAgICBpbnQg ZmQ7CisgICAgLyogT3BlbiB0aGUgdGVybWluYWwgZGV2aWNlLiAgKi8KICAgICBGSUxFICpm aWxlOwogCi0jaWYgT19JR05PUkVfQ1RUWQotICAgIGlmICghY3R0eSkKLSAgICAgIC8qIE9w ZW4gdGhlIHRlcm1pbmFsIGRldmljZS4gIERvbid0IHJlY29nbml6ZSBpdCBhcyBvdXIKLSAg ICAgICAgIGNvbnRyb2xsaW5nIHRlcm1pbmFsLCBhbmQgZG9uJ3QgbWFrZSBpdCB0aGUgY29u dHJvbGxpbmcgdHR5Ci0gICAgICAgICBpZiB3ZSBkb24ndCBoYXZlIG9uZSBhdCB0aGUgbW9t ZW50LiAgKi8KLSAgICAgIGZkID0gZW1hY3Nfb3BlbiAobmFtZSwgT19SRFdSIHwgT19JR05P UkVfQ1RUWSB8IE9fTk9DVFRZLCAwKTsKLSAgICBlbHNlCi0jZW5kaWYgLyogT19JR05PUkVf Q1RUWSAqLwotICAgICAgLyogQWxhcywgT19JR05PUkVfQ1RUWSBpcyBhIEdOVSBleHRlbnNp b24gdGhhdCBzZWVtcyB0byBiZSBvbmx5Ci0gICAgICAgICBkZWZpbmVkIG9uIEh1cmQuICBP biBvdGhlciBzeXN0ZW1zLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkKLSAgICAgICAgIGRpc3Nv Y2lhdGUgb3Vyc2VsdmVzIGZyb20gdGhlIGNvbnRyb2xsaW5nIHR0eSB3aGVuIHdlIHdhbnQg dG8KLSAgICAgICAgIG9wZW4gYSBmcmFtZSBvbiB0aGUgc2FtZSB0ZXJtaW5hbC4gICovCi0g ICAgICBmZCA9IGVtYWNzX29wZW4gKG5hbWUsIE9fUkRXUiB8IE9fTk9DVFRZLCAwKTsKKyAg ICAvKiBJZiAhY3R0eSwgZG9uJ3QgcmVjb2duaXplIGl0IGFzIG91ciBjb250cm9sbGluZyB0 ZXJtaW5hbCwgYW5kCisgICAgICAgZG9uJ3QgbWFrZSBpdCB0aGUgY29udHJvbGxpbmcgdHR5 IGlmIHdlIGRvbid0IGhhdmUgb25lIG5vdy4KKworICAgICAgIEFsYXMsIE9fSUdOT1JFX0NU VFkgaXMgYSBHTlUgZXh0ZW5zaW9uIHRoYXQgc2VlbXMgdG8gYmUgb25seQorICAgICAgIGRl ZmluZWQgb24gSHVyZC4gIE9uIG90aGVyIHN5c3RlbXMsIHdlIG5lZWQgdG8gZXhwbGljaXRs eQorICAgICAgIGRpc3NvY2lhdGUgb3Vyc2VsdmVzIGZyb20gdGhlIGNvbnRyb2xsaW5nIHR0 eSB3aGVuIHdlIHdhbnQgdG8KKyAgICAgICBvcGVuIGEgZnJhbWUgb24gdGhlIHNhbWUgdGVy bWluYWwuICAqLworICAgIGludCBmbGFncyA9IE9fUkRXUiB8IE9fTk9DVFRZIHwgKGN0dHkg PyAwIDogT19JR05PUkVfQ1RUWSk7CisgICAgaW50IGZkID0gZW1hY3Nfb3BlbiAobmFtZSwg ZmxhZ3MsIDApOwogCiAgICAgdHR5LT5uYW1lID0geHN0cmR1cCAobmFtZSk7CiAgICAgdGVy bWluYWwtPm5hbWUgPSB4c3RyZHVwIChuYW1lKTsKQEAgLTMwMjMsMTAgKzMwMTEsOCBAQAog ICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICB9CiAKLSNpZiAhT19JR05PUkVf Q1RUWQotICAgIGlmICghY3R0eSkKKyAgICBpZiAoIU9fSUdOT1JFX0NUVFkgJiYgIWN0dHkp CiAgICAgICBkaXNzb2NpYXRlX2lmX2NvbnRyb2xsaW5nX3R0eSAoZmQpOwotI2VuZGlmCiAK ICAgICBmaWxlID0gZmRvcGVuIChmZCwgIncrIik7CiAgICAgdHR5LT5pbnB1dCA9IGZpbGU7 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3czMi5jJwotLS0gc3JjL3czMi5jCTIwMTItMTEt MTQgMTc6MjI6NTUgKzAwMDAKKysrIHNyYy93MzIuYwkyMDEyLTExLTE1IDA1OjQxOjA5ICsw MDAwCkBAIC01ODUzLDcgKzU4NTMsNyBAQAogICBjaGVja19lcnJubyAoKTsKICAgaWYgKGZk X2luZm9bc10uZmxhZ3MgJiBGSUxFX1NPQ0tFVCkKICAgICB7Ci0gICAgICBpZiAoY21kID09 IEZfU0VURkwgJiYgb3B0aW9ucyA9PSBPX05ERUxBWSkKKyAgICAgIGlmIChjbWQgPT0gRl9T RVRGTCAmJiBvcHRpb25zID09IE9fTk9OQkxPQ0spCiAJewogCSAgdW5zaWduZWQgbG9uZyBu YmxvY2sgPSAxOwogCSAgaW50IHJjID0gcGZuX2lvY3Rsc29ja2V0IChTT0NLX0hBTkRMRSAo cyksIEZJT05CSU8sICZuYmxvY2spOwoK --------------080405040800060107020407--