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: Re: Proposal: immediate strings Date: Tue, 29 May 2012 17:33:25 +0400 Message-ID: <4FC4D025.9020608@yandex.ru> References: <4FBB51E7.6080601@yandex.ru> <4FC472E6.5020005@yandex.ru> <4FC47CE1.6050901@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020103000908070501020303" X-Trace: dough.gmane.org 1338298297 23986 80.91.229.3 (29 May 2012 13:31:37 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 29 May 2012 13:31:37 +0000 (UTC) Cc: Paul Eggert , Stefan Monnier To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue May 29 15:31:35 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 1SZMWI-0000pt-RI for ged-emacs-devel@m.gmane.org; Tue, 29 May 2012 15:31:31 +0200 Original-Received: from localhost ([::1]:53574 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SZMWI-0004WF-DC for ged-emacs-devel@m.gmane.org; Tue, 29 May 2012 09:31:30 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:52456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SZMWC-0004Ld-N5 for emacs-devel@gnu.org; Tue, 29 May 2012 09:31:27 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SZMW9-0005ms-8B for emacs-devel@gnu.org; Tue, 29 May 2012 09:31:24 -0400 Original-Received: from forward12.mail.yandex.net ([95.108.130.94]:44499) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SZMW8-0005lB-D0 for emacs-devel@gnu.org; Tue, 29 May 2012 09:31:21 -0400 Original-Received: from smtp14.mail.yandex.net (smtp14.mail.yandex.net [95.108.131.192]) by forward12.mail.yandex.net (Yandex) with ESMTP id A560EC204EA; Tue, 29 May 2012 17:31:09 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1338298269; bh=crfdaslLC8Jat1fUhIqU/2WR7y1iYkAOEuhwoZEAD78=; h=Message-ID:Date:From:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type; b=aXTXBdHWxsG87CkGZr5O2gYAfbfsWIkpklJzFPqC5diws0nwC1W3GwzyyxuHb1UkU 0cpbaCrErAD9WYhjEeo+RuefDqd66IuSmVSExSp3LnEeptB9yKuMFF/MW1QcJuZVd6 18FMeElhOxBRwzCeZB9AREQ3XEJSA6GJgtp7i6Xk= Original-Received: from smtp14.mail.yandex.net (localhost [127.0.0.1]) by smtp14.mail.yandex.net (Yandex) with ESMTP id 6E3FD1B60737; Tue, 29 May 2012 17:31:09 +0400 (MSK) Original-Received: from antipov.client.gelicon.ru (antipov.client.gelicon.ru [78.153.153.8]) by smtp14.mail.yandex.net (nwsmtp/Yandex) with ESMTP id V8AKAVUH-V8Aui3f2; Tue, 29 May 2012 17:31:09 +0400 X-Yandex-Rcpt-Suid: emacs-devel@gnu.org X-Yandex-Rcpt-Suid: eggert@cs.ucla.edu X-Yandex-Rcpt-Suid: monnier@iro.umontreal.ca DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1338298269; bh=crfdaslLC8Jat1fUhIqU/2WR7y1iYkAOEuhwoZEAD78=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=LDYM39EidgckhTNiv/4obDlOqguW0vD8ApV6QQf8SF3HlNgUPQWLycANO5mVJlXdM YjSRZ0ZG0JR5RekngE2p7tfCzr1JmQxmosW5kvfzYbAgcl3Rzkh8KOgnJYj/ULF3xc IdqjlNucDRft3SBk16TpKWaRUaILKvzbWZkehQJs= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120428 Thunderbird/12.0.1 In-Reply-To: <4FC47CE1.6050901@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.130.94 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:150678 Archived-At: This is a multi-part message in MIME format. --------------020103000908070501020303 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 05/29/2012 11:38 AM, Paul Eggert wrote: > On 05/28/2012 11:55 PM, Dmitry Antipov wrote: >> To avoid using 'packed' attribute and speedup an inefficient access to u.dat.size >> field, it's possible to use 'ptrdiff_t X : BITS_PER_PTRDIFF_T - 2' >> bitfields - it's still wide enough to hold the values up to STRING_BYTES_BOUND. > > That's not true on 32-bit hosts configured --with-wide-int. > On such hosts, a string can contain up to PTRDIFF_MAX - 1 bytes. > This proposal would lower the limit to PTRDIFF_MAX / 4 bytes. > In contrast, the proposal in > > would merely lower it to PTRDIFF_MAX - 65536 bytes. OK, this allows min (MOST_POSITIVE_FIXNUM, (ptrdiff_t) min (SIZE_MAX, PTRDIFF_MAX - 1) - 1) in all configurations (so PTRDIFF_MAX - 2 for --with-wide-int), eventually uses _all_ bits by eliminating signed values. Dmitry --------------020103000908070501020303 Content-Type: text/plain; charset=UTF-8; name="immstr-dev.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="immstr-dev.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0w NS0yNSAxODoxOToyNCArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wNS0yOSAxMzoyODox NCArMDAwMApAQCAtMTQ3LDIwICsxNDcsMTQgQEAKIC8qIE1hcmssIHVubWFyaywgcXVlcnkg bWFyayBiaXQgb2YgYSBMaXNwIHN0cmluZy4gIFMgbXVzdCBiZSBhIHBvaW50ZXIKICAgIHRv IGEgc3RydWN0IExpc3BfU3RyaW5nLiAgKi8KIAotI2RlZmluZSBNQVJLX1NUUklORyhTKQkJ KChTKS0+c2l6ZSB8PSBBUlJBWV9NQVJLX0ZMQUcpCi0jZGVmaW5lIFVOTUFSS19TVFJJTkco UykJKChTKS0+c2l6ZSAmPSB+QVJSQVlfTUFSS19GTEFHKQotI2RlZmluZSBTVFJJTkdfTUFS S0VEX1AoUykJKCgoUyktPnNpemUgJiBBUlJBWV9NQVJLX0ZMQUcpICE9IDApCisjZGVmaW5l IE1BUktfU1RSSU5HKFMpCQkoKFMpLT51LmltbS5nY21hcmtiaXQgPSAxKQorI2RlZmluZSBV Tk1BUktfU1RSSU5HKFMpCSgoUyktPnUuaW1tLmdjbWFya2JpdCA9IDApCisjZGVmaW5lIFNU UklOR19NQVJLRURfUChTKQkoKFMpLT51LmltbS5nY21hcmtiaXQpCiAKICNkZWZpbmUgVkVD VE9SX01BUksoVikJCSgoViktPmhlYWRlci5zaXplIHw9IEFSUkFZX01BUktfRkxBRykKICNk ZWZpbmUgVkVDVE9SX1VOTUFSSyhWKQkoKFYpLT5oZWFkZXIuc2l6ZSAmPSB+QVJSQVlfTUFS S19GTEFHKQogI2RlZmluZSBWRUNUT1JfTUFSS0VEX1AoVikJKCgoViktPmhlYWRlci5zaXpl ICYgQVJSQVlfTUFSS19GTEFHKSAhPSAwKQogCi0vKiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9m IGJ5dGVzIG9mIFMsIGEgcG9pbnRlciB0byBhIHN0cnVjdCBMaXNwX1N0cmluZy4KLSAgIEJl IGNhcmVmdWwgZHVyaW5nIEdDLCBiZWNhdXNlIFMtPnNpemUgY29udGFpbnMgdGhlIG1hcmsg Yml0IGZvcgotICAgc3RyaW5ncy4gICovCi0KLSNkZWZpbmUgR0NfU1RSSU5HX0JZVEVTKFMp CShTVFJJTkdfQllURVMgKFMpKQotCiAvKiBHbG9iYWwgdmFyaWFibGVzLiAgKi8KIHN0cnVj dCBlbWFjc19nbG9iYWxzIGdsb2JhbHM7CiAKQEAgLTM5Miw2ICszODYsNyBAQAogc3RhdGlj IHZvaWQgbWFya19zdGFjayAodm9pZCk7CiBzdGF0aWMgaW50IGxpdmVfdmVjdG9yX3AgKHN0 cnVjdCBtZW1fbm9kZSAqLCB2b2lkICopOwogc3RhdGljIGludCBsaXZlX2J1ZmZlcl9wIChz dHJ1Y3QgbWVtX25vZGUgKiwgdm9pZCAqKTsKK3N0YXRpYyBpbnQgbGl2ZV9zdHJpbmdfZGF0 YV9wIChzdHJ1Y3QgTGlzcF9TdHJpbmcgKik7CiBzdGF0aWMgaW50IGxpdmVfc3RyaW5nX3Ag KHN0cnVjdCBtZW1fbm9kZSAqLCB2b2lkICopOwogc3RhdGljIGludCBsaXZlX2NvbnNfcCAo c3RydWN0IG1lbV9ub2RlICosIHZvaWQgKik7CiBzdGF0aWMgaW50IGxpdmVfc3ltYm9sX3Ag KHN0cnVjdCBtZW1fbm9kZSAqLCB2b2lkICopOwpAQCAtMTc2MSw3ICsxNzU2LDggQEAKICAg IGEgcG9pbnRlciB0byB0aGUgYHUuZGF0YScgbWVtYmVyIG9mIGl0cyBzZGF0YSBzdHJ1Y3R1 cmU7IHRoZQogICAgc3RydWN0dXJlIHN0YXJ0cyBhdCBhIGNvbnN0YW50IG9mZnNldCBpbiBm cm9udCBvZiB0aGF0LiAgKi8KIAotI2RlZmluZSBTREFUQV9PRl9TVFJJTkcoUykgKChzdHJ1 Y3Qgc2RhdGEgKikgKChTKS0+ZGF0YSAtIFNEQVRBX0RBVEFfT0ZGU0VUKSkKKyNkZWZpbmUg U0RBVEFfT0ZfU1RSSU5HKFMpICgoUyktPnUuaW1tLmltbWJpdCA/IChzdHJ1Y3Qgc2RhdGEg KikgTlVMTCBcCisgIDogKChzdHJ1Y3Qgc2RhdGEgKikgKChTKS0+dS5kYXQuZGF0YSAtIFNE QVRBX0RBVEFfT0ZGU0VUKSkpCiAKIAogI2lmZGVmIEdDX0NIRUNLX1NUUklOR19PVkVSUlVO CkBAIC0xODQzLDIxICsxODM5LDMwIEBACiAKIHN0YXRpYyBpbnQgY2hlY2tfc3RyaW5nX2J5 dGVzX2NvdW50OwogCi0jZGVmaW5lIENIRUNLX1NUUklOR19CWVRFUyhTKQlTVFJJTkdfQllU RVMgKFMpCi0KLQotLyogTGlrZSBHQ19TVFJJTkdfQllURVMsIGJ1dCB3aXRoIGRlYnVnZ2lu ZyBjaGVjay4gICovCisjZGVmaW5lIENIRUNLX1NUUklOR19CWVRFUyhTKSBzdHJpbmdfYnl0 ZXMgKFMpCiAKIHB0cmRpZmZfdAogc3RyaW5nX2J5dGVzIChzdHJ1Y3QgTGlzcF9TdHJpbmcg KnMpCiB7Ci0gIHB0cmRpZmZfdCBuYnl0ZXMgPQotICAgIChzLT5zaXplX2J5dGUgPCAwID8g cy0+c2l6ZSAmIH5BUlJBWV9NQVJLX0ZMQUcgOiBzLT5zaXplX2J5dGUpOwotCi0gIGlmICgh UFVSRV9QT0lOVEVSX1AgKHMpCi0gICAgICAmJiBzLT5kYXRhCi0gICAgICAmJiBuYnl0ZXMg IT0gU0RBVEFfTkJZVEVTIChTREFUQV9PRl9TVFJJTkcgKHMpKSkKLSAgICBhYm9ydCAoKTsK KyAgcHRyZGlmZl90IG5ieXRlczsKKworICBpZiAocy0+dS5pbW0uaW1tYml0KQorICAgIHsK KyAgICAgIG5ieXRlcyA9IHMtPnUuaW1tLnNpemVfYnl0ZSA9PSBTVFJJTkdfVU5JQllURV9J TU1fTUFYID8KKwlzLT51LmltbS5zaXplIDogcy0+dS5pbW0uc2l6ZV9ieXRlOworICAgICAg ZWFzc2VydCAobmJ5dGVzIDwgU1RSSU5HX0lNTV9TSVpFKTsKKyAgICB9CisgIGVsc2UKKyAg ICB7CisgICAgICBuYnl0ZXMgPSBzLT51LmRhdC5zaXplX2J5dGUgPT0gU1RSSU5HX1VOSUJZ VEVfREFUX01BWCA/CisJcy0+dS5kYXQuc2l6ZSA6IHMtPnUuZGF0LnNpemVfYnl0ZTsKKyAg ICAgIGVhc3NlcnQgKG5ieXRlcyA+PSBTVFJJTkdfSU1NX1NJWkUpOworICAgICAgaWYgKCFQ VVJFX1BPSU5URVJfUCAocykgJiYgcy0+dS5kYXQuZGF0YSAmJgorCSAgbmJ5dGVzICE9IFNE QVRBX05CWVRFUyAoU0RBVEFfT0ZfU1RSSU5HIChzKSkpCisJLyogTm9ybWFsIG5vbi1wdXJl IHN0cmluZyB3aXRoIHNpemUgbWlzbWF0Y2guICAqLworCWFib3J0ICgpOworICAgIH0KKwog ICByZXR1cm4gbmJ5dGVzOwogfQogCkBAIC0xODgyLDcgKzE4ODcsNyBAQAogCUNIRUNLX1NU UklOR19CWVRFUyAoZnJvbS0+c3RyaW5nKTsKIAogICAgICAgaWYgKGZyb20tPnN0cmluZykK LQluYnl0ZXMgPSBHQ19TVFJJTkdfQllURVMgKGZyb20tPnN0cmluZyk7CisJbmJ5dGVzID0g c3RyaW5nX2J5dGVzIChmcm9tLT5zdHJpbmcpOwogICAgICAgZWxzZQogCW5ieXRlcyA9IFNE QVRBX05CWVRFUyAoZnJvbSk7CiAKQEAgLTIwMjgsOCArMjAzMyw4IEBACiAgIC8qIERldGVy bWluZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCB0byBzdG9yZSBOQllURVMgYnl0ZXMK ICAgICAgb2Ygc3RyaW5nIGRhdGEuICAqLwogICBuZWVkZWQgPSBTREFUQV9TSVpFIChuYnl0 ZXMpOwotICBvbGRfZGF0YSA9IHMtPmRhdGEgPyBTREFUQV9PRl9TVFJJTkcgKHMpIDogTlVM TDsKLSAgb2xkX25ieXRlcyA9IEdDX1NUUklOR19CWVRFUyAocyk7CisgIG9sZF9kYXRhID0g cy0+dS5kYXQuZGF0YSA/IFNEQVRBX09GX1NUUklORyAocykgOiBOVUxMOworICBvbGRfbmJ5 dGVzID0gc3RyaW5nX2J5dGVzIChzKTsKIAogICBNQUxMT0NfQkxPQ0tfSU5QVVQ7CiAKQEAg LTIwODgsMTMgKzIwOTMsMTEgQEAKICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7CiAKICAgZGF0 YS0+c3RyaW5nID0gczsKLSAgcy0+ZGF0YSA9IFNEQVRBX0RBVEEgKGRhdGEpOworICBzLT51 LmRhdC5kYXRhID0gU0RBVEFfREFUQSAoZGF0YSk7CiAjaWZkZWYgR0NfQ0hFQ0tfU1RSSU5H X0JZVEVTCiAgIFNEQVRBX05CWVRFUyAoZGF0YSkgPSBuYnl0ZXM7CiAjZW5kaWYKLSAgcy0+ c2l6ZSA9IG5jaGFyczsKLSAgcy0+c2l6ZV9ieXRlID0gbmJ5dGVzOwotICBzLT5kYXRhW25i eXRlc10gPSAnXDAnOworICBzLT51LmRhdC5kYXRhW25ieXRlc10gPSAnXDAnOwogI2lmZGVm IEdDX0NIRUNLX1NUUklOR19PVkVSUlVOCiAgIG1lbWNweSAoKGNoYXIgKikgZGF0YSArIG5l ZWRlZCwgc3RyaW5nX292ZXJydW5fY29va2llLAogCSAgR0NfU1RSSU5HX09WRVJSVU5fQ09P S0lFX1NJWkUpOwpAQCAtMjExMiw2ICsyMTE1LDEyIEBACiAgIGNvbnNpbmdfc2luY2VfZ2Mg Kz0gbmVlZGVkOwogfQogCisjaWZkZWYgR0NfU1RSSU5HX1NUQVRTCisKK3N0YXRpYyBFTUFD U19JTlQgdG90YWxfaW1tX3N0cmluZ3MsIHRvdGFsX2RhdF9zdHJpbmdzLCB0b3RhbF9pbW1f aW50ZXJ2YWxzOworc3RhdGljIEVNQUNTX0lOVCB0b3RhbF9pbW1fYnl0ZXMsIHRvdGFsX2Rh dF9ieXRlcywgdG90YWxfZGF0X2ludGVydmFsczsKKworI2VuZGlmCiAKIC8qIFN3ZWVwIGFu ZCBjb21wYWN0IHN0cmluZ3MuICAqLwogCkBAIC0yMTI1LDYgKzIxMzQsMTIgQEAKICAgdG90 YWxfc3RyaW5ncyA9IHRvdGFsX2ZyZWVfc3RyaW5ncyA9IDA7CiAgIHRvdGFsX3N0cmluZ19z aXplID0gMDsKIAorI2lmZGVmIEdDX1NUUklOR19TVEFUUworICB0b3RhbF9pbW1fc3RyaW5n cyA9IHRvdGFsX2RhdF9zdHJpbmdzID0gMDsKKyAgdG90YWxfaW1tX2J5dGVzID0gdG90YWxf ZGF0X2J5dGVzID0gMDsKKyAgdG90YWxfaW1tX2ludGVydmFscyA9IHRvdGFsX2RhdF9pbnRl cnZhbHMgPSAwOworI2VuZGlmCisKICAgLyogU2NhbiBzdHJpbmdzX2Jsb2NrcywgZnJlZSBM aXNwX1N0cmluZ3MgdGhhdCBhcmVuJ3QgbWFya2VkLiAgKi8KICAgZm9yIChiID0gc3RyaW5n X2Jsb2NrczsgYjsgYiA9IG5leHQpCiAgICAgewpAQCAtMjEzNyw0OSArMjE1Miw2NCBAQAog CXsKIAkgIHN0cnVjdCBMaXNwX1N0cmluZyAqcyA9IGItPnN0cmluZ3MgKyBpOwogCi0JICBp ZiAocy0+ZGF0YSkKKwkgIGlmIChTVFJJTkdfTUFSS0VEX1AgKHMpKQorCSAgICB7CSAgICAg IAorCSAgICAgIC8qIFN0cmluZyBpcyBsaXZlOyB1bm1hcmsgaXQgYW5kIGl0cyBpbnRlcnZh bHMuICAqLworCSAgICAgIFVOTUFSS19TVFJJTkcgKHMpOworCisJICAgICAgaWYgKCFOVUxM X0lOVEVSVkFMX1AgKHMtPmludGVydmFscykpCisJCVVOTUFSS19CQUxBTkNFX0lOVEVSVkFM UyAocy0+aW50ZXJ2YWxzKTsKKworCSAgICAgICsrdG90YWxfc3RyaW5nczsKKwkgICAgICB0 b3RhbF9zdHJpbmdfc2l6ZSArPSBzdHJpbmdfYnl0ZXMgKHMpOworI2lmZGVmIEdDX1NUUklO R19TVEFUUworCSAgICAgIGlmIChzLT51LmltbS5pbW1iaXQpCisJCXsKKwkJICB0b3RhbF9p bW1fc3RyaW5ncysrOworCQkgIHRvdGFsX2ltbV9ieXRlcyArPSBzdHJpbmdfYnl0ZXMgKHMp OworCQkgIGlmICghTlVMTF9JTlRFUlZBTF9QIChzLT5pbnRlcnZhbHMpKQorCQkgICAgdG90 YWxfaW1tX2ludGVydmFscysrOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgdG90YWxf ZGF0X3N0cmluZ3MrKzsKKwkJICB0b3RhbF9kYXRfYnl0ZXMgKz0gc3RyaW5nX2J5dGVzIChz KTsKKwkJICBpZiAoIU5VTExfSU5URVJWQUxfUCAocy0+aW50ZXJ2YWxzKSkKKwkJICAgIHRv dGFsX2RhdF9pbnRlcnZhbHMrKzsKKwkJfQorI2VuZGlmIC8qIEdDX1NUUklOR19TVEFUUyAq LworCSAgICB9CisJICBlbHNlCiAJICAgIHsKLQkgICAgICAvKiBTdHJpbmcgd2FzIG5vdCBv biBmcmVlLWxpc3QgYmVmb3JlLiAgKi8KLQkgICAgICBpZiAoU1RSSU5HX01BUktFRF9QIChz KSkKLQkJewotCQkgIC8qIFN0cmluZyBpcyBsaXZlOyB1bm1hcmsgaXQgYW5kIGl0cyBpbnRl cnZhbHMuICAqLwotCQkgIFVOTUFSS19TVFJJTkcgKHMpOwotCi0JCSAgaWYgKCFOVUxMX0lO VEVSVkFMX1AgKHMtPmludGVydmFscykpCi0JCSAgICBVTk1BUktfQkFMQU5DRV9JTlRFUlZB TFMgKHMtPmludGVydmFscyk7Ci0KLQkJICArK3RvdGFsX3N0cmluZ3M7Ci0JCSAgdG90YWxf c3RyaW5nX3NpemUgKz0gU1RSSU5HX0JZVEVTIChzKTsKLQkJfQorCSAgICAgIGlmIChzLT51 LmltbS5pbW1iaXQpCisJCS8qIEZpbGwgZGF0YSB3aXRoIHNwZWNpYWwgcGF0dGVybi4gVXNl ZCBieQorCQkgICBHQyB0byBmaW5kIGRlYWQgaW1tZWRpYXRlIHN0cmluZ3MuICAqLworCQlt ZW1zZXQgKHMtPnUuaW1tLmRhdGEsIDB4ZmYsIFNUUklOR19JTU1fU0laRSk7CiAJICAgICAg ZWxzZQogCQl7Ci0JCSAgLyogU3RyaW5nIGlzIGRlYWQuICBQdXQgaXQgb24gdGhlIGZyZWUt bGlzdC4gICovCi0JCSAgc3RydWN0IHNkYXRhICpkYXRhID0gU0RBVEFfT0ZfU1RSSU5HIChz KTsKKwkJICBpZiAocy0+dS5kYXQuZGF0YSkKKwkJICAgIHsKKwkJICAgICAgLyogU3RyaW5n IGlzIGRlYWQuICBQdXQgaXQgb24gdGhlIGZyZWUtbGlzdC4gICovCisJCSAgICAgIHN0cnVj dCBzZGF0YSAqZGF0YSA9IFNEQVRBX09GX1NUUklORyAocyk7CiAKLQkJICAvKiBTYXZlIHRo ZSBzaXplIG9mIFMgaW4gaXRzIHNkYXRhIHNvIHRoYXQgd2Uga25vdwotCQkgICAgIGhvdyBs YXJnZSB0aGF0IGlzLiAgUmVzZXQgdGhlIHNkYXRhJ3Mgc3RyaW5nCi0JCSAgICAgYmFjay1w b2ludGVyIHNvIHRoYXQgd2Uga25vdyBpdCdzIGZyZWUuICAqLworCQkgICAgICAvKiBTYXZl IHRoZSBzaXplIG9mIFMgaW4gaXRzIHNkYXRhIHNvIHRoYXQgd2Uga25vdworCQkJIGhvdyBs YXJnZSB0aGF0IGlzLiAgUmVzZXQgdGhlIHNkYXRhJ3Mgc3RyaW5nCisJCQkgYmFjay1wb2lu dGVyIHNvIHRoYXQgd2Uga25vdyBpdCdzIGZyZWUuICAqLwogI2lmZGVmIEdDX0NIRUNLX1NU UklOR19CWVRFUwotCQkgIGlmIChHQ19TVFJJTkdfQllURVMgKHMpICE9IFNEQVRBX05CWVRF UyAoZGF0YSkpCi0JCSAgICBhYm9ydCAoKTsKKwkJICAgICAgaWYgKHN0cmluZ19ieXRlcyAo cykgIT0gU0RBVEFfTkJZVEVTIChkYXRhKSkKKwkJCWFib3J0ICgpOwogI2Vsc2UKLQkJICBk YXRhLT51Lm5ieXRlcyA9IEdDX1NUUklOR19CWVRFUyAocyk7CisJCSAgICAgIGRhdGEtPnUu bmJ5dGVzID0gc3RyaW5nX2J5dGVzIChzKTsKICNlbmRpZgotCQkgIGRhdGEtPnN0cmluZyA9 IE5VTEw7Ci0KLQkJICAvKiBSZXNldCB0aGUgc3RyaW5ncydzIGBkYXRhJyBtZW1iZXIgc28g dGhhdCB3ZQotCQkgICAgIGtub3cgaXQncyBmcmVlLiAgKi8KLQkJICBzLT5kYXRhID0gTlVM TDsKLQotCQkgIC8qIFB1dCB0aGUgc3RyaW5nIG9uIHRoZSBmcmVlLWxpc3QuICAqLwotCQkg IE5FWFRfRlJFRV9MSVNQX1NUUklORyAocykgPSBzdHJpbmdfZnJlZV9saXN0OwotCQkgIHN0 cmluZ19mcmVlX2xpc3QgPSBzOwotCQkgICsrbmZyZWU7CisJCSAgICAgIGRhdGEtPnN0cmlu ZyA9IE5VTEw7CisKKwkJICAgICAgLyogUmVzZXQgdGhlIHN0cmluZ3MncyBgZGF0YScgbWVt YmVyIHNvIHRoYXQgd2UKKwkJCSBrbm93IGl0J3MgZnJlZS4gICovCisJCSAgICAgIHMtPnUu ZGF0LmRhdGEgPSBOVUxMOworCQkgICAgfQogCQl9Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAg ewotCSAgICAgIC8qIFMgd2FzIG9uIHRoZSBmcmVlLWxpc3QgYmVmb3JlLiAgUHV0IGl0IHRo ZXJlIGFnYWluLiAgKi8KKworCSAgICAgIC8qIFB1dCB0aGUgc3RyaW5nIG9uIHRoZSBmcmVl LWxpc3QuICAqLwogCSAgICAgIE5FWFRfRlJFRV9MSVNQX1NUUklORyAocykgPSBzdHJpbmdf ZnJlZV9saXN0OwogCSAgICAgIHN0cmluZ19mcmVlX2xpc3QgPSBzOwogCSAgICAgICsrbmZy ZWU7CkBAIC0yMjcxLDEyICsyMzAxLDEyIEBACiAJICAvKiBDaGVjayB0aGF0IHRoZSBzdHJp bmcgc2l6ZSByZWNvcmRlZCBpbiB0aGUgc3RyaW5nIGlzIHRoZQogCSAgICAgc2FtZSBhcyB0 aGUgb25lIHJlY29yZGVkIGluIHRoZSBzZGF0YSBzdHJ1Y3R1cmUuICovCiAJICBpZiAoZnJv bS0+c3RyaW5nCi0JICAgICAgJiYgR0NfU1RSSU5HX0JZVEVTIChmcm9tLT5zdHJpbmcpICE9 IFNEQVRBX05CWVRFUyAoZnJvbSkpCisJICAgICAgJiYgc3RyaW5nX2J5dGVzIChmcm9tLT5z dHJpbmcpICE9IFNEQVRBX05CWVRFUyAoZnJvbSkpCiAJICAgIGFib3J0ICgpOwogI2VuZGlm IC8qIEdDX0NIRUNLX1NUUklOR19CWVRFUyAqLwogCiAJICBpZiAoZnJvbS0+c3RyaW5nKQot CSAgICBuYnl0ZXMgPSBHQ19TVFJJTkdfQllURVMgKGZyb20tPnN0cmluZyk7CisJICAgIG5i eXRlcyA9IHN0cmluZ19ieXRlcyAoZnJvbS0+c3RyaW5nKTsKIAkgIGVsc2UKIAkgICAgbmJ5 dGVzID0gU0RBVEFfTkJZVEVTIChmcm9tKTsKIApAQCAtMjMxMiw3ICsyMzQyLDcgQEAKIAkJ ewogCQkgIHhhc3NlcnQgKHRiICE9IGIgfHwgdG8gPCBmcm9tKTsKIAkJICBtZW1tb3ZlICh0 bywgZnJvbSwgbmJ5dGVzICsgR0NfU1RSSU5HX0VYVFJBKTsKLQkJICB0by0+c3RyaW5nLT5k YXRhID0gU0RBVEFfREFUQSAodG8pOworCQkgIHRvLT5zdHJpbmctPnUuZGF0LmRhdGEgPSBT REFUQV9EQVRBICh0byk7CiAJCX0KIAogCSAgICAgIC8qIEFkdmFuY2UgcGFzdCB0aGUgc2Rh dGEgd2UgY29waWVkIHRvLiAgKi8KQEAgLTI1NjIsMTMgKzI1OTIsMjQgQEAKICAgICByZXR1 cm4gZW1wdHlfbXVsdGlieXRlX3N0cmluZzsKIAogICBzID0gYWxsb2NhdGVfc3RyaW5nICgp OwotICBhbGxvY2F0ZV9zdHJpbmdfZGF0YSAocywgbmNoYXJzLCBuYnl0ZXMpOworICBpZiAo bmJ5dGVzIDwgU1RSSU5HX0lNTV9TSVpFKQorICAgIHsKKyAgICAgIHMtPnUuaW1tLmltbWJp dCA9IDE7CisgICAgICBzLT51LmltbS5zaXplID0gbmNoYXJzOworICAgICAgcy0+dS5pbW0u c2l6ZV9ieXRlID0gbmJ5dGVzOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHMtPnUu aW1tLmltbWJpdCA9IDA7CisgICAgICBzLT51LmRhdC5zaXplID0gbmNoYXJzOworICAgICAg cy0+dS5kYXQuc2l6ZV9ieXRlID0gbmJ5dGVzOworICAgICAgYWxsb2NhdGVfc3RyaW5nX2Rh dGEgKHMsIG5jaGFycywgbmJ5dGVzKTsKKyAgICB9CiAgIFhTRVRTVFJJTkcgKHN0cmluZywg cyk7CiAgIHN0cmluZ19jaGFyc19jb25zZWQgKz0gbmJ5dGVzOwogICByZXR1cm4gc3RyaW5n OwogfQogCi0KIAwKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJICAgRmxvYXQgQWxsb2NhdGlv bgpAQCAtMzkzNyw2ICszOTc4LDIyIEBACiAgIHgtPmNvbG9yID0gTUVNX0JMQUNLOwogfQog CisvKiBOb24temVybyBpZiBkYXRhIG9mIFMgaXMgdmFsaWQuICAqLworCitzdGF0aWMgaW5s aW5lIGludAorbGl2ZV9zdHJpbmdfZGF0YV9wIChzdHJ1Y3QgTGlzcF9TdHJpbmcgKnMpCit7 CisgIGlmIChzLT51LmltbS5pbW1iaXQpCisgICAgeworICAgICAgdW5zaWduZWQgY2hhciAq cDsKKworICAgICAgZm9yIChwID0gcy0+dS5pbW0uZGF0YTsgcCA8IHMtPnUuaW1tLmRhdGEg KyBTVFJJTkdfSU1NX1NJWkU7IHArKykKKwlpZiAoKnAgIT0gMHhmZikKKwkgIHJldHVybiAx OworICAgICAgcmV0dXJuIDA7CisgICAgfQorICByZXR1cm4gcy0+dS5kYXQuZGF0YSAhPSBO VUxMOworfQogCiAvKiBWYWx1ZSBpcyBub24temVybyBpZiBQIGlzIGEgcG9pbnRlciB0byBh IGxpdmUgTGlzcCBzdHJpbmcgb24KICAgIHRoZSBoZWFwLiAgTSBpcyBhIHBvaW50ZXIgdG8g dGhlIG1lbV9ibG9jayBmb3IgUC4gICovCkBAIC0zOTU0LDcgKzQwMTEsNyBAQAogICAgICAg cmV0dXJuIChvZmZzZXQgPj0gMAogCSAgICAgICYmIG9mZnNldCAlIHNpemVvZiBiLT5zdHJp bmdzWzBdID09IDAKIAkgICAgICAmJiBvZmZzZXQgPCAoU1RSSU5HX0JMT0NLX1NJWkUgKiBz aXplb2YgYi0+c3RyaW5nc1swXSkKLQkgICAgICAmJiAoKHN0cnVjdCBMaXNwX1N0cmluZyAq KSBwKS0+ZGF0YSAhPSBOVUxMKTsKKwkgICAgICAmJiBsaXZlX3N0cmluZ19kYXRhX3AgKChz dHJ1Y3QgTGlzcF9TdHJpbmcgKikgcCkpOwogICAgIH0KICAgZWxzZQogICAgIHJldHVybiAw OwpAQCAtNDg2OSwxNSArNDkyNiwyOSBAQAogICBzdHJ1Y3QgTGlzcF9TdHJpbmcgKnM7CiAK ICAgcyA9IChzdHJ1Y3QgTGlzcF9TdHJpbmcgKikgcHVyZV9hbGxvYyAoc2l6ZW9mICpzLCBM aXNwX1N0cmluZyk7Ci0gIHMtPmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBmaW5kX3N0cmlu Z19kYXRhX2luX3B1cmUgKGRhdGEsIG5ieXRlcyk7Ci0gIGlmIChzLT5kYXRhID09IE5VTEwp Ci0gICAgewotICAgICAgcy0+ZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIHB1cmVfYWxsb2Mg KG5ieXRlcyArIDEsIC0xKTsKLSAgICAgIG1lbWNweSAocy0+ZGF0YSwgZGF0YSwgbmJ5dGVz KTsKLSAgICAgIHMtPmRhdGFbbmJ5dGVzXSA9ICdcMCc7Ci0gICAgfQotICBzLT5zaXplID0g bmNoYXJzOwotICBzLT5zaXplX2J5dGUgPSBtdWx0aWJ5dGUgPyBuYnl0ZXMgOiAtMTsKKwor ICBpZiAobmJ5dGVzIDwgU1RSSU5HX0lNTV9TSVpFKQorICAgIHsKKyAgICAgIG1lbWNweSAo cy0+dS5pbW0uZGF0YSwgZGF0YSwgbmJ5dGVzKTsKKyAgICAgIHMtPnUuaW1tLmRhdGFbbmJ5 dGVzXSA9ICdcMCc7CisgICAgICBzLT51LmltbS5pbW1iaXQgPSAxOworICAgICAgcy0+dS5p bW0uc2l6ZSA9IG5jaGFyczsKKyAgICAgIHMtPnUuaW1tLnNpemVfYnl0ZSA9IG11bHRpYnl0 ZSA/IG5ieXRlcyA6IFNUUklOR19VTklCWVRFX0lNTV9NQVg7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgcy0+dS5kYXQuZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGZpbmRfc3Ry aW5nX2RhdGFfaW5fcHVyZSAoZGF0YSwgbmJ5dGVzKTsKKyAgICAgIGlmIChzLT51LmRhdC5k YXRhID09IE5VTEwpCisJeworCSAgcy0+dS5kYXQuZGF0YSA9ICh1bnNpZ25lZCBjaGFyICop IHB1cmVfYWxsb2MgKG5ieXRlcyArIDEsIC0xKTsKKwkgIG1lbWNweSAocy0+dS5kYXQuZGF0 YSwgZGF0YSwgbmJ5dGVzKTsKKwkgIHMtPnUuZGF0LmRhdGFbbmJ5dGVzXSA9ICdcMCc7CisJ fQorICAgICAgcy0+dS5pbW0uaW1tYml0ID0gMDsKKyAgICAgIHMtPnUuZGF0LnNpemUgPSBu Y2hhcnM7CisgICAgICBzLT51LmRhdC5zaXplX2J5dGUgPSBtdWx0aWJ5dGUgPyBuYnl0ZXMg OiBTVFJJTkdfVU5JQllURV9EQVRfTUFYOworICAgIH0KKwogICBzLT5pbnRlcnZhbHMgPSBO VUxMX0lOVEVSVkFMOwogICBYU0VUU1RSSU5HIChzdHJpbmcsIHMpOwogICByZXR1cm4gc3Ry aW5nOwpAQCAtNDg5NCw5ICs0OTY1LDIzIEBACiAgIHB0cmRpZmZfdCBuY2hhcnMgPSBzdHJs ZW4gKGRhdGEpOwogCiAgIHMgPSAoc3RydWN0IExpc3BfU3RyaW5nICopIHB1cmVfYWxsb2Mg KHNpemVvZiAqcywgTGlzcF9TdHJpbmcpOwotICBzLT5zaXplID0gbmNoYXJzOwotICBzLT5z aXplX2J5dGUgPSAtMTsKLSAgcy0+ZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGRhdGE7CisK KyAgaWYgKG5jaGFycyA8IFNUUklOR19JTU1fU0laRSkKKyAgICB7CisgICAgICBtZW1jcHkg KHMtPnUuaW1tLmRhdGEsIGRhdGEsIG5jaGFycyk7CisgICAgICBzLT51LmltbS5kYXRhW25j aGFyc10gPSAnXDAnOworICAgICAgcy0+dS5pbW0uaW1tYml0ID0gMTsKKyAgICAgIHMtPnUu aW1tLnNpemUgPSBuY2hhcnM7CisgICAgICBzLT51LmltbS5zaXplX2J5dGUgPSBTVFJJTkdf VU5JQllURV9JTU1fTUFYOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHMtPnUuZGF0 LmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBkYXRhOworICAgICAgcy0+dS5pbW0uaW1tYml0 ID0gMDsKKyAgICAgIHMtPnUuZGF0LnNpemUgPSBuY2hhcnM7CisgICAgICBzLT51LmRhdC5z aXplX2J5dGUgPSBTVFJJTkdfVU5JQllURV9EQVRfTUFYOworICAgIH0KKwogICBzLT5pbnRl cnZhbHMgPSBOVUxMX0lOVEVSVkFMOwogICBYU0VUU1RSSU5HIChzdHJpbmcsIHMpOwogICBy ZXR1cm4gc3RyaW5nOwpAQCAtNjMxOSw2ICs2NDA0LDM0IEBACiAgIHJldHVybiBGbGlzdCAo OCwgY29uc2VkKTsKIH0KIAorI2lmZGVmIEdDX1NUUklOR19TVEFUUworCitERUZVTiAoInN0 cmluZy1zdGF0cyIsIEZzdHJpbmdfc3RhdHMsIFNzdHJpbmdfc3RhdHMsIDAsIDAsIDAsCisg ICAgICAgZG9jOiAvKiBSZXR1cm4gYSBsaXN0IG9mIGNvdW50ZXJzIHRoYXQgbWVhc3VyZXMg aG93IG11Y2gKK3N0cmluZ3Mgb2YgYSBwYXJ0aWN1bGFyIGludGVybmFsIHN0cnVjdHVyZSBh cmUgYWxpdmUgYWZ0ZXIgbGFzdAorZ2FyYmFnZSBjb2xsZWN0aW9uLCBhbmQgaG93IG1hbnkg Ynl0ZXMgYXJlIGluIHRoZW0uCitUaGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBhcmUg YXMgZm9sbG93czoKKyAgKElNTS1TVFJJTkdTIElNTS1CWVRFUyBJTU0tSU5URVJWQUxTIERB VC1TVFJJTkdTIERBVC1CWVRFUyBEQVQtSU5URVJWQUxTKQord2hlcmUgSU1NLVNUUklOR1Mg aXMgdGhlIG51bWJlciBvZiBpbW1lZGlhdGUgc3RyaW5ncywgSU1NLUJZVEVTIGlzIHRoZSB0 b3RhbAorbnVtYmVyIG9mIGJ5dGVzIGluIHRoZW0sIGFuZCBJTU0tSU5URVJWQUxTIGlzIHRo ZSBudW1iZXIgb2YgaW1tZWRpYXRlIHN0cmluZword2l0aCBub24tbmlsIHRleHQgcHJvcGVy dGllcy4gVGhlIHJlc3QgdGhyZWUgbnVtYmVycyBoYXMgdGhlIHNhbWUgbWVhbmluZworZm9y IG5vcm1hbCBzdHJpbmdzLCByZXNwZWN0aXZlbHkuICAqLykKKyAgKHZvaWQpCit7CisgIExp c3BfT2JqZWN0IGRhdGFbNl07CisKKyAgZGF0YVswXSA9IG1ha2VfbnVtYmVyIChtaW4gKE1P U1RfUE9TSVRJVkVfRklYTlVNLCB0b3RhbF9pbW1fc3RyaW5ncykpOworICBkYXRhWzFdID0g bWFrZV9udW1iZXIgKG1pbiAoTU9TVF9QT1NJVElWRV9GSVhOVU0sIHRvdGFsX2ltbV9ieXRl cykpOworICBkYXRhWzJdID0gbWFrZV9udW1iZXIgKG1pbiAoTU9TVF9QT1NJVElWRV9GSVhO VU0sIHRvdGFsX2ltbV9pbnRlcnZhbHMpKTsKKyAgZGF0YVszXSA9IG1ha2VfbnVtYmVyICht aW4gKE1PU1RfUE9TSVRJVkVfRklYTlVNLCB0b3RhbF9kYXRfc3RyaW5ncykpOworICBkYXRh WzRdID0gbWFrZV9udW1iZXIgKG1pbiAoTU9TVF9QT1NJVElWRV9GSVhOVU0sIHRvdGFsX2Rh dF9ieXRlcykpOworICBkYXRhWzVdID0gbWFrZV9udW1iZXIgKG1pbiAoTU9TVF9QT1NJVElW RV9GSVhOVU0sIHRvdGFsX2RhdF9pbnRlcnZhbHMpKTsKKworICByZXR1cm4gRmxpc3QgKDYs IGRhdGEpOworfQorCisjZW5kaWYgLyogR0NfU1RSSU5HX1NUQVRTICovCisKIC8qIEZpbmQg YXQgbW9zdCBGSU5EX01BWCBzeW1ib2xzIHdoaWNoIGhhdmUgT0JKIGFzIHRoZWlyIHZhbHVl IG9yCiAgICBmdW5jdGlvbi4gIFRoaXMgaXMgdXNlZCBpbiBnZGJpbml0J3MgYHh3aGljaHN5 bWJvbHMnIGNvbW1hbmQuICAqLwogCkBAIC02NTQ3LDcgKzY2NjAsOSBAQAogICBkZWZzdWJy ICgmU2dhcmJhZ2VfY29sbGVjdCk7CiAgIGRlZnN1YnIgKCZTbWVtb3J5X2xpbWl0KTsKICAg ZGVmc3ViciAoJlNtZW1vcnlfdXNlX2NvdW50cyk7Ci0KKyNpZmRlZiBHQ19TVFJJTkdfU1RB VFMKKyAgZGVmc3ViciAoJlNzdHJpbmdfc3RhdHMpOworI2VuZGlmCiAjaWYgR0NfTUFSS19T VEFDSyA9PSBHQ19VU0VfR0NQUk9TX0NIRUNLX1pPTUJJRVMKICAgZGVmc3ViciAoJlNnY19z dGF0dXMpOwogI2VuZGlmCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Zucy5jJwotLS0gc3Jj L2Zucy5jCTIwMTItMDUtMjUgMTg6MTk6MjQgKzAwMDAKKysrIHNyYy9mbnMuYwkyMDEyLTA1 LTI5IDEwOjAwOjUzICswMDAwCkBAIC0yMTY2LDggKzIxNjYsOCBAQAogCSAgaW50IGxlbiA9 IENIQVJfU1RSSU5HIChjaGFydmFsLCBzdHIpOwogCSAgcHRyZGlmZl90IHNpemVfYnl0ZSA9 IFNCWVRFUyAoYXJyYXkpOwogCi0JICBpZiAoSU5UX01VTFRJUExZX09WRVJGTE9XIChTQ0hB UlMgKGFycmF5KSwgbGVuKQotCSAgICAgIHx8IFNDSEFSUyAoYXJyYXkpICogbGVuICE9IHNp emVfYnl0ZSkKKwkgIGlmIChJTlRfTVVMVElQTFlfT1ZFUkZMT1cgKHNpemUsIGxlbikKKwkg ICAgICB8fCBzaXplICogbGVuICE9IHNpemVfYnl0ZSkKIAkgICAgZXJyb3IgKCJBdHRlbXB0 IHRvIGNoYW5nZSBieXRlIGxlbmd0aCBvZiBhIHN0cmluZyIpOwogCSAgZm9yIChpZHggPSAw OyBpZHggPCBzaXplX2J5dGU7IGlkeCsrKQogCSAgICAqcCsrID0gc3RyW2lkeCAlIGxlbl07 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2xpc3AuaCcKLS0tIHNyYy9saXNwLmgJMjAxMi0w NS0yNyAwNzo1MTowOSArMDAwMAorKysgc3JjL2xpc3AuaAkyMDEyLTA1LTI5IDEzOjI3OjU3 ICswMDAwCkBAIC03NDMsMTcgKzc0MywyMyBAQAogCiAvKiBDb252ZW5pZW5jZSBtYWNyb3Mg Zm9yIGRlYWxpbmcgd2l0aCBMaXNwIHN0cmluZ3MuICAqLwogCi0jZGVmaW5lIFNEQVRBKHN0 cmluZykJCShYU1RSSU5HIChzdHJpbmcpLT5kYXRhICsgMCkKKyNkZWZpbmUgU0RBVEEoc3Ry aW5nKQkJKFhTVFJJTkcgKHN0cmluZyktPnUuaW1tLmltbWJpdCA/IFwKKwkJCQkgKFhTVFJJ TkcgKHN0cmluZyktPnUuaW1tLmRhdGEpIDogXAorCQkJCSAoWFNUUklORyAoc3RyaW5nKS0+ dS5kYXQuZGF0YSkpCiAjZGVmaW5lIFNSRUYoc3RyaW5nLCBpbmRleCkJKFNEQVRBIChzdHJp bmcpW2luZGV4XSArIDApCiAjZGVmaW5lIFNTRVQoc3RyaW5nLCBpbmRleCwgbmV3KSAoU0RB VEEgKHN0cmluZylbaW5kZXhdID0gKG5ldykpCi0jZGVmaW5lIFNDSEFSUyhzdHJpbmcpCQko WFNUUklORyAoc3RyaW5nKS0+c2l6ZSArIDApCi0jZGVmaW5lIFNCWVRFUyhzdHJpbmcpCQko U1RSSU5HX0JZVEVTIChYU1RSSU5HIChzdHJpbmcpKSArIDApCisjZGVmaW5lIFNDSEFSUyhz dHJpbmcpCQkoWFNUUklORyAoc3RyaW5nKS0+dS5pbW0uaW1tYml0ID8gXAorCQkJCSAoWFNU UklORyAoc3RyaW5nKS0+dS5pbW0uc2l6ZSkgOiBcCisJCQkJIChYU1RSSU5HIChzdHJpbmcp LT51LmRhdC5zaXplKSkKKyNkZWZpbmUgU0JZVEVTKHN0cmluZykJCShzdHJpbmdfYnl0ZXMg KFhTVFJJTkcgKHN0cmluZykpKQogCiAvKiBBdm9pZCAiZGlmZmVyIGluIHNpZ24iIHdhcm5p bmdzLiAgKi8KICNkZWZpbmUgU1NEQVRBKHgpICAoKGNoYXIgKikgU0RBVEEgKHgpKQogCi0j ZGVmaW5lIFNUUklOR19TRVRfQ0hBUlMoc3RyaW5nLCBuZXdzaXplKSBcCi0gICAgKFhTVFJJ TkcgKHN0cmluZyktPnNpemUgPSAobmV3c2l6ZSkpCisjZGVmaW5lIFNUUklOR19TRVRfQ0hB UlMoc3RyaW5nLCBuZXdzaXplKQlcCisgIChYU1RSSU5HIChzdHJpbmcpLT51LmltbS5pbW1i aXQgPwkJXAorICAgKFhTVFJJTkcgKHN0cmluZyktPnUuaW1tLnNpemUgPSAobmV3c2l6ZSkp IDogXAorICAgKFhTVFJJTkcgKHN0cmluZyktPnUuZGF0LnNpemUgPSAobmV3c2l6ZSkpKQog CiAjZGVmaW5lIFNUUklOR19DT1BZSU4oc3RyaW5nLCBpbmRleCwgbmV3LCBjb3VudCkgXAog ICAgIG1lbWNweSAoU0RBVEEgKHN0cmluZykgKyBpbmRleCwgbmV3LCBjb3VudCkKQEAgLTg0 MywyNCArODQ5LDE3IEBACiAjZGVmaW5lIENEUl9TQUZFKGMpCQkJCVwKICAgKENPTlNQICgo YykpID8gWENEUiAoKGMpKSA6IFFuaWwpCiAKKy8qIEZvciB1bmlieXRlIGltbWVkaWF0ZSBz dHJpbmcsIFNJWkVfQllURSBmaWVsZCBpcyBhbHdheXMgc2V0IHRvIHRoaXMuICAqLworI2Rl ZmluZSBTVFJJTkdfVU5JQllURV9JTU1fTUFYICgoMSA8PCAoQklUU19QRVJfQ0hBUiAtIDEp KSAtIDEpCisKKy8qIEZvciB1bmlieXRlIG5vcm1hbCBzdHJpbmcsIFNJWkVfQllURSBmaWVs ZCBpcyBhbHdheXMgc2V0IHRvIHRoaXMuICAqLworI2RlZmluZSBTVFJJTkdfVU5JQllURV9E QVRfTUFYICgoMVVMIDw8IChCSVRTX1BFUl9MT05HIC0gMSkpIC0gMSkKKwogLyogTm9uemVy byBpZiBTVFIgaXMgYSBtdWx0aWJ5dGUgc3RyaW5nLiAgKi8KLSNkZWZpbmUgU1RSSU5HX01V TFRJQllURShTVFIpICBcCi0gIChYU1RSSU5HIChTVFIpLT5zaXplX2J5dGUgPj0gMCkKLQot LyogUmV0dXJuIHRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgU1RSLiAgKi8KLQotI2lmZGVmIEdD X0NIRUNLX1NUUklOR19CWVRFUwotCi1zdHJ1Y3QgTGlzcF9TdHJpbmc7Ci1leHRlcm4gcHRy ZGlmZl90IHN0cmluZ19ieXRlcyAoc3RydWN0IExpc3BfU3RyaW5nICopOwotI2RlZmluZSBT VFJJTkdfQllURVMoUykgc3RyaW5nX2J5dGVzICgoUykpCi0KLSNlbHNlIC8qIG5vdCBHQ19D SEVDS19TVFJJTkdfQllURVMgKi8KLQotI2RlZmluZSBTVFJJTkdfQllURVMoU1RSKSAgXAot ICAoKFNUUiktPnNpemVfYnl0ZSA8IDAgPyAoU1RSKS0+c2l6ZSA6IChTVFIpLT5zaXplX2J5 dGUpCi0KLSNlbmRpZiAvKiBub3QgR0NfQ0hFQ0tfU1RSSU5HX0JZVEVTICovCisjZGVmaW5l IFNUUklOR19NVUxUSUJZVEUoc3RyaW5nKQkJCQkJXAorICAoWFNUUklORyAoc3RyaW5nKS0+ dS5pbW0uaW1tYml0ID8JCQkJCVwKKyAgIChYU1RSSU5HIChzdHJpbmcpLT51LmltbS5zaXpl X2J5dGUgIT0gU1RSSU5HX1VOSUJZVEVfSU1NX01BWCkgOglcCisgICAoWFNUUklORyAoc3Ry aW5nKS0+dS5kYXQuc2l6ZV9ieXRlICE9IFNUUklOR19VTklCWVRFX0RBVF9NQVgpKQogCiAv KiBBbiB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIGEgTGlzcCBzdHJp bmcsIG5vdAogICAgY291bnRpbmcgdGhlIHRlcm1pbmF0aW5nIG51bGwuICBUaGlzIGEgdGln aHQgZW5vdWdoIGJvdW5kIHRvCkBAIC04NzQsMjAgKzg3MywzMiBAQAogICAgcHJpdmF0ZS4g IFRoZSBjYXN0IHRvIHB0cmRpZmZfdCBlbnN1cmVzIHRoYXQgU1RSSU5HX0JZVEVTX0JPVU5E IGlzCiAgICBzaWduZWQuICAqLwogI2RlZmluZSBTVFJJTkdfQllURVNfQk9VTkQgIFwKLSAg bWluIChNT1NUX1BPU0lUSVZFX0ZJWE5VTSwgKHB0cmRpZmZfdCkgbWluIChTSVpFX01BWCwg UFRSRElGRl9NQVgpIC0gMSkKKyAgbWluIChNT1NUX1BPU0lUSVZFX0ZJWE5VTSwgXAorICAg ICAgIChwdHJkaWZmX3QpIG1pbiAoU0laRV9NQVgsIFNUUklOR19VTklCWVRFX0RBVF9NQVgg LSAxKSAtIDEpCisKKy8qIE1heGltdW0gYW1vdW50IG9mIGJ5dGVzLCBpbmNsdWRpbmcgJ1ww JywgaW4gYW4gaW1tZWRpYXRlIHN0cmluZy4gICovCisjZGVmaW5lIFNUUklOR19JTU1fU0la RSAoc2l6ZW9mICh2b2lkICopICsgMiAqIHNpemVvZiAodW5zaWduZWQgbG9uZykgLSAyKQog CiAvKiBNYXJrIFNUUiBhcyBhIHVuaWJ5dGUgc3RyaW5nLiAgKi8KICNkZWZpbmUgU1RSSU5H X1NFVF9VTklCWVRFKFNUUikgIFwKLSAgZG8geyBpZiAoRVEgKFNUUiwgZW1wdHlfbXVsdGli eXRlX3N0cmluZykpICBcCi0gICAgICAoU1RSKSA9IGVtcHR5X3VuaWJ5dGVfc3RyaW5nOyAg XAotICAgIGVsc2UgWFNUUklORyAoU1RSKS0+c2l6ZV9ieXRlID0gLTE7IH0gd2hpbGUgKDAp CisgIGRvIHsgaWYgKEVRIChTVFIsIGVtcHR5X211bHRpYnl0ZV9zdHJpbmcpKQkJCVwKKyAg ICAgIChTVFIpID0gZW1wdHlfdW5pYnl0ZV9zdHJpbmc7CQkJCVwKKyAgICBlbHNlIGlmIChY U1RSSU5HIChTVFIpLT51LmltbS5pbW1iaXQpCQkJXAorICAgICAgWFNUUklORyAoU1RSKS0+ dS5pbW0uc2l6ZV9ieXRlID0gU1RSSU5HX1VOSUJZVEVfSU1NX01BWDsJXAorICAgIGVsc2UJ CQkJCQkJXAorICAgICAgWFNUUklORyAoU1RSKS0+dS5kYXQuc2l6ZV9ieXRlID0gU1RSSU5H X1VOSUJZVEVfREFUX01BWDsJXAorICB9IHdoaWxlICgwKQogCiAvKiBNYXJrIFNUUiBhcyBh IG11bHRpYnl0ZSBzdHJpbmcuICBBc3N1cmUgdGhhdCBTVFIgY29udGFpbnMgb25seQogICAg QVNDSUkgY2hhcmFjdGVycyBpbiBhZHZhbmNlLiAgKi8KLSNkZWZpbmUgU1RSSU5HX1NFVF9N VUxUSUJZVEUoU1RSKSAgXAotICBkbyB7IGlmIChFUSAoU1RSLCBlbXB0eV91bmlieXRlX3N0 cmluZykpICBcCi0gICAgICAoU1RSKSA9IGVtcHR5X211bHRpYnl0ZV9zdHJpbmc7ICBcCi0g ICAgZWxzZSBYU1RSSU5HIChTVFIpLT5zaXplX2J5dGUgPSBYU1RSSU5HIChTVFIpLT5zaXpl OyB9IHdoaWxlICgwKQorI2RlZmluZSBTVFJJTkdfU0VUX01VTFRJQllURShTVFIpCQkJCSAg XAorICBkbyB7IGlmIChFUSAoU1RSLCBlbXB0eV91bmlieXRlX3N0cmluZykpCQkJICBcCisg ICAgICAoU1RSKSA9IGVtcHR5X211bHRpYnl0ZV9zdHJpbmc7CQkJCSAgXAorICAgIGVsc2Ug aWYgKFhTVFJJTkcgKFNUUiktPnUuaW1tLmltbWJpdCkJCQkgIFwKKyAgICAgIFhTVFJJTkcg KFNUUiktPnUuaW1tLnNpemVfYnl0ZSA9IFhTVFJJTkcgKFNUUiktPnUuaW1tLnNpemU7IFwK KyAgICBlbHNlCQkJCQkJCSAgXAorICAgICAgWFNUUklORyAoU1RSKS0+dS5kYXQuc2l6ZV9i eXRlID0gWFNUUklORyAoU1RSKS0+dS5kYXQuc2l6ZTsgXAorICB9IHdoaWxlICgwKQogCiAv KiBHZXQgdGV4dCBwcm9wZXJ0aWVzLiAgKi8KICNkZWZpbmUgU1RSSU5HX0lOVEVSVkFMUyhT VFIpICAoWFNUUklORyAoU1RSKS0+aW50ZXJ2YWxzICsgMCkKQEAgLTg5OCwxMiArOTA5LDUz IEBACiAvKiBJbiBhIHN0cmluZyBvciB2ZWN0b3IsIHRoZSBzaWduIGJpdCBvZiB0aGUgYHNp emUnIGlzIHRoZSBnYyBtYXJrIGJpdCAqLwogCiBzdHJ1Y3QgTGlzcF9TdHJpbmcKLSAgewot ICAgIHB0cmRpZmZfdCBzaXplOwotICAgIHB0cmRpZmZfdCBzaXplX2J5dGU7Ci0gICAgSU5U RVJWQUwgaW50ZXJ2YWxzOwkJLyogdGV4dCBwcm9wZXJ0aWVzIGluIHRoaXMgc3RyaW5nICov Ci0gICAgdW5zaWduZWQgY2hhciAqZGF0YTsKLSAgfTsKK3sKKyAgLyogVGV4dCBwcm9wZXJ0 aWVzIGluIHRoaXMgc3RyaW5nLiAgU2hvdWxkIGJlIHRoZSBmaXJzdAorICAgICBtZW1iZXIg c2luY2UgTkVYVF9GUkVFX0xJU1BfU1RSSU5HIGZyb20gYWxsb2MuYyB1c2VzIGl0LiAgKi8K KyAgSU5URVJWQUwgaW50ZXJ2YWxzOworCisgIHVuaW9uIHsKKyAgICAvKiBHQyBtYXJrIGJp dCBhbmQgc3VidHlwZSBiaXQgYXJlIGluIElNTSBqdXN0IGJ5IGNvbnZlbnRpb24gLSB3aGVu CisgICAgICAgSU1NQklUIGlzIDAsIHRoZSBEQVQgZmllbGQgaXMgdXNlZCBleGNlcHQgaXQn cyBVTlVTRUQgZmllbGQuICAqLworICAgIHN0cnVjdCB7CisgICAgICB1bnNpZ25lZCBpbW1i aXQgOiAxOworICAgICAgdW5zaWduZWQgc2l6ZSA6IEJJVFNfUEVSX0NIQVIgLSAxOworICAg ICAgdW5zaWduZWQgY2hhciBkYXRhW1NUUklOR19JTU1fU0laRV07CisgICAgICB1bnNpZ25l ZCBzaXplX2J5dGUgOiBCSVRTX1BFUl9DSEFSIC0gMTsKKyAgICAgIHVuc2lnbmVkIGdjbWFy a2JpdCA6IDE7CisgICAgfSBpbW07CisKKyAgICBzdHJ1Y3QgeworICAgICAgdW5zaWduZWQg aW1tYml0IDogMTsKKyAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSA6IEJJVFNfUEVSX0xPTkcg LSAxOworICAgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICAgIHVuc2lnbmVkIGxvbmcg c2l6ZV9ieXRlIDogQklUU19QRVJfTE9ORyAtIDE7CisgICAgICB1bnNpZ25lZCBnY21hcmti aXQgOiAxOworICAgIH0gZGF0OworICB9IHU7Cit9OworCisvKiBSZXR1cm4gdGhlIGxlbmd0 aCBpbiBieXRlcyBvZiBTVFIuICAqLworCisjaWZkZWYgR0NfQ0hFQ0tfU1RSSU5HX0JZVEVT CisKK3N0cnVjdCBMaXNwX1N0cmluZzsKK2V4dGVybiBwdHJkaWZmX3Qgc3RyaW5nX2J5dGVz IChzdHJ1Y3QgTGlzcF9TdHJpbmcgKik7CisjZGVmaW5lIFNUUklOR19CWVRFUyhTKSBzdHJp bmdfYnl0ZXMgKChTKSkKKworI2Vsc2UgLyogbm90IEdDX0NIRUNLX1NUUklOR19CWVRFUyAq LworCitzdGF0aWMgaW5saW5lCitwdHJkaWZmX3Qgc3RyaW5nX2J5dGVzIChzdHJ1Y3QgTGlz cF9TdHJpbmcgKnMpCit7CisgIGlmIChzLT51LmltbS5pbW1iaXQpCisgICAgcmV0dXJuIHMt PnUuaW1tLnNpemVfYnl0ZSA9PSBTVFJJTkdfVU5JQllURV9JTU1fTUFYID8KKyAgICAgIHMt PnUuaW1tLnNpemUgOiBzLT51LmltbS5zaXplX2J5dGU7CisgIHJldHVybiBzLT51LmRhdC5z aXplX2J5dGUgPT0gU1RSSU5HX1VOSUJZVEVfREFUX01BWCA/CisgICAgcy0+dS5kYXQuc2l6 ZSA6IHMtPnUuZGF0LnNpemVfYnl0ZTsKK30KKworI2VuZGlmIC8qIG5vdCBHQ19DSEVDS19T VFJJTkdfQllURVMgKi8KIAogLyogSGVhZGVyIG9mIHZlY3Rvci1saWtlIG9iamVjdHMuICBU aGlzIGRvY3VtZW50cyB0aGUgbGF5b3V0IGNvbnN0cmFpbnRzIG9uCiAgICB2ZWN0b3JzIGFu ZCBwc2V1ZG92ZWN0b3JzIG90aGVyIHRoYW4gc3RydWN0IExpc3BfU3Vici4gIEl0IGFsc28g cHJldmVudHMKCg== --------------020103000908070501020303--