From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: Proposal: immediate strings Date: Tue, 22 May 2012 12:44:23 +0400 Message-ID: <4FBB51E7.6080601@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010402060100050809080003" X-Trace: dough.gmane.org 1337676164 4993 80.91.229.3 (22 May 2012 08:42:44 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 22 May 2012 08:42:44 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue May 22 10:42:43 2012 Return-path: Envelope-to: ged-emacs-devel@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 1SWkfs-00088Z-OD for ged-emacs-devel@m.gmane.org; Tue, 22 May 2012 10:42:37 +0200 Original-Received: from localhost ([::1]:33567 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SWkfs-0004Vo-Ax for ged-emacs-devel@m.gmane.org; Tue, 22 May 2012 04:42:36 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:48558) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SWkfg-0004U9-HO for emacs-devel@gnu.org; Tue, 22 May 2012 04:42:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SWkfY-0003zC-5D for emacs-devel@gnu.org; Tue, 22 May 2012 04:42:24 -0400 Original-Received: from forward11.mail.yandex.net ([95.108.130.93]:47452) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SWkfX-0003tn-DN for emacs-devel@gnu.org; Tue, 22 May 2012 04:42:16 -0400 Original-Received: from smtp13.mail.yandex.net (smtp13.mail.yandex.net [95.108.130.68]) by forward11.mail.yandex.net (Yandex) with ESMTP id 29901E8181E for ; Tue, 22 May 2012 12:42:13 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1337676133; bh=k6xNBXDffJLEkaMm3Upl+T299m688eWP3eixJq9oQGQ=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type; b=oGYao5WIqmTdGQ/1/93HLU825s1ZaArxczvLndXQLB3hHekf8seHK2rqamfq/PY7i AWnEOoYuKdK6vkCIpORfdOPju5aIii1HGe7OB0fI+jak5MrcOMo8JVUz9ww7ukdxJ4 cRqVaCBMtvSkUp9xWFd1o3L8ATRloI/5nDy19pxg= Original-Received: from smtp13.mail.yandex.net (localhost [127.0.0.1]) by smtp13.mail.yandex.net (Yandex) with ESMTP id 07A61E40484 for ; Tue, 22 May 2012 12:42:12 +0400 (MSK) Original-Received: from antipov.client.gelicon.ru (antipov.client.gelicon.ru [78.153.153.8]) by smtp13.mail.yandex.net (nwsmtp/Yandex) with ESMTP id gCc4lYnu-gCceFnWv; Tue, 22 May 2012 12:42:12 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1337676132; bh=k6xNBXDffJLEkaMm3Upl+T299m688eWP3eixJq9oQGQ=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type; b=olV1eN0vA5yjHGuVJRrDgljXYH3jOLVt8l1Y9h9Euvp6zmTrU4++4N7EAqzPXvaF3 8cb3yzdA5v1lgSYFmJTdz3QYJd7h6wJOe6eesAOua7ZQtUp4P49oS2udQiY0EO+cfD De1SiUmaL0U6sFq3CrgilTDGbGMGEpWU/sMkWtpk= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.130.93 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:150604 Archived-At: This is a multi-part message in MIME format. --------------010402060100050809080003 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is an old attempt (updated to current bzr trunk) to represent small strings as "immediates" of struct Lisp_String without allocating data separately. It was already discussed some time ago, and I would like to bump it again. Dmitry --------------010402060100050809080003 Content-Type: text/plain; charset=UTF-8; name="immstr.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="immstr.patch" PT09IG1vZGlmaWVkIGZpbGUgJ2NvbmZpZ3VyZS5pbicKLS0tIGNvbmZpZ3VyZS5pbgkyMDEy LTA1LTIxIDE1OjM2OjU0ICswMDAwCisrKyBjb25maWd1cmUuaW4JMjAxMi0wNS0yMiAwODoz MjozNyArMDAwMApAQCAtMzY1OCw2ICszNjU4LDEyIEBACiAjZGVmaW5lIE5PX0lOTElORQog I2VuZGlmCiAKKyNpZiBfX0dOVUNfXyA+IDEgLyogQW55IEdDQyBzdGlsbCBpbiB1c2Ugc2hv dWxkIHN1cHBvcnQgdGhpcy4gICovCisjZGVmaW5lIFBBQ0tFRCBfX2F0dHJpYnV0ZV9fKChw YWNrZWQpKQorI2Vsc2UKKyNkZWZpbmUgUEFDS0VECisjZW5kaWYKKwogI2lmIChfX0dOVUNf XyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gMSkpCiAjZGVm aW5lIEVYVEVSTkFMTFlfVklTSUJMRSBfX2F0dHJpYnV0ZV9fKChleHRlcm5hbGx5X3Zpc2li bGUpKQogI2Vsc2UKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYWxsb2MuYycKLS0tIHNyYy9h bGxvYy5jCTIwMTItMDUtMjEgMTU6MzY6NTQgKzAwMDAKKysrIHNyYy9hbGxvYy5jCTIwMTIt MDUtMjIgMDg6Mjk6MDYgKzAwMDAKQEAgLTE0NywyMCArMTQ3LDE0IEBACiAvKiBNYXJrLCB1 bm1hcmssIHF1ZXJ5IG1hcmsgYml0IG9mIGEgTGlzcCBzdHJpbmcuICBTIG11c3QgYmUgYSBw b2ludGVyCiAgICB0byBhIHN0cnVjdCBMaXNwX1N0cmluZy4gICovCiAKLSNkZWZpbmUgTUFS S19TVFJJTkcoUykJCSgoUyktPnNpemUgfD0gQVJSQVlfTUFSS19GTEFHKQotI2RlZmluZSBV Tk1BUktfU1RSSU5HKFMpCSgoUyktPnNpemUgJj0gfkFSUkFZX01BUktfRkxBRykKLSNkZWZp bmUgU1RSSU5HX01BUktFRF9QKFMpCSgoKFMpLT5zaXplICYgQVJSQVlfTUFSS19GTEFHKSAh PSAwKQorI2RlZmluZSBNQVJLX1NUUklORyhTKQkJKChTKS0+dS5pbW0uZ2NtYXJrYml0ID0g MSkKKyNkZWZpbmUgVU5NQVJLX1NUUklORyhTKQkoKFMpLT51LmltbS5nY21hcmtiaXQgPSAw KQorI2RlZmluZSBTVFJJTkdfTUFSS0VEX1AoUykJKChTKS0+dS5pbW0uZ2NtYXJrYml0KQog CiAjZGVmaW5lIFZFQ1RPUl9NQVJLKFYpCQkoKFYpLT5oZWFkZXIuc2l6ZSB8PSBBUlJBWV9N QVJLX0ZMQUcpCiAjZGVmaW5lIFZFQ1RPUl9VTk1BUksoVikJKChWKS0+aGVhZGVyLnNpemUg Jj0gfkFSUkFZX01BUktfRkxBRykKICNkZWZpbmUgVkVDVE9SX01BUktFRF9QKFYpCSgoKFYp LT5oZWFkZXIuc2l6ZSAmIEFSUkFZX01BUktfRkxBRykgIT0gMCkKIAotLyogVmFsdWUgaXMg dGhlIG51bWJlciBvZiBieXRlcyBvZiBTLCBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgTGlzcF9T dHJpbmcuCi0gICBCZSBjYXJlZnVsIGR1cmluZyBHQywgYmVjYXVzZSBTLT5zaXplIGNvbnRh aW5zIHRoZSBtYXJrIGJpdCBmb3IKLSAgIHN0cmluZ3MuICAqLwotCi0jZGVmaW5lIEdDX1NU UklOR19CWVRFUyhTKQkoU1RSSU5HX0JZVEVTIChTKSkKLQogLyogR2xvYmFsIHZhcmlhYmxl cy4gICovCiBzdHJ1Y3QgZW1hY3NfZ2xvYmFscyBnbG9iYWxzOwogCkBAIC0zOTIsNiArMzg2 LDcgQEAKIHN0YXRpYyB2b2lkIG1hcmtfc3RhY2sgKHZvaWQpOwogc3RhdGljIGludCBsaXZl X3ZlY3Rvcl9wIChzdHJ1Y3QgbWVtX25vZGUgKiwgdm9pZCAqKTsKIHN0YXRpYyBpbnQgbGl2 ZV9idWZmZXJfcCAoc3RydWN0IG1lbV9ub2RlICosIHZvaWQgKik7CitzdGF0aWMgaW50IGxp dmVfc3RyaW5nX2RhdGFfcCAoc3RydWN0IExpc3BfU3RyaW5nICopOwogc3RhdGljIGludCBs aXZlX3N0cmluZ19wIChzdHJ1Y3QgbWVtX25vZGUgKiwgdm9pZCAqKTsKIHN0YXRpYyBpbnQg bGl2ZV9jb25zX3AgKHN0cnVjdCBtZW1fbm9kZSAqLCB2b2lkICopOwogc3RhdGljIGludCBs aXZlX3N5bWJvbF9wIChzdHJ1Y3QgbWVtX25vZGUgKiwgdm9pZCAqKTsKQEAgLTE3NjEsNyAr MTc1Niw4IEBACiAgICBhIHBvaW50ZXIgdG8gdGhlIGB1LmRhdGEnIG1lbWJlciBvZiBpdHMg c2RhdGEgc3RydWN0dXJlOyB0aGUKICAgIHN0cnVjdHVyZSBzdGFydHMgYXQgYSBjb25zdGFu dCBvZmZzZXQgaW4gZnJvbnQgb2YgdGhhdC4gICovCiAKLSNkZWZpbmUgU0RBVEFfT0ZfU1RS SU5HKFMpICgoc3RydWN0IHNkYXRhICopICgoUyktPmRhdGEgLSBTREFUQV9EQVRBX09GRlNF VCkpCisjZGVmaW5lIFNEQVRBX09GX1NUUklORyhTKSAoKFMpLT51LmltbS5pbW1iaXQgPyAo c3RydWN0IHNkYXRhICopIE5VTEwgXAorICA6ICgoc3RydWN0IHNkYXRhICopICgoUyktPnUu ZGF0LmRhdGEgLSBTREFUQV9EQVRBX09GRlNFVCkpKQogCiAKICNpZmRlZiBHQ19DSEVDS19T VFJJTkdfT1ZFUlJVTgpAQCAtMTg0MywyMSArMTgzOSwzNCBAQAogCiBzdGF0aWMgaW50IGNo ZWNrX3N0cmluZ19ieXRlc19jb3VudDsKIAotI2RlZmluZSBDSEVDS19TVFJJTkdfQllURVMo UykJU1RSSU5HX0JZVEVTIChTKQotCi0KLS8qIExpa2UgR0NfU1RSSU5HX0JZVEVTLCBidXQg d2l0aCBkZWJ1Z2dpbmcgY2hlY2suICAqLworI2RlZmluZSBDSEVDS19TVFJJTkdfQllURVMo Uykgc3RyaW5nX2J5dGVzIChTKQogCiBFTUFDU19JTlQKIHN0cmluZ19ieXRlcyAoc3RydWN0 IExpc3BfU3RyaW5nICpzKQogewotICBFTUFDU19JTlQgbmJ5dGVzID0KLSAgICAocy0+c2l6 ZV9ieXRlIDwgMCA/IHMtPnNpemUgJiB+QVJSQVlfTUFSS19GTEFHIDogcy0+c2l6ZV9ieXRl KTsKKyAgRU1BQ1NfSU5UIG5ieXRlczsKIAotICBpZiAoIVBVUkVfUE9JTlRFUl9QIChzKQot ICAgICAgJiYgcy0+ZGF0YQotICAgICAgJiYgbmJ5dGVzICE9IFNEQVRBX05CWVRFUyAoU0RB VEFfT0ZfU1RSSU5HIChzKSkpCi0gICAgYWJvcnQgKCk7CisgIGlmIChzLT51LmltbS5pbW1i aXQpCisgICAgeworICAgICAgbmJ5dGVzID0gcy0+dS5pbW0uc2l6ZV9ieXRlIDwgMCA/CisJ cy0+dS5pbW0uc2l6ZSA6IHMtPnUuaW1tLnNpemVfYnl0ZTsKKyAgICAgIGlmIChuYnl0ZXMg Pj0gU1RSSU5HX0lNTV9NQVgpCisJLyogSW1wb3NzaWJsZSBpbW1lZGlhdGUgc3RyaW5nLiAg Ki8KKwlhYm9ydCAoKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBuYnl0ZXMgPSBz LT51LmRhdC5zaXplX2J5dGUgPCAwID8KKwlzLT51LmRhdC5zaXplIDogcy0+dS5kYXQuc2l6 ZV9ieXRlOworICAgICAgaWYgKG5ieXRlcyA8IFNUUklOR19JTU1fTUFYKQorCS8qIEltcG9z c2libGUgbm9ybWFsIHN0cmluZy4gICovCisJYWJvcnQgKCk7CisgICAgICBpZiAoIVBVUkVf UE9JTlRFUl9QIChzKSAmJgorCSAgcy0+dS5kYXQuZGF0YSAmJgorCSAgbmJ5dGVzICE9IFNE QVRBX05CWVRFUyAoU0RBVEFfT0ZfU1RSSU5HIChzKSkpCisJLyogTm9ybWFsIG5vbi1wdXJl IHN0cmluZyB3aXRoIHNpemUgbWlzbWF0Y2guICAqLworCWFib3J0ICgpOworICAgIH0KICAg cmV0dXJuIG5ieXRlczsKIH0KIApAQCAtMTg4Miw3ICsxODkxLDcgQEAKIAlDSEVDS19TVFJJ TkdfQllURVMgKGZyb20tPnN0cmluZyk7CiAKICAgICAgIGlmIChmcm9tLT5zdHJpbmcpCi0J bmJ5dGVzID0gR0NfU1RSSU5HX0JZVEVTIChmcm9tLT5zdHJpbmcpOworCW5ieXRlcyA9IHN0 cmluZ19ieXRlcyAoZnJvbS0+c3RyaW5nKTsKICAgICAgIGVsc2UKIAluYnl0ZXMgPSBTREFU QV9OQllURVMgKGZyb20pOwogCkBAIC0yMDI4LDggKzIwMzcsOCBAQAogICAvKiBEZXRlcm1p bmUgdGhlIG51bWJlciBvZiBieXRlcyBuZWVkZWQgdG8gc3RvcmUgTkJZVEVTIGJ5dGVzCiAg ICAgIG9mIHN0cmluZyBkYXRhLiAgKi8KICAgbmVlZGVkID0gU0RBVEFfU0laRSAobmJ5dGVz KTsKLSAgb2xkX2RhdGEgPSBzLT5kYXRhID8gU0RBVEFfT0ZfU1RSSU5HIChzKSA6IE5VTEw7 Ci0gIG9sZF9uYnl0ZXMgPSBHQ19TVFJJTkdfQllURVMgKHMpOworICBvbGRfZGF0YSA9IHMt PnUuZGF0LmRhdGEgPyBTREFUQV9PRl9TVFJJTkcgKHMpIDogTlVMTDsKKyAgb2xkX25ieXRl cyA9IHN0cmluZ19ieXRlcyAocyk7CiAKICAgTUFMTE9DX0JMT0NLX0lOUFVUOwogCkBAIC0y MDg4LDEzICsyMDk3LDExIEBACiAgIE1BTExPQ19VTkJMT0NLX0lOUFVUOwogCiAgIGRhdGEt PnN0cmluZyA9IHM7Ci0gIHMtPmRhdGEgPSBTREFUQV9EQVRBIChkYXRhKTsKKyAgcy0+dS5k YXQuZGF0YSA9IFNEQVRBX0RBVEEgKGRhdGEpOwogI2lmZGVmIEdDX0NIRUNLX1NUUklOR19C WVRFUwogICBTREFUQV9OQllURVMgKGRhdGEpID0gbmJ5dGVzOwogI2VuZGlmCi0gIHMtPnNp emUgPSBuY2hhcnM7Ci0gIHMtPnNpemVfYnl0ZSA9IG5ieXRlczsKLSAgcy0+ZGF0YVtuYnl0 ZXNdID0gJ1wwJzsKKyAgcy0+dS5kYXQuZGF0YVtuYnl0ZXNdID0gJ1wwJzsKICNpZmRlZiBH Q19DSEVDS19TVFJJTkdfT1ZFUlJVTgogICBtZW1jcHkgKChjaGFyICopIGRhdGEgKyBuZWVk ZWQsIHN0cmluZ19vdmVycnVuX2Nvb2tpZSwKIAkgIEdDX1NUUklOR19PVkVSUlVOX0NPT0tJ RV9TSVpFKTsKQEAgLTIxMTIsNiArMjExOSwxMiBAQAogICBjb25zaW5nX3NpbmNlX2djICs9 IG5lZWRlZDsKIH0KIAorI2lmZGVmIEdDX1NUUklOR19TVEFUUworCitzdGF0aWMgRU1BQ1Nf SU5UIHRvdGFsX2ltbV9zdHJpbmdzLCB0b3RhbF9kYXRfc3RyaW5ncywgdG90YWxfaW1tX2lu dGVydmFsczsKK3N0YXRpYyBFTUFDU19JTlQgdG90YWxfaW1tX2J5dGVzLCB0b3RhbF9kYXRf Ynl0ZXMsIHRvdGFsX2RhdF9pbnRlcnZhbHM7CisKKyNlbmRpZgogCiAvKiBTd2VlcCBhbmQg Y29tcGFjdCBzdHJpbmdzLiAgKi8KIApAQCAtMjEyNSw2ICsyMTM4LDEyIEBACiAgIHRvdGFs X3N0cmluZ3MgPSB0b3RhbF9mcmVlX3N0cmluZ3MgPSAwOwogICB0b3RhbF9zdHJpbmdfc2l6 ZSA9IDA7CiAKKyNpZmRlZiBHQ19TVFJJTkdfU1RBVFMKKyAgdG90YWxfaW1tX3N0cmluZ3Mg PSB0b3RhbF9kYXRfc3RyaW5ncyA9IDA7CisgIHRvdGFsX2ltbV9ieXRlcyA9IHRvdGFsX2Rh dF9ieXRlcyA9IDA7CisgIHRvdGFsX2ltbV9pbnRlcnZhbHMgPSB0b3RhbF9kYXRfaW50ZXJ2 YWxzID0gMDsKKyNlbmRpZgorCiAgIC8qIFNjYW4gc3RyaW5nc19ibG9ja3MsIGZyZWUgTGlz cF9TdHJpbmdzIHRoYXQgYXJlbid0IG1hcmtlZC4gICovCiAgIGZvciAoYiA9IHN0cmluZ19i bG9ja3M7IGI7IGIgPSBuZXh0KQogICAgIHsKQEAgLTIxMzcsNDkgKzIxNTYsNjQgQEAKIAl7 CiAJICBzdHJ1Y3QgTGlzcF9TdHJpbmcgKnMgPSBiLT5zdHJpbmdzICsgaTsKIAotCSAgaWYg KHMtPmRhdGEpCisJICBpZiAoU1RSSU5HX01BUktFRF9QIChzKSkKKwkgICAgewkgICAgICAK KwkgICAgICAvKiBTdHJpbmcgaXMgbGl2ZTsgdW5tYXJrIGl0IGFuZCBpdHMgaW50ZXJ2YWxz LiAgKi8KKwkgICAgICBVTk1BUktfU1RSSU5HIChzKTsKKworCSAgICAgIGlmICghTlVMTF9J TlRFUlZBTF9QIChzLT5pbnRlcnZhbHMpKQorCQlVTk1BUktfQkFMQU5DRV9JTlRFUlZBTFMg KHMtPmludGVydmFscyk7CisKKwkgICAgICArK3RvdGFsX3N0cmluZ3M7CisJICAgICAgdG90 YWxfc3RyaW5nX3NpemUgKz0gc3RyaW5nX2J5dGVzIChzKTsKKyNpZmRlZiBHQ19TVFJJTkdf U1RBVFMKKwkgICAgICBpZiAocy0+dS5pbW0uaW1tYml0KQorCQl7CisJCSAgdG90YWxfaW1t X3N0cmluZ3MrKzsKKwkJICB0b3RhbF9pbW1fYnl0ZXMgKz0gc3RyaW5nX2J5dGVzIChzKTsK KwkJICBpZiAoIU5VTExfSU5URVJWQUxfUCAocy0+aW50ZXJ2YWxzKSkKKwkJICAgIHRvdGFs X2ltbV9pbnRlcnZhbHMrKzsKKwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIHRvdGFsX2Rh dF9zdHJpbmdzKys7CisJCSAgdG90YWxfZGF0X2J5dGVzICs9IHN0cmluZ19ieXRlcyAocyk7 CisJCSAgaWYgKCFOVUxMX0lOVEVSVkFMX1AgKHMtPmludGVydmFscykpCisJCSAgICB0b3Rh bF9kYXRfaW50ZXJ2YWxzKys7CisJCX0KKyNlbmRpZiAvKiBHQ19TVFJJTkdfU1RBVFMgKi8K KwkgICAgfQorCSAgZWxzZQogCSAgICB7Ci0JICAgICAgLyogU3RyaW5nIHdhcyBub3Qgb24g ZnJlZS1saXN0IGJlZm9yZS4gICovCi0JICAgICAgaWYgKFNUUklOR19NQVJLRURfUCAocykp Ci0JCXsKLQkJICAvKiBTdHJpbmcgaXMgbGl2ZTsgdW5tYXJrIGl0IGFuZCBpdHMgaW50ZXJ2 YWxzLiAgKi8KLQkJICBVTk1BUktfU1RSSU5HIChzKTsKLQotCQkgIGlmICghTlVMTF9JTlRF UlZBTF9QIChzLT5pbnRlcnZhbHMpKQotCQkgICAgVU5NQVJLX0JBTEFOQ0VfSU5URVJWQUxT IChzLT5pbnRlcnZhbHMpOwotCi0JCSAgKyt0b3RhbF9zdHJpbmdzOwotCQkgIHRvdGFsX3N0 cmluZ19zaXplICs9IFNUUklOR19CWVRFUyAocyk7Ci0JCX0KKwkgICAgICBpZiAocy0+dS5p bW0uaW1tYml0KQorCQkvKiBGaWxsIGRhdGEgd2l0aCBzcGVjaWFsIHBhdHRlcm4uIFVzZWQg YnkKKwkJICAgR0MgdG8gZmluZCBkZWFkIGltbWVkaWF0ZSBzdHJpbmdzLiAgKi8KKwkJbWVt c2V0IChzLT51LmltbS5kYXRhLCAweGZmLCBTVFJJTkdfSU1NX01BWCk7CiAJICAgICAgZWxz ZQogCQl7Ci0JCSAgLyogU3RyaW5nIGlzIGRlYWQuICBQdXQgaXQgb24gdGhlIGZyZWUtbGlz dC4gICovCi0JCSAgc3RydWN0IHNkYXRhICpkYXRhID0gU0RBVEFfT0ZfU1RSSU5HIChzKTsK KwkJICBpZiAocy0+dS5kYXQuZGF0YSkKKwkJICAgIHsKKwkJICAgICAgLyogU3RyaW5nIGlz IGRlYWQuICBQdXQgaXQgb24gdGhlIGZyZWUtbGlzdC4gICovCisJCSAgICAgIHN0cnVjdCBz ZGF0YSAqZGF0YSA9IFNEQVRBX09GX1NUUklORyAocyk7CiAKLQkJICAvKiBTYXZlIHRoZSBz aXplIG9mIFMgaW4gaXRzIHNkYXRhIHNvIHRoYXQgd2Uga25vdwotCQkgICAgIGhvdyBsYXJn ZSB0aGF0IGlzLiAgUmVzZXQgdGhlIHNkYXRhJ3Mgc3RyaW5nCi0JCSAgICAgYmFjay1wb2lu dGVyIHNvIHRoYXQgd2Uga25vdyBpdCdzIGZyZWUuICAqLworCQkgICAgICAvKiBTYXZlIHRo ZSBzaXplIG9mIFMgaW4gaXRzIHNkYXRhIHNvIHRoYXQgd2Uga25vdworCQkJIGhvdyBsYXJn ZSB0aGF0IGlzLiAgUmVzZXQgdGhlIHNkYXRhJ3Mgc3RyaW5nCisJCQkgYmFjay1wb2ludGVy IHNvIHRoYXQgd2Uga25vdyBpdCdzIGZyZWUuICAqLwogI2lmZGVmIEdDX0NIRUNLX1NUUklO R19CWVRFUwotCQkgIGlmIChHQ19TVFJJTkdfQllURVMgKHMpICE9IFNEQVRBX05CWVRFUyAo ZGF0YSkpCi0JCSAgICBhYm9ydCAoKTsKKwkJICAgICAgaWYgKHN0cmluZ19ieXRlcyAocykg IT0gU0RBVEFfTkJZVEVTIChkYXRhKSkKKwkJCWFib3J0ICgpOwogI2Vsc2UKLQkJICBkYXRh LT51Lm5ieXRlcyA9IEdDX1NUUklOR19CWVRFUyAocyk7CisJCSAgICAgIGRhdGEtPnUubmJ5 dGVzID0gc3RyaW5nX2J5dGVzIChzKTsKICNlbmRpZgotCQkgIGRhdGEtPnN0cmluZyA9IE5V TEw7Ci0KLQkJICAvKiBSZXNldCB0aGUgc3RyaW5ncydzIGBkYXRhJyBtZW1iZXIgc28gdGhh dCB3ZQotCQkgICAgIGtub3cgaXQncyBmcmVlLiAgKi8KLQkJICBzLT5kYXRhID0gTlVMTDsK LQotCQkgIC8qIFB1dCB0aGUgc3RyaW5nIG9uIHRoZSBmcmVlLWxpc3QuICAqLwotCQkgIE5F WFRfRlJFRV9MSVNQX1NUUklORyAocykgPSBzdHJpbmdfZnJlZV9saXN0OwotCQkgIHN0cmlu Z19mcmVlX2xpc3QgPSBzOwotCQkgICsrbmZyZWU7CisJCSAgICAgIGRhdGEtPnN0cmluZyA9 IE5VTEw7CisKKwkJICAgICAgLyogUmVzZXQgdGhlIHN0cmluZ3MncyBgZGF0YScgbWVtYmVy IHNvIHRoYXQgd2UKKwkJCSBrbm93IGl0J3MgZnJlZS4gICovCisJCSAgICAgIHMtPnUuZGF0 LmRhdGEgPSBOVUxMOworCQkgICAgfQogCQl9Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewot CSAgICAgIC8qIFMgd2FzIG9uIHRoZSBmcmVlLWxpc3QgYmVmb3JlLiAgUHV0IGl0IHRoZXJl IGFnYWluLiAgKi8KKworCSAgICAgIC8qIFB1dCB0aGUgc3RyaW5nIG9uIHRoZSBmcmVlLWxp c3QuICAqLwogCSAgICAgIE5FWFRfRlJFRV9MSVNQX1NUUklORyAocykgPSBzdHJpbmdfZnJl ZV9saXN0OwogCSAgICAgIHN0cmluZ19mcmVlX2xpc3QgPSBzOwogCSAgICAgICsrbmZyZWU7 CkBAIC0yMjcxLDEyICsyMzA1LDEyIEBACiAJICAvKiBDaGVjayB0aGF0IHRoZSBzdHJpbmcg c2l6ZSByZWNvcmRlZCBpbiB0aGUgc3RyaW5nIGlzIHRoZQogCSAgICAgc2FtZSBhcyB0aGUg b25lIHJlY29yZGVkIGluIHRoZSBzZGF0YSBzdHJ1Y3R1cmUuICovCiAJICBpZiAoZnJvbS0+ c3RyaW5nCi0JICAgICAgJiYgR0NfU1RSSU5HX0JZVEVTIChmcm9tLT5zdHJpbmcpICE9IFNE QVRBX05CWVRFUyAoZnJvbSkpCisJICAgICAgJiYgc3RyaW5nX2J5dGVzIChmcm9tLT5zdHJp bmcpICE9IFNEQVRBX05CWVRFUyAoZnJvbSkpCiAJICAgIGFib3J0ICgpOwogI2VuZGlmIC8q IEdDX0NIRUNLX1NUUklOR19CWVRFUyAqLwogCiAJICBpZiAoZnJvbS0+c3RyaW5nKQotCSAg ICBuYnl0ZXMgPSBHQ19TVFJJTkdfQllURVMgKGZyb20tPnN0cmluZyk7CisJICAgIG5ieXRl cyA9IHN0cmluZ19ieXRlcyAoZnJvbS0+c3RyaW5nKTsKIAkgIGVsc2UKIAkgICAgbmJ5dGVz ID0gU0RBVEFfTkJZVEVTIChmcm9tKTsKIApAQCAtMjMxMiw3ICsyMzQ2LDcgQEAKIAkJewog CQkgIHhhc3NlcnQgKHRiICE9IGIgfHwgdG8gPCBmcm9tKTsKIAkJICBtZW1tb3ZlICh0bywg ZnJvbSwgbmJ5dGVzICsgR0NfU1RSSU5HX0VYVFJBKTsKLQkJICB0by0+c3RyaW5nLT5kYXRh ID0gU0RBVEFfREFUQSAodG8pOworCQkgIHRvLT5zdHJpbmctPnUuZGF0LmRhdGEgPSBTREFU QV9EQVRBICh0byk7CiAJCX0KIAogCSAgICAgIC8qIEFkdmFuY2UgcGFzdCB0aGUgc2RhdGEg d2UgY29waWVkIHRvLiAgKi8KQEAgLTI1NjEsMTMgKzI1OTUsMjQgQEAKICAgICByZXR1cm4g ZW1wdHlfbXVsdGlieXRlX3N0cmluZzsKIAogICBzID0gYWxsb2NhdGVfc3RyaW5nICgpOwot ICBhbGxvY2F0ZV9zdHJpbmdfZGF0YSAocywgbmNoYXJzLCBuYnl0ZXMpOworICBpZiAobmJ5 dGVzIDwgU1RSSU5HX0lNTV9NQVgpCisgICAgeworICAgICAgcy0+dS5pbW0uaW1tYml0ID0g MTsKKyAgICAgIHMtPnUuaW1tLnNpemUgPSBuY2hhcnM7CisgICAgICBzLT51LmltbS5zaXpl X2J5dGUgPSBuYnl0ZXM7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcy0+dS5pbW0u aW1tYml0ID0gMDsKKyAgICAgIHMtPnUuZGF0LnNpemUgPSBuY2hhcnM7CisgICAgICBzLT51 LmRhdC5zaXplX2J5dGUgPSBuYnl0ZXM7CisgICAgICBhbGxvY2F0ZV9zdHJpbmdfZGF0YSAo cywgbmNoYXJzLCBuYnl0ZXMpOworICAgIH0KICAgWFNFVFNUUklORyAoc3RyaW5nLCBzKTsK ICAgc3RyaW5nX2NoYXJzX2NvbnNlZCArPSBuYnl0ZXM7CiAgIHJldHVybiBzdHJpbmc7CiB9 CiAKLQogDAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkgICBGbG9hdCBBbGxvY2F0aW9uCkBA IC0zOTM2LDYgKzM5ODEsMjIgQEAKICAgeC0+Y29sb3IgPSBNRU1fQkxBQ0s7CiB9CiAKKy8q IE5vbi16ZXJvIGlmIGRhdGEgb2YgUyBpcyB2YWxpZC4gICovCisKK3N0YXRpYyBpbmxpbmUg aW50CitsaXZlX3N0cmluZ19kYXRhX3AgKHN0cnVjdCBMaXNwX1N0cmluZyAqcykKK3sKKyAg aWYgKHMtPnUuaW1tLmltbWJpdCkKKyAgICB7CisgICAgICB1bnNpZ25lZCBjaGFyICpwOwor CisgICAgICBmb3IgKHAgPSBzLT51LmltbS5kYXRhOyBwIDwgcy0+dS5pbW0uZGF0YSArIFNU UklOR19JTU1fTUFYOyBwKyspCisJaWYgKCpwICE9IDB4ZmYpCisJICByZXR1cm4gMTsKKyAg ICAgIHJldHVybiAwOworICAgIH0KKyAgcmV0dXJuIHMtPnUuZGF0LmRhdGEgIT0gTlVMTDsK K30KIAogLyogVmFsdWUgaXMgbm9uLXplcm8gaWYgUCBpcyBhIHBvaW50ZXIgdG8gYSBsaXZl IExpc3Agc3RyaW5nIG9uCiAgICB0aGUgaGVhcC4gIE0gaXMgYSBwb2ludGVyIHRvIHRoZSBt ZW1fYmxvY2sgZm9yIFAuICAqLwpAQCAtMzk1Myw3ICs0MDE0LDcgQEAKICAgICAgIHJldHVy biAob2Zmc2V0ID49IDAKIAkgICAgICAmJiBvZmZzZXQgJSBzaXplb2YgYi0+c3RyaW5nc1sw XSA9PSAwCiAJICAgICAgJiYgb2Zmc2V0IDwgKFNUUklOR19CTE9DS19TSVpFICogc2l6ZW9m IGItPnN0cmluZ3NbMF0pCi0JICAgICAgJiYgKChzdHJ1Y3QgTGlzcF9TdHJpbmcgKikgcCkt PmRhdGEgIT0gTlVMTCk7CisJICAgICAgJiYgbGl2ZV9zdHJpbmdfZGF0YV9wICgoc3RydWN0 IExpc3BfU3RyaW5nICopIHApKTsKICAgICB9CiAgIGVsc2UKICAgICByZXR1cm4gMDsKQEAg LTQ4NjgsMTUgKzQ5MjksMjkgQEAKICAgc3RydWN0IExpc3BfU3RyaW5nICpzOwogCiAgIHMg PSAoc3RydWN0IExpc3BfU3RyaW5nICopIHB1cmVfYWxsb2MgKHNpemVvZiAqcywgTGlzcF9T dHJpbmcpOwotICBzLT5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZmluZF9zdHJpbmdfZGF0 YV9pbl9wdXJlIChkYXRhLCBuYnl0ZXMpOwotICBpZiAocy0+ZGF0YSA9PSBOVUxMKQotICAg IHsKLSAgICAgIHMtPmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBwdXJlX2FsbG9jIChuYnl0 ZXMgKyAxLCAtMSk7Ci0gICAgICBtZW1jcHkgKHMtPmRhdGEsIGRhdGEsIG5ieXRlcyk7Ci0g ICAgICBzLT5kYXRhW25ieXRlc10gPSAnXDAnOwotICAgIH0KLSAgcy0+c2l6ZSA9IG5jaGFy czsKLSAgcy0+c2l6ZV9ieXRlID0gbXVsdGlieXRlID8gbmJ5dGVzIDogLTE7CisKKyAgaWYg KG5ieXRlcyA8IFNUUklOR19JTU1fTUFYKQorICAgIHsKKyAgICAgIG1lbWNweSAocy0+dS5p bW0uZGF0YSwgZGF0YSwgbmJ5dGVzKTsKKyAgICAgIHMtPnUuaW1tLmRhdGFbbmJ5dGVzXSA9 ICdcMCc7CisgICAgICBzLT51LmltbS5pbW1iaXQgPSAxOworICAgICAgcy0+dS5pbW0uc2l6 ZSA9IG5jaGFyczsKKyAgICAgIHMtPnUuaW1tLnNpemVfYnl0ZSA9IG11bHRpYnl0ZSA/IG5i eXRlcyA6IC0xOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHMtPnUuZGF0LmRhdGEg PSAodW5zaWduZWQgY2hhciAqKSBmaW5kX3N0cmluZ19kYXRhX2luX3B1cmUgKGRhdGEsIG5i eXRlcyk7CisgICAgICBpZiAocy0+dS5kYXQuZGF0YSA9PSBOVUxMKQorCXsKKwkgIHMtPnUu ZGF0LmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBwdXJlX2FsbG9jIChuYnl0ZXMgKyAxLCAt MSk7CisJICBtZW1jcHkgKHMtPnUuZGF0LmRhdGEsIGRhdGEsIG5ieXRlcyk7CisJICBzLT51 LmRhdC5kYXRhW25ieXRlc10gPSAnXDAnOworCX0KKyAgICAgIHMtPnUuaW1tLmltbWJpdCA9 IDA7CisgICAgICBzLT51LmRhdC5zaXplID0gbmNoYXJzOworICAgICAgcy0+dS5kYXQuc2l6 ZV9ieXRlID0gbXVsdGlieXRlID8gbmJ5dGVzIDogLTE7CisgICAgfQorCiAgIHMtPmludGVy dmFscyA9IE5VTExfSU5URVJWQUw7CiAgIFhTRVRTVFJJTkcgKHN0cmluZywgcyk7CiAgIHJl dHVybiBzdHJpbmc7CkBAIC00ODkzLDkgKzQ5NjgsMjMgQEAKICAgRU1BQ1NfSU5UIG5jaGFy cyA9IHN0cmxlbiAoZGF0YSk7CiAKICAgcyA9IChzdHJ1Y3QgTGlzcF9TdHJpbmcgKikgcHVy ZV9hbGxvYyAoc2l6ZW9mICpzLCBMaXNwX1N0cmluZyk7Ci0gIHMtPnNpemUgPSBuY2hhcnM7 Ci0gIHMtPnNpemVfYnl0ZSA9IC0xOwotICBzLT5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikg ZGF0YTsKKworICBpZiAobmNoYXJzIDwgU1RSSU5HX0lNTV9NQVgpCisgICAgeworICAgICAg bWVtY3B5IChzLT51LmltbS5kYXRhLCBkYXRhLCBuY2hhcnMpOworICAgICAgcy0+dS5pbW0u ZGF0YVtuY2hhcnNdID0gJ1wwJzsKKyAgICAgIHMtPnUuaW1tLmltbWJpdCA9IDE7CisgICAg ICBzLT51LmltbS5zaXplID0gbmNoYXJzOworICAgICAgcy0+dS5pbW0uc2l6ZV9ieXRlID0g LTE7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcy0+dS5kYXQuZGF0YSA9ICh1bnNp Z25lZCBjaGFyICopIGRhdGE7CisgICAgICBzLT51LmltbS5pbW1iaXQgPSAwOworICAgICAg cy0+dS5kYXQuc2l6ZSA9IG5jaGFyczsKKyAgICAgIHMtPnUuZGF0LnNpemVfYnl0ZSA9IC0x OworICAgIH0KKwogICBzLT5pbnRlcnZhbHMgPSBOVUxMX0lOVEVSVkFMOwogICBYU0VUU1RS SU5HIChzdHJpbmcsIHMpOwogICByZXR1cm4gc3RyaW5nOwpAQCAtNjMxOCw2ICs2NDA3LDM0 IEBACiAgIHJldHVybiBGbGlzdCAoOCwgY29uc2VkKTsKIH0KIAorI2lmZGVmIEdDX1NUUklO R19TVEFUUworCitERUZVTiAoInN0cmluZy1zdGF0cyIsIEZzdHJpbmdfc3RhdHMsIFNzdHJp bmdfc3RhdHMsIDAsIDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gYSBsaXN0IG9mIGNv dW50ZXJzIHRoYXQgbWVhc3VyZXMgaG93IG11Y2gKK3N0cmluZ3Mgb2YgYSBwYXJ0aWN1bGFy IGludGVybmFsIHN0cnVjdHVyZSBhcmUgYWxpdmUgYWZ0ZXIgbGFzdAorZ2FyYmFnZSBjb2xs ZWN0aW9uLCBhbmQgaG93IG1hbnkgYnl0ZXMgYXJlIGluIHRoZW0uCitUaGUgZWxlbWVudHMg b2YgdGhlIHZhbHVlIGFyZSBhcmUgYXMgZm9sbG93czoKKyAgKElNTS1TVFJJTkdTIElNTS1C WVRFUyBJTU0tSU5URVJWQUxTIERBVC1TVFJJTkdTIERBVC1CWVRFUyBEQVQtSU5URVJWQUxT KQord2hlcmUgSU1NLVNUUklOR1MgaXMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgc3RyaW5n cywgSU1NLUJZVEVTIGlzIHRoZSB0b3RhbAorbnVtYmVyIG9mIGJ5dGVzIGluIHRoZW0sIGFu ZCBJTU0tSU5URVJWQUxTIGlzIHRoZSBudW1iZXIgb2YgaW1tZWRpYXRlIHN0cmluZword2l0 aCBub24tbmlsIHRleHQgcHJvcGVydGllcy4gVGhlIHJlc3QgdGhyZWUgbnVtYmVycyBoYXMg dGhlIHNhbWUgbWVhbmluZworZm9yIG5vcm1hbCBzdHJpbmdzLCByZXNwZWN0aXZlbHkuICAq LykKKyAgKHZvaWQpCit7CisgIExpc3BfT2JqZWN0IGRhdGFbNl07CisKKyAgZGF0YVswXSA9 IG1ha2VfbnVtYmVyIChtaW4gKE1PU1RfUE9TSVRJVkVfRklYTlVNLCB0b3RhbF9pbW1fc3Ry aW5ncykpOworICBkYXRhWzFdID0gbWFrZV9udW1iZXIgKG1pbiAoTU9TVF9QT1NJVElWRV9G SVhOVU0sIHRvdGFsX2ltbV9ieXRlcykpOworICBkYXRhWzJdID0gbWFrZV9udW1iZXIgKG1p biAoTU9TVF9QT1NJVElWRV9GSVhOVU0sIHRvdGFsX2ltbV9pbnRlcnZhbHMpKTsKKyAgZGF0 YVszXSA9IG1ha2VfbnVtYmVyIChtaW4gKE1PU1RfUE9TSVRJVkVfRklYTlVNLCB0b3RhbF9k YXRfc3RyaW5ncykpOworICBkYXRhWzRdID0gbWFrZV9udW1iZXIgKG1pbiAoTU9TVF9QT1NJ VElWRV9GSVhOVU0sIHRvdGFsX2RhdF9ieXRlcykpOworICBkYXRhWzVdID0gbWFrZV9udW1i ZXIgKG1pbiAoTU9TVF9QT1NJVElWRV9GSVhOVU0sIHRvdGFsX2RhdF9pbnRlcnZhbHMpKTsK KworICByZXR1cm4gRmxpc3QgKDYsIGRhdGEpOworfQorCisjZW5kaWYgLyogR0NfU1RSSU5H X1NUQVRTICovCisKIC8qIEZpbmQgYXQgbW9zdCBGSU5EX01BWCBzeW1ib2xzIHdoaWNoIGhh dmUgT0JKIGFzIHRoZWlyIHZhbHVlIG9yCiAgICBmdW5jdGlvbi4gIFRoaXMgaXMgdXNlZCBp biBnZGJpbml0J3MgYHh3aGljaHN5bWJvbHMnIGNvbW1hbmQuICAqLwogCkBAIC02NTQ2LDcg KzY2NjMsOSBAQAogICBkZWZzdWJyICgmU2dhcmJhZ2VfY29sbGVjdCk7CiAgIGRlZnN1YnIg KCZTbWVtb3J5X2xpbWl0KTsKICAgZGVmc3ViciAoJlNtZW1vcnlfdXNlX2NvdW50cyk7Ci0K KyNpZmRlZiBHQ19TVFJJTkdfU1RBVFMKKyAgZGVmc3ViciAoJlNzdHJpbmdfc3RhdHMpOwor I2VuZGlmCiAjaWYgR0NfTUFSS19TVEFDSyA9PSBHQ19VU0VfR0NQUk9TX0NIRUNLX1pPTUJJ RVMKICAgZGVmc3ViciAoJlNnY19zdGF0dXMpOwogI2VuZGlmCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3JjL2Zucy5jJwotLS0gc3JjL2Zucy5jCTIwMTItMDUtMjEgMTU6MzY6NTQgKzAwMDAK KysrIHNyYy9mbnMuYwkyMDEyLTA1LTIyIDA4OjI5OjA2ICswMDAwCkBAIC0yMTcyLDggKzIx NzIsOCBAQAogCSAgaW50IGxlbiA9IENIQVJfU1RSSU5HIChjaGFydmFsLCBzdHIpOwogCSAg RU1BQ1NfSU5UIHNpemVfYnl0ZSA9IFNCWVRFUyAoYXJyYXkpOwogCi0JICBpZiAoSU5UX01V TFRJUExZX09WRVJGTE9XIChTQ0hBUlMgKGFycmF5KSwgbGVuKQotCSAgICAgIHx8IFNDSEFS UyAoYXJyYXkpICogbGVuICE9IHNpemVfYnl0ZSkKKwkgIGlmIChJTlRfTVVMVElQTFlfT1ZF UkZMT1cgKHNpemUsIGxlbikKKwkgICAgICB8fCBzaXplICogbGVuICE9IHNpemVfYnl0ZSkK IAkgICAgZXJyb3IgKCJBdHRlbXB0IHRvIGNoYW5nZSBieXRlIGxlbmd0aCBvZiBhIHN0cmlu ZyIpOwogCSAgZm9yIChpZHggPSAwOyBpZHggPCBzaXplX2J5dGU7IGlkeCsrKQogCSAgICAq cCsrID0gc3RyW2lkeCAlIGxlbl07Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2xpc3AuaCcK LS0tIHNyYy9saXNwLmgJMjAxMi0wNS0yMSAxNTozNjo1NCArMDAwMAorKysgc3JjL2xpc3Au aAkyMDEyLTA1LTIyIDA4OjI5OjA2ICswMDAwCkBAIC03MjcsMTcgKzcyNywyMyBAQAogCiAv KiBDb252ZW5pZW5jZSBtYWNyb3MgZm9yIGRlYWxpbmcgd2l0aCBMaXNwIHN0cmluZ3MuICAq LwogCi0jZGVmaW5lIFNEQVRBKHN0cmluZykJCShYU1RSSU5HIChzdHJpbmcpLT5kYXRhICsg MCkKKyNkZWZpbmUgU0RBVEEoc3RyaW5nKQkJKFhTVFJJTkcgKHN0cmluZyktPnUuaW1tLmlt bWJpdCA/IFwKKwkJCQkgKFhTVFJJTkcgKHN0cmluZyktPnUuaW1tLmRhdGEgKyAwKSA6IFwK KwkJCQkgKFhTVFJJTkcgKHN0cmluZyktPnUuZGF0LmRhdGEgKyAwKSkKICNkZWZpbmUgU1JF RihzdHJpbmcsIGluZGV4KQkoU0RBVEEgKHN0cmluZylbaW5kZXhdICsgMCkKICNkZWZpbmUg U1NFVChzdHJpbmcsIGluZGV4LCBuZXcpIChTREFUQSAoc3RyaW5nKVtpbmRleF0gPSAobmV3 KSkKLSNkZWZpbmUgU0NIQVJTKHN0cmluZykJCShYU1RSSU5HIChzdHJpbmcpLT5zaXplICsg MCkKLSNkZWZpbmUgU0JZVEVTKHN0cmluZykJCShTVFJJTkdfQllURVMgKFhTVFJJTkcgKHN0 cmluZykpICsgMCkKKyNkZWZpbmUgU0NIQVJTKHN0cmluZykJCShYU1RSSU5HIChzdHJpbmcp LT51LmltbS5pbW1iaXQgPyBcCisJCQkJIChYU1RSSU5HIChzdHJpbmcpLT51LmltbS5zaXpl ICsgMCkgOiBcCisJCQkJIChYU1RSSU5HIChzdHJpbmcpLT51LmRhdC5zaXplICsgMCkpCisj ZGVmaW5lIFNCWVRFUyhzdHJpbmcpCQkoc3RyaW5nX2J5dGVzIChYU1RSSU5HIChzdHJpbmcp KSArIDApCiAKIC8qIEF2b2lkICJkaWZmZXIgaW4gc2lnbiIgd2FybmluZ3MuICAqLwogI2Rl ZmluZSBTU0RBVEEoeCkgICgoY2hhciAqKSBTREFUQSAoeCkpCiAKICNkZWZpbmUgU1RSSU5H X1NFVF9DSEFSUyhzdHJpbmcsIG5ld3NpemUpIFwKLSAgICAoWFNUUklORyAoc3RyaW5nKS0+ c2l6ZSA9IChuZXdzaXplKSkKKyAgKFhTVFJJTkcgKHN0cmluZyktPnUuaW1tLmltbWJpdCA/ IFwKKyAgIChYU1RSSU5HIChzdHJpbmcpLT51LmltbS5zaXplID0gKG5ld3NpemUpKSA6IFwK KyAgIChYU1RSSU5HIChzdHJpbmcpLT51LmRhdC5zaXplID0gKG5ld3NpemUpKSkKIAogI2Rl ZmluZSBTVFJJTkdfQ09QWUlOKHN0cmluZywgaW5kZXgsIG5ldywgY291bnQpIFwKICAgICBt ZW1jcHkgKFNEQVRBIChzdHJpbmcpICsgaW5kZXgsIG5ldywgY291bnQpCkBAIC04MjcsMjQg KzgzMywxMiBAQAogI2RlZmluZSBDRFJfU0FGRShjKQkJCQlcCiAgIChDT05TUCAoKGMpKSA/ IFhDRFIgKChjKSkgOiBRbmlsKQogCisjZGVmaW5lIFNUUklOR19TSVpFX0JZVEUoc3RyaW5n KSAoWFNUUklORyAoc3RyaW5nKS0+dS5pbW0uaW1tYml0ID8gXAorCQkJCSAgWFNUUklORyAo c3RyaW5nKS0+dS5pbW0uc2l6ZV9ieXRlIDogXAorCQkJCSAgWFNUUklORyAoc3RyaW5nKS0+ dS5kYXQuc2l6ZV9ieXRlKQorCiAvKiBOb256ZXJvIGlmIFNUUiBpcyBhIG11bHRpYnl0ZSBz dHJpbmcuICAqLwotI2RlZmluZSBTVFJJTkdfTVVMVElCWVRFKFNUUikgIFwKLSAgKFhTVFJJ TkcgKFNUUiktPnNpemVfYnl0ZSA+PSAwKQotCi0vKiBSZXR1cm4gdGhlIGxlbmd0aCBpbiBi eXRlcyBvZiBTVFIuICAqLwotCi0jaWZkZWYgR0NfQ0hFQ0tfU1RSSU5HX0JZVEVTCi0KLXN0 cnVjdCBMaXNwX1N0cmluZzsKLWV4dGVybiBFTUFDU19JTlQgc3RyaW5nX2J5dGVzIChzdHJ1 Y3QgTGlzcF9TdHJpbmcgKik7Ci0jZGVmaW5lIFNUUklOR19CWVRFUyhTKSBzdHJpbmdfYnl0 ZXMgKChTKSkKLQotI2Vsc2UgLyogbm90IEdDX0NIRUNLX1NUUklOR19CWVRFUyAqLwotCi0j ZGVmaW5lIFNUUklOR19CWVRFUyhTVFIpICBcCi0gICgoU1RSKS0+c2l6ZV9ieXRlIDwgMCA/ IChTVFIpLT5zaXplIDogKFNUUiktPnNpemVfYnl0ZSkKLQotI2VuZGlmIC8qIG5vdCBHQ19D SEVDS19TVFJJTkdfQllURVMgKi8KKyNkZWZpbmUgU1RSSU5HX01VTFRJQllURShzdHJpbmcp IChTVFJJTkdfU0laRV9CWVRFIChzdHJpbmcpID4gMCkKIAogLyogQW4gdXBwZXIgYm91bmQg b24gdGhlIG51bWJlciBvZiBieXRlcyBpbiBhIExpc3Agc3RyaW5nLCBub3QKICAgIGNvdW50 aW5nIHRoZSB0ZXJtaW5hdGluZyBudWxsLiAgVGhpcyBhIHRpZ2h0IGVub3VnaCBib3VuZCB0 bwpAQCAtODYwLDE4ICs4NTQsMjggQEAKICNkZWZpbmUgU1RSSU5HX0JZVEVTX0JPVU5EICBc CiAgIG1pbiAoTU9TVF9QT1NJVElWRV9GSVhOVU0sIChwdHJkaWZmX3QpIG1pbiAoU0laRV9N QVgsIFBUUkRJRkZfTUFYKSAtIDEpCiAKKy8qIE1heGltdW0gYW1vdW50IG9mIGJ5dGVzLCBp bmNsdWRpbmcgJ1wwJywgaW4gYW4gaW1tZWRpYXRlIHN0cmluZy4KKyAgIFRoaXMgYXNzdW1l cyB0aGF0IHNpemVvZiAoRU1BQ1NfSU5UKSBpcyBlcXVhbCB0byBzaXplb2YgKHZvaWQgKiAp LiAgKi8KKyNkZWZpbmUgU1RSSU5HX0lNTV9NQVggKDMgKiBzaXplb2YgKEVNQUNTX0lOVCkg LSAyKQorCiAvKiBNYXJrIFNUUiBhcyBhIHVuaWJ5dGUgc3RyaW5nLiAgKi8KICNkZWZpbmUg U1RSSU5HX1NFVF9VTklCWVRFKFNUUikgIFwKICAgZG8geyBpZiAoRVEgKFNUUiwgZW1wdHlf bXVsdGlieXRlX3N0cmluZykpICBcCiAgICAgICAoU1RSKSA9IGVtcHR5X3VuaWJ5dGVfc3Ry aW5nOyAgXAotICAgIGVsc2UgWFNUUklORyAoU1RSKS0+c2l6ZV9ieXRlID0gLTE7IH0gd2hp bGUgKDApCisgICAgZWxzZSBpZiAoWFNUUklORyAoU1RSKS0+dS5pbW0uaW1tYml0KSBcCisg ICAgICBYU1RSSU5HIChTVFIpLT51LmltbS5zaXplX2J5dGUgPSAtMTsgXAorICAgIGVsc2Ug XAorICAgICAgWFNUUklORyAoU1RSKS0+dS5kYXQuc2l6ZV9ieXRlID0gLTE7IH0gd2hpbGUg KDApCiAKIC8qIE1hcmsgU1RSIGFzIGEgbXVsdGlieXRlIHN0cmluZy4gIEFzc3VyZSB0aGF0 IFNUUiBjb250YWlucyBvbmx5CiAgICBBU0NJSSBjaGFyYWN0ZXJzIGluIGFkdmFuY2UuICAq LwogI2RlZmluZSBTVFJJTkdfU0VUX01VTFRJQllURShTVFIpICBcCiAgIGRvIHsgaWYgKEVR IChTVFIsIGVtcHR5X3VuaWJ5dGVfc3RyaW5nKSkgIFwKICAgICAgIChTVFIpID0gZW1wdHlf bXVsdGlieXRlX3N0cmluZzsgIFwKLSAgICBlbHNlIFhTVFJJTkcgKFNUUiktPnNpemVfYnl0 ZSA9IFhTVFJJTkcgKFNUUiktPnNpemU7IH0gd2hpbGUgKDApCisgICAgZWxzZSBpZiAoWFNU UklORyAoU1RSKS0+dS5pbW0uaW1tYml0KSBcCisgICAgICBYU1RSSU5HIChTVFIpLT51Lmlt bS5zaXplX2J5dGUgPSBYU1RSSU5HIChTVFIpLT51LmltbS5zaXplOyBcCisgICAgZWxzZSBc CisgICAgICBYU1RSSU5HIChTVFIpLT51LmRhdC5zaXplX2J5dGUgPSBYU1RSSU5HIChTVFIp LT51LmRhdC5zaXplOyB9IHdoaWxlICgwKQogCiAvKiBHZXQgdGV4dCBwcm9wZXJ0aWVzLiAg Ki8KICNkZWZpbmUgU1RSSU5HX0lOVEVSVkFMUyhTVFIpICAoWFNUUklORyAoU1RSKS0+aW50 ZXJ2YWxzICsgMCkKQEAgLTg3OSwxNiArODgzLDU4IEBACiAvKiBTZXQgdGV4dCBwcm9wZXJ0 aWVzLiAgKi8KICNkZWZpbmUgU1RSSU5HX1NFVF9JTlRFUlZBTFMoU1RSLCBJTlQpIChYU1RS SU5HIChTVFIpLT5pbnRlcnZhbHMgPSAoSU5UKSkKIAotLyogSW4gYSBzdHJpbmcgb3IgdmVj dG9yLCB0aGUgc2lnbiBiaXQgb2YgdGhlIGBzaXplJyBpcyB0aGUgZ2MgbWFyayBiaXQgKi8K LQogc3RydWN0IExpc3BfU3RyaW5nCiAgIHsKLSAgICBFTUFDU19JTlQgc2l6ZTsKLSAgICBF TUFDU19JTlQgc2l6ZV9ieXRlOwotICAgIElOVEVSVkFMIGludGVydmFsczsJCS8qIHRleHQg cHJvcGVydGllcyBpbiB0aGlzIHN0cmluZyAqLwotICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7 CisgICAgLyogVGV4dCBwcm9wZXJ0aWVzIGluIHRoaXMgc3RyaW5nLiAgKi8KKyAgICBJTlRF UlZBTCBpbnRlcnZhbHM7CisKKyAgICB1bmlvbiB7CisKKyAgICAgIC8qIEdDIG1hcmsgYml0 IGFuZCBzdWJ0eXBlIGJpdCBhcmUgaW4gSU1NIGp1c3QgYnkgY29udmVudGlvbiAtIHdoZW4K KwkgSU1NQklUIGlzIDAsIHRoZSBEQVQgZmllbGQgaXMgdXNlZCBleGNlcHQgaXQncyBVTlVT RUQgZmllbGQuICAqLworCisgICAgICBzdHJ1Y3QgeworCXVuc2lnbmVkIGdjbWFya2JpdCA6 IDE7CisJdW5zaWduZWQgaW1tYml0IDogMTsKKwlFTUFDU19JTlQgc2l6ZSA6IDc7CisJRU1B Q1NfSU5UIHNpemVfYnl0ZSA6IDc7CisJdW5zaWduZWQgY2hhciBkYXRhW1NUUklOR19JTU1f TUFYXTsKKyAgICAgIH0gUEFDS0VEIGltbTsKKyAgICAgIAorICAgICAgc3RydWN0IHsKKwl1 bnNpZ25lZCB1bnVzZWQgOiAyOyAvKiBEbyBub3QgYWNjZXNzIHRoaXMgcGxhY2Vob2xkZXIu ICAqLworCUVNQUNTX0lOVCBzaXplIDogQklUU19QRVJfRU1BQ1NfSU5UIC0gMTsKKwlFTUFD U19JTlQgc2l6ZV9ieXRlIDogQklUU19QRVJfRU1BQ1NfSU5UIC0gMTsKKwl1bnNpZ25lZCBj aGFyICpkYXRhOworICAgICAgfSBQQUNLRUQgZGF0OworCisgICAgfSB1OwogICB9OwogCisv KiBSZXR1cm4gdGhlIGxlbmd0aCBpbiBieXRlcyBvZiBTVFIuICAqLworCisjaWZkZWYgR0Nf Q0hFQ0tfU1RSSU5HX0JZVEVTCisKKy8qIFNsb3dlciB2ZXJzaW9uIHdpdGggZGVidWdnaW5n IGNoZWNrLiAgKi8KKworZXh0ZXJuIEVNQUNTX0lOVCBzdHJpbmdfYnl0ZXMgKHN0cnVjdCBM aXNwX1N0cmluZyAqKTsKKworI2Vsc2UgLyogbm90IEdDX0NIRUNLX1NUUklOR19CWVRFUyAq LworCitzdGF0aWMgaW5saW5lCitFTUFDU19JTlQgc3RyaW5nX2J5dGVzIChzdHJ1Y3QgTGlz cF9TdHJpbmcgKnMpCit7CisgIEVNQUNTX0lOVCBzaXplLCBzaXplX2J5dGU7CisKKyAgaWYg KHMtPnUuaW1tLmltbWJpdCkKKyAgICBzaXplID0gcy0+dS5pbW0uc2l6ZSwgc2l6ZV9ieXRl ID0gcy0+dS5pbW0uc2l6ZV9ieXRlOworICBlbHNlCisgICAgc2l6ZSA9IHMtPnUuZGF0LnNp emUsIHNpemVfYnl0ZSA9IHMtPnUuZGF0LnNpemVfYnl0ZTsKKyAgcmV0dXJuIHNpemVfYnl0 ZSA8IDAgPyBzaXplIDogc2l6ZV9ieXRlOworfQorCisjZW5kaWYgLyogR0NfQ0hFQ0tfU1RS SU5HX0JZVEVTICovCisKIC8qIEhlYWRlciBvZiB2ZWN0b3ItbGlrZSBvYmplY3RzLiAgVGhp cyBkb2N1bWVudHMgdGhlIGxheW91dCBjb25zdHJhaW50cyBvbgogICAgdmVjdG9ycyBhbmQg cHNldWRvdmVjdG9ycyBvdGhlciB0aGFuIHN0cnVjdCBMaXNwX1N1YnIuICBJdCBhbHNvIHBy ZXZlbnRzCiAgICBjb21waWxlcnMgZnJvbSBiZWluZyBmb29sZWQgYnkgRW1hY3MncyB0eXBl IHB1bm5pbmc6IHRoZSBYU0VUUFNFVURPVkVDVE9SCgo= --------------010402060100050809080003--