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: Tue, 13 Nov 2012 23:37:58 -0800 Organization: UCLA Computer Science Department Message-ID: <50A34A56.9080007@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020902010408030801040708" X-Trace: ger.gmane.org 1352878718 19158 80.91.229.3 (14 Nov 2012 07:38:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 14 Nov 2012 07:38:38 +0000 (UTC) To: 12881@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Nov 14 08:38:48 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 1TYXYd-0002V1-H9 for geb-bug-gnu-emacs@m.gmane.org; Wed, 14 Nov 2012 08:38:47 +0100 Original-Received: from localhost ([::1]:59119 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYXYT-0000z5-HJ for geb-bug-gnu-emacs@m.gmane.org; Wed, 14 Nov 2012 02:38:37 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:49454) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYXYO-0000ys-FK for bug-gnu-emacs@gnu.org; Wed, 14 Nov 2012 02:38:35 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TYXYL-0001q5-C7 for bug-gnu-emacs@gnu.org; Wed, 14 Nov 2012 02:38:32 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:58485) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYXYL-0001pz-8F for bug-gnu-emacs@gnu.org; Wed, 14 Nov 2012 02:38:29 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TYXYs-0000mV-Vb for bug-gnu-emacs@gnu.org; Wed, 14 Nov 2012 02:39: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: Wed, 14 Nov 2012 07:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 12881 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13528787342982 (code B ref -1); Wed, 14 Nov 2012 07:39:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 14 Nov 2012 07:38:54 +0000 Original-Received: from localhost ([127.0.0.1]:40503 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TYXYi-0000m1-KV for submit@debbugs.gnu.org; Wed, 14 Nov 2012 02:38:54 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:50393) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TYXYa-0000lo-Tx for submit@debbugs.gnu.org; Wed, 14 Nov 2012 02:38:50 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TYXXz-0001oI-R8 for submit@debbugs.gnu.org; Wed, 14 Nov 2012 02:38:10 -0500 Original-Received: from lists.gnu.org ([208.118.235.17]:40455) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYXXz-0001oE-NW for submit@debbugs.gnu.org; Wed, 14 Nov 2012 02:38:07 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:49395) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYXXw-0000xC-KR for bug-gnu-emacs@gnu.org; Wed, 14 Nov 2012 02:38:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TYXXt-0001nQ-I1 for bug-gnu-emacs@gnu.org; Wed, 14 Nov 2012 02:38:04 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:38225) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TYXXt-0001nH-4D; Wed, 14 Nov 2012 02:38:01 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id C847EA60007; Tue, 13 Nov 2012 23:37:58 -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 YqAp8GKx1ZPy; Tue, 13 Nov 2012 23:37:57 -0800 (PST) Original-Received: from [192.168.1.3] (pool-108-23-119-2.lsanca.fios.verizon.net [108.23.119.2]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 26293A60002; Tue, 13 Nov 2012 23:37:57 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux i686; rv:16.0) Gecko/20121028 Thunderbird/16.0.2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -6.2 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-Spam-Score: -6.2 (------) 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:66909 Archived-At: This is a multi-part message in MIME format. --------------020902010408030801040708 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch On POSIXish hosts it's long been safe to assume at least POSIX.1-1988, as the pre-POSIX platforms died out long ago. Attached is a patch to simplify Emacs to assume this for . I haven't tested this on Windows but have tried to make the Windows port work by renaming its O_NDELAY flag to O_NONBLOCK, as POSIX standardized the spelling of this flag to be O_NONBLOCK. I'll CC: this patch to Eli to give him a heads-up. This patch is relative to trunk bzr 110892. --------------020902010408030801040708 Content-Type: text/plain; charset=UTF-8; name="fcntl.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fcntl.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTExLTE0 IDA0OjU1OjQxICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMS0xNCAwNzoyNjoyNSArMDAw MApAQCAtMSw1ICsxLDggQEAKIDIwMTItMTEtMTQgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgogCisJQXNzdW1lIFBPU0lYIDEwMDMuMS0xOTg4IG9yIGxhdGVyIGZvciBm Y250bC5oLgorCSogbGliL2dudWxpYi5tazogUmVnZW5lcmF0ZS4KKwogCVVzZSBmYWNjZXNz YXQsIG5vdCBhY2Nlc3MsIHdoZW4gY2hlY2tpbmcgZmlsZSBwZXJtaXNzaW9ucyAoQnVnIzEy NjMyKS4KIAkqIC5ienJpZ25vcmU6IEFkZCBsaWIvZmNudGwuaC4KIAkqIGNvbmZpZ3VyZS5h YyAoZXVpZGFjY2Vzcyk6IFJlbW92ZSBjaGVjazsgZ251bGliIGRvZXMgdGhpcyBmb3IgdXMg bm93LgoKPT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NQUC1ERUZJTkVTJwotLS0gYWRtaW4v Q1BQLURFRklORVMJMjAxMi0xMS0wNSAwMzoxODozMiArMDAwMAorKysgYWRtaW4vQ1BQLURF RklORVMJMjAxMi0xMS0xNCAwNzoyNjoyNSArMDAwMApAQCAtNDIwLDggKzQyMCw2IEBACiBO U0lHX01JTklNVU0KIE5VTExfREVWSUNFCiBPUkRJTkFSWV9MSU5LCi1PX1JET05MWQotT19S RFdSCiBQQUdFU0laRQogUFJFRkVSX1ZTVVNQCiBQVFlfSVRFUkFUSU9OCgo9PT0gbW9kaWZp ZWQgZmlsZSAnYWRtaW4vQ2hhbmdlTG9nJwotLS0gYWRtaW4vQ2hhbmdlTG9nCTIwMTItMTEt MTQgMDQ6NTU6NDEgKzAwMDAKKysrIGFkbWluL0NoYW5nZUxvZwkyMDEyLTExLTE0IDA3OjI2 OjI1ICswMDAwCkBAIC0xLDUgKzEsOSBAQAogMjAxMi0xMS0xNCAgUGF1bCBFZ2dlcnQgIDxl Z2dlcnRAY3MudWNsYS5lZHU+CiAKKwlBc3N1bWUgUE9TSVggMTAwMy4xLTE5ODggb3IgbGF0 ZXIgZm9yIGZjbnRsLmguCisJKiBDUFAtREVGSU5FUyAoT19SRE9OTFksIE9fUkRXUik6IFJl bW92ZS4KKwkqIG1lcmdlLWdudWxpYiAoR05VTElCX01PRFVMRVMpOiBBZGQgZmNudGwtaC4K KwogCVVzZSBmYWNjZXNzYXQsIG5vdCBhY2Nlc3MsIHdoZW4gY2hlY2tpbmcgZmlsZSBwZXJt aXNzaW9ucyAoQnVnIzEyNjMyKS4KIAkqIG1lcmdlLWdudWxpYiAoR05VTElCX01PRFVMRVMp OiBBZGQgZmFjY2Vzc2F0LgogCShHTlVMSUJfVE9PTF9GTEFHUyk6IEF2b2lkIGF0LWludGVy bmFsLCBmY2hkaXIsIG1hbGxvYy1wb3NpeCwKCj09PSBtb2RpZmllZCBmaWxlICdhZG1pbi9t ZXJnZS1nbnVsaWInCi0tLSBhZG1pbi9tZXJnZS1nbnVsaWIJMjAxMi0xMS0xNCAwNDo1NTo0 MSArMDAwMAorKysgYWRtaW4vbWVyZ2UtZ251bGliCTIwMTItMTEtMTQgMDc6MjY6MjUgKzAw MDAKQEAgLTI5LDcgKzI5LDcgQEAKICAgYWxsb2NhLW9wdCBjLWN0eXBlIGMtc3RyY2FzZQog ICBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUgY3J5cHRvL3NoYTEgY3J5 cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyCiAgIGR0b2FzdHIgZHRvdGltZXNwZWMgZHVwMiBl bnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdAotICBmaWxlbW9kZSBnZXRsb2FkYXZnIGdldG9w dC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkKKyAgZmNudGwtaCBmaWxlbW9kZSBnZXRsb2Fk YXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkKICAgaWdub3JlLXZhbHVlIGlu dHByb3BzIGxhcmdlZmlsZSBsc3RhdAogICBtYW55d2FybmluZ3MgbWt0aW1lIHBzZWxlY3Qg cHRocmVhZF9zaWdtYXNrIHJlYWRsaW5rCiAgIHNvY2tsZW4gc3RhdC10aW1lIHN0ZGFsaWdu IHN0ZGFyZyBzdGRib29sIHN0ZGlvCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGliL2dudWxpYi5t aycKLS0tIGxpYi9nbnVsaWIubWsJMjAxMi0xMS0xNCAwNDo1NTo0MSArMDAwMAorKysgbGli L2dudWxpYi5tawkyMDEyLTExLTE0IDA3OjI2OjI1ICswMDAwCkBAIC0yMSw3ICsyMSw3IEBA CiAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHBy b2dyYW0uCiAjCiAjIEdlbmVyYXRlZCBieSBnbnVsaWItdG9vbC4KLSMgUmVwcm9kdWNlIGJ5 OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbGliPWxpYmdudSAtLXNvdXJjZS1i YXNlPWxpYiAtLW00LWJhc2U9bTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1iYXNlPXRlc3Rz IC0tYXV4LWRpcj1idWlsZC1hdXggLS1hdm9pZD1hdC1pbnRlcm5hbCAtLWF2b2lkPWVycm5v IC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZmNudGwgLS1hdm9pZD1mc3RhdCAtLWF2b2lkPW1h bGxvYy1wb3NpeCAtLWF2b2lkPW1zdmMtaW52YWwgLS1hdm9pZD1tc3ZjLW5vdGhyb3cgLS1h dm9pZD1vcGVuYXQtZGllIC0tYXZvaWQ9b3BlbmF0LWggLS1hdm9pZD1yYWlzZSAtLWF2b2lk PXNhdmUtY3dkIC0tYXZvaWQ9c2VsZWN0IC0tYXZvaWQ9c2lncHJvY21hc2sgLS1hdm9pZD1z eXNfdHlwZXMgLS1hdm9pZD10aHJlYWRsaWIgLS1tYWtlZmlsZS1uYW1lPWdudWxpYi5tayAt LWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRvb2wgLS1tYWNyby1wcmVmaXg9 Z2wgLS1uby12Yy1maWxlcyBhbGxvY2Etb3B0IGMtY3R5cGUgYy1zdHJjYXNlIGNhcmVhZGxp bmthdCBjbG9zZS1zdHJlYW0gY3J5cHRvL21kNSBjcnlwdG8vc2hhMSBjcnlwdG8vc2hhMjU2 IGNyeXB0by9zaGE1MTIgZHRvYXN0ciBkdG90aW1lc3BlYyBkdXAyIGVudmlyb24gZXhlY2lu Zm8gZmFjY2Vzc2F0IGZpbGVtb2RlIGdldGxvYWRhdmcgZ2V0b3B0LWdudSBnZXR0aW1lIGdl dHRpbWVvZmRheSBpZ25vcmUtdmFsdWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxzdGF0IG1hbnl3 YXJuaW5ncyBta3RpbWUgcHNlbGVjdCBwdGhyZWFkX3NpZ21hc2sgcmVhZGxpbmsgc29ja2xl biBzdGF0LXRpbWUgc3RkYWxpZ24gc3RkYXJnIHN0ZGJvb2wgc3RkaW8gc3RyZnRpbWUgc3Ry dG9pbWF4IHN0cnRvdW1heCBzeW1saW5rIHN5c19zdGF0IHN5c190aW1lIHRpbWUgdGltZXIt dGltZSB0aW1lc3BlYy1hZGQgdGltZXNwZWMtc3ViIHV0aW1lbnMgd2FybmluZ3MKKyMgUmVw cm9kdWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbGliPWxpYmdudSAt LXNvdXJjZS1iYXNlPWxpYiAtLW00LWJhc2U9bTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1i YXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1hdm9pZD1hdC1pbnRlcm5hbCAtLWF2 b2lkPWVycm5vIC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZmNudGwgLS1hdm9pZD1mc3RhdCAt LWF2b2lkPW1hbGxvYy1wb3NpeCAtLWF2b2lkPW1zdmMtaW52YWwgLS1hdm9pZD1tc3ZjLW5v dGhyb3cgLS1hdm9pZD1vcGVuYXQtZGllIC0tYXZvaWQ9b3BlbmF0LWggLS1hdm9pZD1yYWlz ZSAtLWF2b2lkPXNhdmUtY3dkIC0tYXZvaWQ9c2VsZWN0IC0tYXZvaWQ9c2lncHJvY21hc2sg LS1hdm9pZD1zeXNfdHlwZXMgLS1hdm9pZD10aHJlYWRsaWIgLS1tYWtlZmlsZS1uYW1lPWdu dWxpYi5tayAtLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRvb2wgLS1tYWNy by1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBhbGxvY2Etb3B0IGMtY3R5cGUgYy1zdHJjYXNl IGNhcmVhZGxpbmthdCBjbG9zZS1zdHJlYW0gY3J5cHRvL21kNSBjcnlwdG8vc2hhMSBjcnlw dG8vc2hhMjU2IGNyeXB0by9zaGE1MTIgZHRvYXN0ciBkdG90aW1lc3BlYyBkdXAyIGVudmly b24gZXhlY2luZm8gZmFjY2Vzc2F0IGZjbnRsLWggZmlsZW1vZGUgZ2V0bG9hZGF2ZyBnZXRv cHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5IGlnbm9yZS12YWx1ZSBpbnRwcm9wcyBsYXJn ZWZpbGUgbHN0YXQgbWFueXdhcm5pbmdzIG1rdGltZSBwc2VsZWN0IHB0aHJlYWRfc2lnbWFz ayByZWFkbGluayBzb2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcgc3RkYm9vbCBz dGRpbyBzdHJmdGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lzX3N0YXQgc3lz X3RpbWUgdGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1zdWIgdXRpbWVu cyB3YXJuaW5ncwogCiAKIE1PU1RMWUNMRUFORklMRVMgKz0gY29yZSAqLnN0YWNrZHVtcAoK PT09IG1vZGlmaWVkIGZpbGUgJ250L0NoYW5nZUxvZycKLS0tIG50L0NoYW5nZUxvZwkyMDEy LTExLTE0IDA0OjU1OjQxICswMDAwCisrKyBudC9DaGFuZ2VMb2cJMjAxMi0xMS0xNCAwNzoy NjoyNSArMDAwMApAQCAtMSw1ICsxLDkgQEAKIDIwMTItMTEtMTQgIFBhdWwgRWdnZXJ0ICA8 ZWdnZXJ0QGNzLnVjbGEuZWR1PgogCisJQXNzdW1lIFBPU0lYIDEwMDMuMS0xOTg4IG9yIGxh dGVyIGZvciBmY250bC5oLgorCSogaW5jL3N5cy9zb2NrZXQuaCAoT19OT05CTE9DSyk6IFJl bmFtZSBmcm9tIE9fTkRFTEFZLCBzaW5jZSB0aGUKKwlQT1NJWCBuYW1lIGZvciB0aGlzIGZs YWcgaXMgT19OT05CTE9DSy4gIEFsbCB1c2VzIGNoYW5nZWQuCisKIAlVc2UgZmFjY2Vzc2F0 LCBub3QgYWNjZXNzLCB3aGVuIGNoZWNraW5nIGZpbGUgcGVybWlzc2lvbnMgKEJ1ZyMxMjYz MikuCiAJKiBpbmMvbXMtdzMyLmggKEFUX0ZEQ1dELCBBVF9FQUNDRVNTKTogTmV3IHN5bWJv bHMuCiAJKGFjY2Vzcyk6IFJlbW92ZS4KCj09PSBtb2RpZmllZCBmaWxlICdudC9pbmMvc3lz L3NvY2tldC5oJwotLS0gbnQvaW5jL3N5cy9zb2NrZXQuaAkyMDEyLTA5LTMwIDIxOjM2OjQy ICswMDAwCisrKyBudC9pbmMvc3lzL3NvY2tldC5oCTIwMTItMTEtMTQgMDc6MjY6MjUgKzAw MDAKQEAgLTExOSw3ICsxMTksNyBAQAogICAgYW4gZmNudGwgZnVuY3Rpb24sIGZvciBzZXR0 aW5nIHNvY2tldHMgdG8gbm9uLWJsb2NraW5nIG1vZGUuICAqLwogaW50IGZjbnRsIChpbnQg cywgaW50IGNtZCwgaW50IG9wdGlvbnMpOwogI2RlZmluZSBGX1NFVEZMICAgNAotI2RlZmlu ZSBPX05ERUxBWSAgMDQwMDAKKyNkZWZpbmUgT19OT05CTE9DSyAgMDQwMDAKIAogLyogd2Ug YXJlIHByb3ZpZGluZyBhIHJlYWwgaF9lcnJubyB2YXJpYWJsZSAqLwogI3VuZGVmIGhfZXJy bm8KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxv ZwkyMDEyLTExLTE0IDA0OjU1OjQxICswMDAwCisrKyBzcmMvQ2hhbmdlTG9nCTIwMTItMTEt MTQgMDc6MjY6MjUgKzAwMDAKQEAgLTEsNSArMSwyNCBAQAogMjAxMi0xMS0xNCAgUGF1bCBF Z2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKKwlBc3N1bWUgUE9TSVggMTAwMy4xLTE5 ODggb3IgbGF0ZXIgZm9yIGZjbnRsLmguCisJKiBjYWxscHJvYy5jIChyZWxvY2F0ZV9mZCk6 IEFzc3VtZSBGX0RVUEZELgorCSogZW1hY3MuYywgdGVybS5jIChPX1JEV1IpOiBSZW1vdmUu CisJKiBrZXlib2FyZC5jICh0dHlfcmVhZF9hdmFpbF9pbnB1dCk6IFVzZSBPX05PTkJMT0NL IHJhdGhlciB0aGFuCisJT19OREVMQVksIHNpbmNlIE9fTk9OQkxPQ0sgaXMgdGhlIHN0YW5k YXJkIG5hbWUgZm9yIHRoaXMgZmxhZy4KKwkqIHByb2Nlc3MuYyAoTk9OX0JMT0NLSU5HX0NP Tk5FQ1QsIGFsbG9jYXRlX3B0eSwgY3JlYXRlX3Byb2Nlc3MpCisJKGNyZWF0ZV9wdHksIEZt YWtlX25ldHdvcmtfcHJvY2Vzcywgc2VydmVyX2FjY2VwdF9jb25uZWN0aW9uKQorCSh3YWl0 X3JlYWRpbmdfcHJvY2Vzc19vdXRwdXQsIGluaXRfcHJvY2Vzc19lbWFjcyk6CisJQXNzdW1l IE9fTk9OQkxPQ0suCisJKGNyZWF0ZV9wcm9jZXNzKTogQXNzdW1lIEZEX0NMT0VYRUMuCisJ KGNyZWF0ZV9wcm9jZXNzLCBjcmVhdGVfcHR5KTogQXNzdW1lIE9fTk9DVFRZLgorCSogc3lz ZGVwLmMgKGluaXRfc3lzX21vZGVzLCByZXNldF9zeXNfbW9kZXMpOiBBc3N1bWUgRl9TRVRG TC4KKwkocmVzZXRfc3lzX21vZGVzKTogVXNlIE9fTk9OQkxPQ0sgcmF0aGVyIHRoYW4gT19O REVMQVkuCisJKHNlcmlhbF9vcGVuKTogQXNzdW1lIE9fTk9OQkxPQ0sgYW5kIE9fTk9DVFRZ LgorCSogdGVybS5jIChPX05PQ1RUWSk6IFJlbW92ZS4KKwkoaW5pdF90dHkpOiBBc3N1bWUg T19JR05PUkVfQ1RUWSBpcyBkZWZpbmVkIHRvIDAgb24gcGxhdGZvcm1zIHRoYXQKKwlsYWNr IGl0LCBzaW5jZSBnbnVsaWIgZ3VhcmFudGVlcyB0aGlzLgorCSogdzMyLmMgKGZjbnRsKTog VGVzdCBmb3IgT19OT05CTE9DSyByYXRoZXIgdGhhbiBPX05ERUxBWS4KKwogCVVzZSBmYWNj ZXNzYXQsIG5vdCBhY2Nlc3MsIHdoZW4gY2hlY2tpbmcgZmlsZSBwZXJtaXNzaW9ucyAoQnVn IzEyNjMyKS4KIAlUaGlzIGZpeGVzIGEgYnVnIHRoYXQgaGFzIGJlZW4gcHJlc2VudCBpbiBF bWFjcyBzaW5jZSBpdHMgY3JlYXRpb24uCiAJSXQgd2FzIHJlcG9ydGVkIGJ5IENocmlzIFRv cmVrIGluIDE5ODMgZXZlbiBiZWZvcmUgR05VIEVtYWNzIGV4aXN0ZWQsCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3JjL2NhbGxwcm9jLmMnCi0tLSBzcmMvY2FsbHByb2MuYwkyMDEyLTExLTE0 IDA0OjU1OjQxICswMDAwCisrKyBzcmMvY2FsbHByb2MuYwkyMDEyLTExLTE0IDA3OjI2OjI1 ICswMDAwCkBAIC0xMzE3LDE2ICsxMzE3LDcgQEAKICAgICByZXR1cm4gZmQ7CiAgIGVsc2UK ICAgICB7Ci0gICAgICBpbnQgbmV3OwotI2lmZGVmIEZfRFVQRkQKLSAgICAgIG5ldyA9IGZj bnRsIChmZCwgRl9EVVBGRCwgbWluZmQpOwotI2Vsc2UKLSAgICAgIG5ldyA9IGR1cCAoZmQp OwotICAgICAgaWYgKG5ldyAhPSAtMSkKLQkvKiBOb3RlIHRoYXQgd2UgaG9sZCB0aGUgb3Jp Z2luYWwgRkQgb3BlbiB3aGlsZSB3ZSByZWN1cnNlLAotCSAgIHRvIGd1YXJhbnRlZSB3ZSds bCBnZXQgYSBuZXcgRkQgaWYgd2UgbmVlZCBpdC4gICovCi0JbmV3ID0gcmVsb2NhdGVfZmQg KG5ldywgbWluZmQpOwotI2VuZGlmCisgICAgICBpbnQgbmV3ID0gZmNudGwgKGZkLCBGX0RV UEZELCBtaW5mZCk7CiAgICAgICBpZiAobmV3ID09IC0xKQogCXsKIAkgIGNvbnN0IGNoYXIg Km1lc3NhZ2VfMSA9ICJFcnJvciB3aGlsZSBzZXR0aW5nIHVwIGNoaWxkOiAiOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9lbWFjcy5jJwotLS0gc3JjL2VtYWNzLmMJMjAxMi0xMS0wOCAx OToxMjoyMyArMDAwMAorKysgc3JjL2VtYWNzLmMJMjAxMi0xMS0xNCAwNzoyNjoyNSArMDAw MApAQCAtOTUsMTAgKzk1LDYgQEAKICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KICNl bmRpZgogCi0jaWZuZGVmIE9fUkRXUgotI2RlZmluZSBPX1JEV1IgMgotI2VuZGlmCi0KIHN0 YXRpYyBjb25zdCBjaGFyIGVtYWNzX3ZlcnNpb25bXSA9IFZFUlNJT047CiBzdGF0aWMgY29u c3QgY2hhciBlbWFjc19jb3B5cmlnaHRbXSA9IENPUFlSSUdIVDsKIAoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9rZXlib2FyZC5jJwotLS0gc3JjL2tleWJvYXJkLmMJMjAxMi0xMS0wOCAw OToyNjo0MCArMDAwMAorKysgc3JjL2tleWJvYXJkLmMJMjAxMi0xMS0xNCAwNzoyNjoyNSAr MDAwMApAQCAtNjk0OCw3ICs2OTQ4LDcgQEAKICNlbGlmIGRlZmluZWQgVVNHIHx8IGRlZmlu ZWQgQ1lHV0lOCiAgIC8qIFJlYWQgc29tZSBpbnB1dCBpZiBhdmFpbGFibGUsIGJ1dCBkb24n dCB3YWl0LiAgKi8KICAgbl90b19yZWFkID0gc2l6ZW9mIGNidWY7Ci0gIGZjbnRsIChmaWxl bm8gKHR0eS0+aW5wdXQpLCBGX1NFVEZMLCBPX05ERUxBWSk7CisgIGZjbnRsIChmaWxlbm8g KHR0eS0+aW5wdXQpLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKICNlbHNlCiAjIGVycm9yICJD YW5ub3QgcmVhZCB3aXRob3V0IHBvc3NpYmx5IGRlbGF5aW5nIgogI2VuZGlmCkBAIC02OTgy LDcgKzY5ODIsNyBAQAogICAgIH0KICAgd2hpbGUgKAogICAgICAgICAgLyogV2UgdXNlZCB0 byByZXRyeSB0aGUgcmVhZCBpZiBpdCB3YXMgaW50ZXJydXB0ZWQuCi0gICAgICAgICAgICBC dXQgdGhpcyBkb2VzIHRoZSB3cm9uZyB0aGluZyB3aGVuIE9fTkRFTEFZIGNhdXNlcworICAg ICAgICAgICAgQnV0IHRoaXMgZG9lcyB0aGUgd3JvbmcgdGhpbmcgd2hlbiBPX05PTkJMT0NL IGNhdXNlcwogICAgICAgICAgICAgYW4gRUFHQUlOIGVycm9yLiAgRG9lcyBhbnlib2R5IGtu b3cgb2YgYSBzaXR1YXRpb24KICAgICAgICAgICAgIHdoZXJlIGEgcmV0cnkgaXMgYWN0dWFs bHkgbmVlZGVkPyAgKi8KICNpZiAwCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3Byb2Nlc3Mu YycKLS0tIHNyYy9wcm9jZXNzLmMJMjAxMi0xMS0xNCAwNDo1NTo0MSArMDAwMAorKysgc3Jj L3Byb2Nlc3MuYwkyMDEyLTExLTE0IDA3OjI2OjI1ICswMDAwCkBAIC0yMDgsMTEgKzIwOCw5 IEBACiAjaWZuZGVmIE5PTl9CTE9DS0lOR19DT05ORUNUCiAjaWZkZWYgSEFWRV9TRUxFQ1QK ICNpZiBkZWZpbmVkIChIQVZFX0dFVFBFRVJOQU1FKSB8fCBkZWZpbmVkIChHTlVfTElOVVgp Ci0jaWYgT19OT05CTE9DSyB8fCBPX05ERUxBWQogI2lmIGRlZmluZWQgKEVXT1VMREJMT0NL KSB8fCBkZWZpbmVkIChFSU5QUk9HUkVTUykKICNkZWZpbmUgTk9OX0JMT0NLSU5HX0NPTk5F Q1QKICNlbmRpZiAvKiBFV09VTERCTE9DSyB8fCBFSU5QUk9HUkVTUyAqLwotI2VuZGlmIC8q IE9fTk9OQkxPQ0sgfHwgT19OREVMQVkgKi8KICNlbmRpZiAvKiBIQVZFX0dFVFBFRVJOQU1F IHx8IEdOVV9MSU5VWCAqLwogI2VuZGlmIC8qIEhBVkVfU0VMRUNUICovCiAjZW5kaWYgLyog Tk9OX0JMT0NLSU5HX0NPTk5FQ1QgKi8KQEAgLTY1NCwxMyArNjUyLDcgQEAKICNpZmRlZiBQ VFlfT1BFTgogCVBUWV9PUEVOOwogI2Vsc2UgLyogbm8gUFRZX09QRU4gKi8KLQl7Ci0jICBp ZiBPX05PTkJMT0NLCi0JICBmZCA9IGVtYWNzX29wZW4gKHB0eV9uYW1lLCBPX1JEV1IgfCBP X05PTkJMT0NLLCAwKTsKLSMgIGVsc2UKLQkgIGZkID0gZW1hY3Nfb3BlbiAocHR5X25hbWUs IE9fUkRXUiB8IE9fTkRFTEFZLCAwKTsKLSMgIGVuZGlmCi0JfQorCWZkID0gZW1hY3Nfb3Bl biAocHR5X25hbWUsIE9fUkRXUiB8IE9fTk9OQkxPQ0ssIDApOwogI2VuZGlmIC8qIG5vIFBU WV9PUEVOICovCiAKIAlpZiAoZmQgPj0gMCkKQEAgLTE1OTgsNyArMTU5MCw3IEBACiAgIGlu dCBpbmNoYW5uZWwsIG91dGNoYW5uZWw7CiAgIHBpZF90IHBpZDsKICAgaW50IHN2WzJdOwot I2lmICFkZWZpbmVkIChXSU5ET1dTTlQpICYmIGRlZmluZWQgKEZEX0NMT0VYRUMpCisjaWZu ZGVmIFdJTkRPV1NOVAogICBpbnQgd2FpdF9jaGlsZF9zZXR1cFsyXTsKICNlbmRpZgogI2lm ZGVmIFNJR0NITEQKQEAgLTE2MjQsMTMgKzE2MTYsOSBAQAogI2lmICEgZGVmaW5lZCAoVVNH KSB8fCBkZWZpbmVkIChVU0dfU1VCVFRZX1dPUktTKQogICAgICAgLyogT24gbW9zdCBVU0cg c3lzdGVtcyBpdCBkb2VzIG5vdCB3b3JrIHRvIG9wZW4gdGhlIHB0eSdzIHR0eSBoZXJlLAog CSB0aGVuIGNsb3NlIGl0IGFuZCByZW9wZW4gaXQgaW4gdGhlIGNoaWxkLiAgKi8KLSNpZiBP X05PQ1RUWQogICAgICAgLyogRG9uJ3QgbGV0IHRoaXMgdGVybWluYWwgYmVjb21lIG91ciBj b250cm9sbGluZyB0ZXJtaW5hbAogCSAoaW4gY2FzZSB3ZSBkb24ndCBoYXZlIG9uZSkuICAq LwogICAgICAgZm9ya291dCA9IGZvcmtpbiA9IGVtYWNzX29wZW4gKHB0eV9uYW1lLCBPX1JE V1IgfCBPX05PQ1RUWSwgMCk7Ci0jZWxzZQotICAgICAgZm9ya291dCA9IGZvcmtpbiA9IGVt YWNzX29wZW4gKHB0eV9uYW1lLCBPX1JEV1IsIDApOwotI2VuZGlmCiAgICAgICBpZiAoZm9y a2luIDwgMCkKIAlyZXBvcnRfZmlsZV9lcnJvciAoIk9wZW5pbmcgcHR5IiwgUW5pbCk7CiAj ZWxzZQpAQCAtMTY1OSw3ICsxNjQ3LDcgQEAKICAgICAgIGZvcmtpbiA9IHN2WzBdOwogICAg IH0KIAotI2lmICFkZWZpbmVkIChXSU5ET1dTTlQpICYmIGRlZmluZWQgKEZEX0NMT0VYRUMp CisjaWZuZGVmIFdJTkRPV1NOVAogICAgIHsKICAgICAgIGludCB0ZW07CiAKQEAgLTE2Nzgs MTUgKzE2NjYsOCBAQAogICAgIH0KICNlbmRpZgogCi0jaWYgT19OT05CTE9DSwogICBmY250 bCAoaW5jaGFubmVsLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKICAgZmNudGwgKG91dGNoYW5u ZWwsIEZfU0VURkwsIE9fTk9OQkxPQ0spOwotI2Vsc2UKLSNpZiBPX05ERUxBWQotICBmY250 bCAoaW5jaGFubmVsLCBGX1NFVEZMLCBPX05ERUxBWSk7Ci0gIGZjbnRsIChvdXRjaGFubmVs LCBGX1NFVEZMLCBPX05ERUxBWSk7Ci0jZW5kaWYKLSNlbmRpZgogCiAgIC8qIFJlY29yZCB0 aGlzIGFzIGFuIGFjdGl2ZSBwcm9jZXNzLCB3aXRoIGl0cyBjaGFubmVscy4KICAgICAgQXMg YSByZXN1bHQsIGNoaWxkX3NldHVwIHdpbGwgY2xvc2UgRW1hY3MncyBzaWRlIG9mIHRoZSBw aXBlcy4gICovCkBAIC0xODQ1LDkgKzE4MjYsNyBAQAogICAgICAgcGlkID0gY2hpbGRfc2V0 dXAgKHhmb3JraW4sIHhmb3Jrb3V0LCB4Zm9ya291dCwKIAkJCSBuZXdfYXJndiwgMSwgZW5j b2RlZF9jdXJyZW50X2Rpcik7CiAjZWxzZSAgLyogbm90IFdJTkRPV1NOVCAqLwotI2lmZGVm IEZEX0NMT0VYRUMKICAgICAgIGVtYWNzX2Nsb3NlICh3YWl0X2NoaWxkX3NldHVwWzBdKTsK LSNlbmRpZgogICAgICAgY2hpbGRfc2V0dXAgKHhmb3JraW4sIHhmb3Jrb3V0LCB4Zm9ya291 dCwKIAkJICAgbmV3X2FyZ3YsIDEsIGVuY29kZWRfY3VycmVudF9kaXIpOwogI2VuZGlmIC8q IG5vdCBXSU5ET1dTTlQgKi8KQEAgLTE5MDYsNyArMTg4NSw3IEBACiAKICAgICAgIHBzZXRf dHR5X25hbWUgKFhQUk9DRVNTIChwcm9jZXNzKSwgbGlzcF9wdHlfbmFtZSk7CiAKLSNpZiAh ZGVmaW5lZCAoV0lORE9XU05UKSAmJiBkZWZpbmVkIChGRF9DTE9FWEVDKQorI2lmbmRlZiBX SU5ET1dTTlQKICAgICAgIC8qIFdhaXQgZm9yIGNoaWxkX3NldHVwIHRvIGNvbXBsZXRlIGlu IGNhc2UgdGhhdCB2Zm9yayBpcwogCSBhY3R1YWxseSBkZWZpbmVkIGFzIGZvcmsuICBUaGUg ZGVzY3JpcHRvciB3YWl0X2NoaWxkX3NldHVwWzFdCiAJIG9mIGEgcGlwZSBpcyBjbG9zZWQg YXQgdGhlIGNoaWxkIHNpZGUgZWl0aGVyIGJ5IGNsb3NlLW9uLWV4ZWMKQEAgLTE5NDMsMTMg KzE5MjIsOSBAQAogI2lmICEgZGVmaW5lZCAoVVNHKSB8fCBkZWZpbmVkIChVU0dfU1VCVFRZ X1dPUktTKQogICAgICAgLyogT24gbW9zdCBVU0cgc3lzdGVtcyBpdCBkb2VzIG5vdCB3b3Jr IHRvIG9wZW4gdGhlIHB0eSdzIHR0eSBoZXJlLAogCSB0aGVuIGNsb3NlIGl0IGFuZCByZW9w ZW4gaXQgaW4gdGhlIGNoaWxkLiAgKi8KLSNpZiBPX05PQ1RUWQogICAgICAgLyogRG9uJ3Qg bGV0IHRoaXMgdGVybWluYWwgYmVjb21lIG91ciBjb250cm9sbGluZyB0ZXJtaW5hbAogCSAo aW4gY2FzZSB3ZSBkb24ndCBoYXZlIG9uZSkuICAqLwogICAgICAgaW50IGZvcmtvdXQgPSBl bWFjc19vcGVuIChwdHlfbmFtZSwgT19SRFdSIHwgT19OT0NUVFksIDApOwotI2Vsc2UKLSAg ICAgIGludCBmb3Jrb3V0ID0gZW1hY3Nfb3BlbiAocHR5X25hbWUsIE9fUkRXUiwgMCk7Ci0j ZW5kaWYKICAgICAgIGlmIChmb3Jrb3V0IDwgMCkKIAlyZXBvcnRfZmlsZV9lcnJvciAoIk9w ZW5pbmcgcHR5IiwgUW5pbCk7CiAjaWYgZGVmaW5lZCAoRE9OVF9SRU9QRU5fUFRZKQpAQCAt MTk2MywxNSArMTkzOCw4IEBACiAgICAgfQogI2VuZGlmIC8qIEhBVkVfUFRZUyAqLwogCi0j aWYgT19OT05CTE9DSwogICBmY250bCAoaW5jaGFubmVsLCBGX1NFVEZMLCBPX05PTkJMT0NL KTsKICAgZmNudGwgKG91dGNoYW5uZWwsIEZfU0VURkwsIE9fTk9OQkxPQ0spOwotI2Vsc2UK LSNpZiBPX05ERUxBWQotICBmY250bCAoaW5jaGFubmVsLCBGX1NFVEZMLCBPX05ERUxBWSk7 Ci0gIGZjbnRsIChvdXRjaGFubmVsLCBGX1NFVEZMLCBPX05ERUxBWSk7Ci0jZW5kaWYKLSNl bmRpZgogCiAgIC8qIFJlY29yZCB0aGlzIGFzIGFuIGFjdGl2ZSBwcm9jZXNzLCB3aXRoIGl0 cyBjaGFubmVscy4KICAgICAgQXMgYSByZXN1bHQsIGNoaWxkX3NldHVwIHdpbGwgY2xvc2Ug RW1hY3MncyBzaWRlIG9mIHRoZSBwaXBlcy4gICovCkBAIC0yOTI3LDEzICsyODk1LDkgQEAK ICAgICB7CiAgICAgICAvKiBEb24ndCBzdXBwb3J0IG5ldHdvcmsgc29ja2V0cyB3aGVuIG5v bi1ibG9ja2luZyBtb2RlIGlzCiAJIG5vdCBhdmFpbGFibGUsIHNpbmNlIGEgYmxvY2tlZCBF bWFjcyBpcyBub3QgdXNlZnVsLiAgKi8KLSNpZiAhT19OT05CTE9DSyAmJiAhT19OREVMQVkK LSAgICAgIGVycm9yICgiTmV0d29yayBzZXJ2ZXJzIG5vdCBzdXBwb3J0ZWQiKTsKLSNlbHNl CiAgICAgICBpc19zZXJ2ZXIgPSAxOwogICAgICAgaWYgKFRZUEVfUkFOR0VEX0lOVEVHRVJQ IChpbnQsIHRlbSkpCiAJYmFja2xvZyA9IFhJTlQgKHRlbSk7Ci0jZW5kaWYKICAgICB9CiAK ICAgLyogTWFrZSBRQ2FkZHJlc3MgYW4gYWxpYXMgZm9yIDpsb2NhbCAoc2VydmVyKSBvciA6 cmVtb3RlIChjbGllbnQpLiAgKi8KQEAgLTMxOTMsMTEgKzMxNTcsNyBAQAogI2lmZGVmIE5P Tl9CTE9DS0lOR19DT05ORUNUCiAgICAgICBpZiAoaXNfbm9uX2Jsb2NraW5nX2NsaWVudCkK IAl7Ci0jaWYgT19OT05CTE9DSwogCSAgcmV0ID0gZmNudGwgKHMsIEZfU0VURkwsIE9fTk9O QkxPQ0spOwotI2Vsc2UKLQkgIHJldCA9IGZjbnRsIChzLCBGX1NFVEZMLCBPX05ERUxBWSk7 Ci0jZW5kaWYKIAkgIGlmIChyZXQgPCAwKQogCSAgICB7CiAJICAgICAgeGVycm5vID0gZXJy bm87CkBAIC0zNDEwLDEzICszMzcwLDcgQEAKIAogICBjaGFuX3Byb2Nlc3NbaW5jaF0gPSBw cm9jOwogCi0jaWYgT19OT05CTE9DSwogICBmY250bCAoaW5jaCwgRl9TRVRGTCwgT19OT05C TE9DSyk7Ci0jZWxzZQotI2lmIE9fTkRFTEFZCi0gIGZjbnRsIChpbmNoLCBGX1NFVEZMLCBP X05ERUxBWSk7Ci0jZW5kaWYKLSNlbmRpZgogCiAgIHAgPSBYUFJPQ0VTUyAocHJvYyk7CiAK QEAgLTQxNDUsMTMgKzQwOTksNyBAQAogCiAgIGNoYW5fcHJvY2Vzc1tzXSA9IHByb2M7CiAK LSNpZiBPX05PTkJMT0NLCiAgIGZjbnRsIChzLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKLSNl bHNlCi0jaWYgT19OREVMQVkKLSAgZmNudGwgKHMsIEZfU0VURkwsIE9fTkRFTEFZKTsKLSNl bmRpZgotI2VuZGlmCiAKICAgcCA9IFhQUk9DRVNTIChwcm9jKTsKIApAQCAtNDg0NywyMyAr NDc5NSw4IEBACiAJICAgICAgZWxzZSBpZiAobnJlYWQgPT0gLTEgJiYgZXJybm8gPT0gRVdP VUxEQkxPQ0spCiAJCTsKICNlbmRpZgotCSAgICAgIC8qIElTQyA0LjEgZGVmaW5lcyBib3Ro IEVXT1VMREJMT0NLIGFuZCBPX05PTkJMT0NLLAotCQkgYW5kIEVtYWNzIHVzZXMgT19OT05C TE9DSywgc28gd2hhdCB3ZSBnZXQgaXMgRUFHQUlOLiAgKi8KLSNpZiBPX05PTkJMT0NLCi0J ICAgICAgZWxzZSBpZiAobnJlYWQgPT0gLTEgJiYgZXJybm8gPT0gRUFHQUlOKQotCQk7Ci0j ZWxzZQotI2lmIE9fTkRFTEFZCi0JICAgICAgZWxzZSBpZiAobnJlYWQgPT0gLTEgJiYgZXJy bm8gPT0gRUFHQUlOKQotCQk7Ci0JICAgICAgLyogTm90ZSB0aGF0IHdlIGNhbm5vdCBkaXN0 aW5ndWlzaCBiZXR3ZWVuIG5vIGlucHV0Ci0JCSBhdmFpbGFibGUgbm93IGFuZCBhIGNsb3Nl ZCBwaXBlLgotCQkgV2l0aCBsdWNrLCBhIGNsb3NlZCBwaXBlIHdpbGwgYmUgYWNjb21wYW5p ZWQgYnkKLQkJIHN1YnByb2Nlc3MgdGVybWluYXRpb24gYW5kIFNJR0NITEQuICAqLwotCSAg ICAgIGVsc2UgaWYgKG5yZWFkID09IDAgJiYgIU5FVENPTk5fUCAocHJvYykgJiYgIVNFUklB TENPTk5fUCAocHJvYykpCi0JCTsKLSNlbmRpZiAvKiBPX05ERUxBWSAqLwotI2VuZGlmIC8q IE9fTk9OQkxPQ0sgKi8KKwkgICAgICBlbHNlIGlmIChucmVhZCA9PSAtMSAmJiBlcnJubyA9 PSBFQUdBSU4pCisJCTsKICNpZmRlZiBIQVZFX1BUWVMKIAkgICAgICAvKiBPbiBzb21lIE9T cyB3aXRoIHB0eXMsIHdoZW4gdGhlIHByb2Nlc3Mgb24gb25lIGVuZCBvZgogCQkgYSBwdHkg ZXhpdHMsIHRoZSBvdGhlciBlbmQgZ2V0cyBhbiBlcnJvciByZWFkaW5nIHdpdGgKQEAgLTcz NDgsOSArNzI4MSw3IEBACiAjaWZkZWYgSEFWRV9HRVRTT0NLTkFNRQogICAgQUREX1NVQkZF QVRVUkUgKFFDc2VydmljZSwgUXQpOwogI2VuZGlmCi0jaWYgT19OT05CTE9DSyB8fCBPX05E RUxBWQogICAgQUREX1NVQkZFQVRVUkUgKFFDc2VydmVyLCBRdCk7Ci0jZW5kaWYKIAogICAg Zm9yIChzb3B0ID0gc29ja2V0X29wdGlvbnM7IHNvcHQtPm5hbWU7IHNvcHQrKykKICAgICAg c3ViZmVhdHVyZXMgPSBwdXJlX2NvbnMgKGludGVybl9jX3N0cmluZyAoc29wdC0+bmFtZSks IHN1YmZlYXR1cmVzKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvc3lzZGVwLmMnCi0tLSBz cmMvc3lzZGVwLmMJMjAxMi0xMS0xNCAwNDo1NTo0MSArMDAwMAorKysgc3JjL3N5c2RlcC5j CTIwMTItMTEtMTQgMDc6MjY6MjUgKzAwMDAKQEAgLTEwMzksOCArMTAzOSw3IEBACiAjZW5k aWYKICNlbmRpZgogCi0jaWZkZWYgRl9TRVRGTAotI2lmZGVmIEZfR0VUT1dOCQkvKiBGX1NF VEZMIGRvZXMgbm90IGltcGx5IGV4aXN0ZW5jZSBvZiBGX0dFVE9XTiAqLworI2lmZGVmIEZf R0VUT1dOCiAgIGlmIChpbnRlcnJ1cHRfaW5wdXQpCiAgICAgewogICAgICAgb2xkX2ZjbnRs X293bmVyW2ZpbGVubyAodHR5X291dC0+aW5wdXQpXSA9CkBAIC0xMDU4LDcgKzEwNTcsNiBA QAogI2VuZGlmIC8qIEhBVkVfR1BNICovCiAgICAgfQogI2VuZGlmIC8qIEZfR0VUT1dOICov Ci0jZW5kaWYgLyogRl9TRVRGTCAqLwogCiAjaWZkZWYgX0lPRkJGCiAgIC8qIFRoaXMgc3lt Ym9sIGlzIGRlZmluZWQgb24gcmVjZW50IFVTRyBzeXN0ZW1zLgpAQCAtMTI3OCw4ICsxMjc2 LDcgQEAKICAgZnN5bmMgKGZpbGVubyAodHR5X291dC0+b3V0cHV0KSk7CiAjZW5kaWYKIAot I2lmZGVmIEZfU0VURkwKLSNpZmRlZiBGX1NFVE9XTgkJLyogRl9TRVRGTCBkb2VzIG5vdCBp bXBseSBleGlzdGVuY2Ugb2YgRl9TRVRPV04gKi8KKyNpZmRlZiBGX1NFVE9XTgogICBpZiAo aW50ZXJydXB0X2lucHV0KQogICAgIHsKICAgICAgIHJlc2V0X3NpZ2lvIChmaWxlbm8gKHR0 eV9vdXQtPmlucHV0KSk7CkBAIC0xMjg3LDExICsxMjg0LDggQEAKICAgICAgICAgICAgICBv bGRfZmNudGxfb3duZXJbZmlsZW5vICh0dHlfb3V0LT5pbnB1dCldKTsKICAgICB9CiAjZW5k aWYgLyogRl9TRVRPV04gKi8KLSNpZiBPX05ERUxBWQogICBmY250bCAoZmlsZW5vICh0dHlf b3V0LT5pbnB1dCksIEZfU0VURkwsCi0gICAgICAgICBmY250bCAoZmlsZW5vICh0dHlfb3V0 LT5pbnB1dCksIEZfR0VURkwsIDApICYgfk9fTkRFTEFZKTsKLSNlbmRpZgotI2VuZGlmIC8q IEZfU0VURkwgKi8KKyAgICAgICAgIGZjbnRsIChmaWxlbm8gKHR0eV9vdXQtPmlucHV0KSwg Rl9HRVRGTCwgMCkgJiB+T19OT05CTE9DSyk7CiAKICAgaWYgKHR0eV9vdXQtPm9sZF90dHkp CiAgICAgd2hpbGUgKGVtYWNzX3NldF90dHkgKGZpbGVubyAodHR5X291dC0+aW5wdXQpLApA QCAtMjM4MCwxOSArMjM3NCw3IEBACiBpbnQKIHNlcmlhbF9vcGVuIChjaGFyICpwb3J0KQog ewotICBpbnQgZmQgPSAtMTsKLQotICBmZCA9IGVtYWNzX29wZW4gKChjaGFyKikgcG9ydCwK LQkJICAgT19SRFdSCi0jaWYgT19OT05CTE9DSwotCQkgICB8IE9fTk9OQkxPQ0sKLSNlbHNl Ci0JCSAgIHwgT19OREVMQVkKLSNlbmRpZgotI2lmIE9fTk9DVFRZCi0JCSAgIHwgT19OT0NU VFkKLSNlbmRpZgotCQkgICAsIDApOworICBpbnQgZmQgPSBlbWFjc19vcGVuIChwb3J0LCBP X1JEV1IgfCBPX05PQ1RUWSB8IE9fTk9OQkxPQ0ssIDApOwogICBpZiAoZmQgPCAwKQogICAg IHsKICAgICAgIGVycm9yICgiQ291bGQgbm90IG9wZW4gJXM6ICVzIiwKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMvdGVybS5jJwotLS0gc3JjL3Rlcm0uYwkyMDEyLTExLTE0IDA0OjU1OjQx ICswMDAwCisrKyBzcmMvdGVybS5jCTIwMTItMTEtMTQgMDc6MjY6MjUgKzAwMDAKQEAgLTU1 LDE0ICs1NSw2IEBACiAjaW5jbHVkZSAieHRlcm0uaCIKICNlbmRpZgogCi0jaWZuZGVmIE9f UkRXUgotI2RlZmluZSBPX1JEV1IgMgotI2VuZGlmCi0KLSNpZm5kZWYgT19OT0NUVFkKLSNk ZWZpbmUgT19OT0NUVFkgMAotI2VuZGlmCi0KIC8qIFRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0 IGNvbnNvbGUgZGV2aWNlLiAgKi8KICNpZmRlZiBXSU5ET1dTTlQKICNkZWZpbmUgREVWX1RU WSAgIkNPTk9VVCQiCkBAIC0yOTg5LDIyICsyOTgxLDE4IEBACiAgIHNldF90dHlfaG9va3Mg KHRlcm1pbmFsKTsKIAogICB7Ci0gICAgaW50IGZkOworICAgIC8qIE9wZW4gdGhlIHRlcm1p bmFsIGRldmljZS4gICovCiAgICAgRklMRSAqZmlsZTsKIAotI2lmIE9fSUdOT1JFX0NUVFkK LSAgICBpZiAoIWN0dHkpCi0gICAgICAvKiBPcGVuIHRoZSB0ZXJtaW5hbCBkZXZpY2UuICBE b24ndCByZWNvZ25pemUgaXQgYXMgb3VyCi0gICAgICAgICBjb250cm9sbGluZyB0ZXJtaW5h bCwgYW5kIGRvbid0IG1ha2UgaXQgdGhlIGNvbnRyb2xsaW5nIHR0eQotICAgICAgICAgaWYg d2UgZG9uJ3QgaGF2ZSBvbmUgYXQgdGhlIG1vbWVudC4gICovCi0gICAgICBmZCA9IGVtYWNz X29wZW4gKG5hbWUsIE9fUkRXUiB8IE9fSUdOT1JFX0NUVFkgfCBPX05PQ1RUWSwgMCk7Ci0g ICAgZWxzZQotI2VuZGlmIC8qIE9fSUdOT1JFX0NUVFkgKi8KLSAgICAgIC8qIEFsYXMsIE9f SUdOT1JFX0NUVFkgaXMgYSBHTlUgZXh0ZW5zaW9uIHRoYXQgc2VlbXMgdG8gYmUgb25seQot ICAgICAgICAgZGVmaW5lZCBvbiBIdXJkLiAgT24gb3RoZXIgc3lzdGVtcywgd2UgbmVlZCB0 byBleHBsaWNpdGx5Ci0gICAgICAgICBkaXNzb2NpYXRlIG91cnNlbHZlcyBmcm9tIHRoZSBj b250cm9sbGluZyB0dHkgd2hlbiB3ZSB3YW50IHRvCi0gICAgICAgICBvcGVuIGEgZnJhbWUg b24gdGhlIHNhbWUgdGVybWluYWwuICAqLwotICAgICAgZmQgPSBlbWFjc19vcGVuIChuYW1l LCBPX1JEV1IgfCBPX05PQ1RUWSwgMCk7CisgICAgLyogSWYgIWN0dHksIGRvbid0IHJlY29n bml6ZSBpdCBhcyBvdXIgY29udHJvbGxpbmcgdGVybWluYWwsIGFuZAorICAgICAgIGRvbid0 IG1ha2UgaXQgdGhlIGNvbnRyb2xsaW5nIHR0eSBpZiB3ZSBkb24ndCBoYXZlIG9uZSBub3cu CisKKyAgICAgICBBbGFzLCBPX0lHTk9SRV9DVFRZIGlzIGEgR05VIGV4dGVuc2lvbiB0aGF0 IHNlZW1zIHRvIGJlIG9ubHkKKyAgICAgICBkZWZpbmVkIG9uIEh1cmQuICBPbiBvdGhlciBz eXN0ZW1zLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkKKyAgICAgICBkaXNzb2NpYXRlIG91cnNl bHZlcyBmcm9tIHRoZSBjb250cm9sbGluZyB0dHkgd2hlbiB3ZSB3YW50IHRvCisgICAgICAg b3BlbiBhIGZyYW1lIG9uIHRoZSBzYW1lIHRlcm1pbmFsLiAgKi8KKyAgICBpbnQgZmxhZ3Mg PSBPX1JEV1IgfCBPX05PQ1RUWSB8IChjdHR5ID8gMCA6IE9fSUdOT1JFX0NUVFkpOworICAg IGludCBmZCA9IGVtYWNzX29wZW4gKG5hbWUsIGZsYWdzLCAwKTsKIAogICAgIHR0eS0+bmFt ZSA9IHhzdHJkdXAgKG5hbWUpOwogICAgIHRlcm1pbmFsLT5uYW1lID0geHN0cmR1cCAobmFt ZSk7CkBAIC0zMDIzLDEwICszMDExLDggQEAKICAgICAgICAgICAgICAgICAgICAgIG5hbWUp OwogICAgICAgfQogCi0jaWYgIU9fSUdOT1JFX0NUVFkKLSAgICBpZiAoIWN0dHkpCisgICAg aWYgKCFPX0lHTk9SRV9DVFRZICYmICFjdHR5KQogICAgICAgZGlzc29jaWF0ZV9pZl9jb250 cm9sbGluZ190dHkgKGZkKTsKLSNlbmRpZgogCiAgICAgZmlsZSA9IGZkb3BlbiAoZmQsICJ3 KyIpOwogICAgIHR0eS0+aW5wdXQgPSBmaWxlOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93 MzIuYycKLS0tIHNyYy93MzIuYwkyMDEyLTExLTE0IDA0OjU1OjQxICswMDAwCisrKyBzcmMv dzMyLmMJMjAxMi0xMS0xNCAwNzoyNjoyNSArMDAwMApAQCAtNTg0OSw3ICs1ODQ5LDcgQEAK ICAgY2hlY2tfZXJybm8gKCk7CiAgIGlmIChmZF9pbmZvW3NdLmZsYWdzICYgRklMRV9TT0NL RVQpCiAgICAgewotICAgICAgaWYgKGNtZCA9PSBGX1NFVEZMICYmIG9wdGlvbnMgPT0gT19O REVMQVkpCisgICAgICBpZiAoY21kID09IEZfU0VURkwgJiYgb3B0aW9ucyA9PSBPX05PTkJM T0NLKQogCXsKIAkgIHVuc2lnbmVkIGxvbmcgbmJsb2NrID0gMTsKIAkgIGludCByYyA9IHBm bl9pb2N0bHNvY2tldCAoU09DS19IQU5ETEUgKHMpLCBGSU9OQklPLCAmbmJsb2NrKTsKCg== --------------020902010408030801040708--