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: [PATCH] shrink struct vectorlike_header Date: Thu, 11 Oct 2012 10:41:48 +0400 Message-ID: <50766A2C.8070705@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040309000707000009010403" X-Trace: ger.gmane.org 1349937745 3121 80.91.229.3 (11 Oct 2012 06:42:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 11 Oct 2012 06:42:25 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Oct 11 08:42:32 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 1TMCTW-0003r2-19 for ged-emacs-devel@m.gmane.org; Thu, 11 Oct 2012 08:42:30 +0200 Original-Received: from localhost ([::1]:49043 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMCTP-00043s-EY for ged-emacs-devel@m.gmane.org; Thu, 11 Oct 2012 02:42:23 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:47685) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMCTA-0003vp-O9 for emacs-devel@gnu.org; Thu, 11 Oct 2012 02:42:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TMCT2-0001IT-O8 for emacs-devel@gnu.org; Thu, 11 Oct 2012 02:42:08 -0400 Original-Received: from forward9.mail.yandex.net ([77.88.61.48]:33986) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMCT1-0001Hl-L4 for emacs-devel@gnu.org; Thu, 11 Oct 2012 02:42:00 -0400 Original-Received: from smtp6.mail.yandex.net (smtp6.mail.yandex.net [77.88.61.56]) by forward9.mail.yandex.net (Yandex) with ESMTP id 53E61CE1529 for ; Thu, 11 Oct 2012 10:41:48 +0400 (MSK) Original-Received: from smtp6.mail.yandex.net (localhost [127.0.0.1]) by smtp6.mail.yandex.net (Yandex) with ESMTP id 3D76C16405CF for ; Thu, 11 Oct 2012 10:41:48 +0400 (MSK) Original-Received: from unknown (unknown [37.139.80.10]) by smtp6.mail.yandex.net (nwsmtp/Yandex) with ESMTP id flwKAIt7-flw8kgZX; Thu, 11 Oct 2012 10:41:47 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1349937708; bh=42lt+I+qM3lFKQ59S9KNys43W/jNp2u9G4ltBR24CC8=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type; b=GhX9agb+6bcODBfktrqjUPRcR5ugjWuPlgqd/mmN5sb5d23CYo5TVSkYbVX3++ELY /YcCIJH8jvO6ILyEtVRG2+SKj4ObEcPXjMQ0OIzpNPjHcTj73e05IMBS77j0KGlZD5 OjnQpvE3lyNeTmZ1JaOQSjLw41gmYKZOtI69os0E= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 77.88.61.48 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:154282 Archived-At: This is a multi-part message in MIME format. --------------040309000707000009010403 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This is an attempt to shrink struct vectorlike_header to the only 'size' field. For pseudovectors, 'size' field is rearranged to have one more bitfield to record the size of non-Lisp_Object area, thus giving the possibility to calculate the memory footprint of any vectorlike object. Dmitry --------------040309000707000009010403 Content-Type: text/plain; charset=UTF-8; name="shrink_vectorlike_header.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="shrink_vectorlike_header.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0x MC0xMCAxNTozMToyMSArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0xMC0xMSAwNjowOTo1 NiArMDAwMApAQCAtMjA0MCw3ICsyMDQwLDcgQEAKICAgdmFsID0gRm1ha2VfdmVjdG9yICht YWtlX251bWJlciAobGVuZ3RoX2luX2VsdHMgKyBleHRyYV9ib29sX2VsdHMpLCBRbmlsKTsK IAogICAvKiBObyBMaXNwX09iamVjdCB0byB0cmFjZSBpbiB0aGVyZS4gICovCi0gIFhTRVRQ VkVDVFlQRVNJWkUgKFhWRUNUT1IgKHZhbCksIFBWRUNfQk9PTF9WRUNUT1IsIDApOworICBY U0VUUFZFQ1RZUEVTSVpFIChYVkVDVE9SICh2YWwpLCBQVkVDX0JPT0xfVkVDVE9SLCAwLCAw KTsKIAogICBwID0gWEJPT0xfVkVDVE9SICh2YWwpOwogICBwLT5zaXplID0gWEZBU1RJTlQg KGxlbmd0aCk7CkBAIC0yNjE5LDE1ICsyNjE5LDM3IEBACiAKICNkZWZpbmUgVklOREVYKG5i eXRlcykgKCgobmJ5dGVzKSAtIFZCTE9DS19CWVRFU19NSU4pIC8gcm91bmR1cF9zaXplKQog CisvKiBXaGVuIFYgaXMgb24gdGhlIGZyZWUgbGlzdCwgVi0+Y29udGVudHNbMF0gaXMgdXNl ZCBhcyBhIHBvaW50ZXIgdG8KKyAgIG5leHQgdmVjdG9yIG9uIHRoZSBmcmVlIGxpc3QuICAq LworCisjZGVmaW5lIE5FWFRfSU5fRlJFRV9MSVNUKHYpCQkJCVwKKyAgKCooc3RydWN0IExp c3BfVmVjdG9yICoqKSgoY2hhciAqKSB2ICsgaGVhZGVyX3NpemUpKQorCisvKiBGb3IgdGhl IGxhcmdlIHZlY3RvciBWLCBwcmV2aW91cyB3b3JkIGlzIHVzZWQgYXMgYSBwb2ludGVyCisg ICB0byBuZXh0IGxhcmdlIHZlY3Rvci4gICovCisKKyNkZWZpbmUgTkVYVF9MQVJHRV9WRUNU T1IodikJCQkJCVwKKyAgKCooc3RydWN0IExpc3BfVmVjdG9yICoqKSgoY2hhciAqKSB2IC0g c2l6ZW9mICh2b2lkICopKSkKKworLyogQ29udmVydCBmcm9tIG1lbW9yeSBibG9jayB1c2Vk IGZvciBsYXJnZSB2ZWN0b3IgdG8gdGhlIHZlY3RvciBpdHNlbGYuICAqLworCisjZGVmaW5l IExBUkdFX1ZFQ1RPUl9TVEFSVChtZW0pCQkJCQlcCisgIChzdHJ1Y3QgTGlzcF9WZWN0b3Ig KikoKGNoYXIgKikgbWVtICsgc2l6ZW9mICh2b2lkICopKQorCisvKiBDb252ZXJ0IGZyb20g bGFyZ2UgdmVjdG9yIHRvIGl0J3MgbWVtb3J5IGJsb2NrLiAgKi8KKworI2RlZmluZSBMQVJH RV9WRUNUT1JfTUVNKHYpICh2b2lkICopKChjaGFyICopIHYgLSBzaXplb2YgKHZvaWQgKikp CisKIC8qIENvbW1vbiBzaG9ydGN1dCB0byBzZXR1cCB2ZWN0b3Igb24gYSBmcmVlIGxpc3Qu ICAqLwogCiAjZGVmaW5lIFNFVFVQX09OX0ZSRUVfTElTVCh2LCBuYnl0ZXMsIGluZGV4KQkJ CVwKICAgZG8gewkJCQkJCQkJXAotICAgIFhTRVRQVkVDVFlQRVNJWkUgKHYsIFBWRUNfRlJF RSwgbmJ5dGVzKTsJCQlcCisgICAgWFNFVFBWRUNUWVBFU0laRSAodiwgUFZFQ19GUkVFLCAw LAkJCQlcCisJCSAgICAgICgobmJ5dGVzKSAtIGhlYWRlcl9zaXplKSAvIHdvcmRfc2l6ZSk7 CVwKICAgICBlYXNzZXJ0ICgobmJ5dGVzKSAlIHJvdW5kdXBfc2l6ZSA9PSAwKTsJCQlcCiAg ICAgKGluZGV4KSA9IFZJTkRFWCAobmJ5dGVzKTsJCQkJCVwKICAgICBlYXNzZXJ0ICgoaW5k ZXgpIDwgVkVDVE9SX01BWF9GUkVFX0xJU1RfSU5ERVgpOwkJXAotICAgICh2KS0+aGVhZGVy Lm5leHQudmVjdG9yID0gdmVjdG9yX2ZyZWVfbGlzdHNbaW5kZXhdOwkJXAorICAgIE5FWFRf SU5fRlJFRV9MSVNUICh2KSA9IHZlY3Rvcl9mcmVlX2xpc3RzW2luZGV4XTsJCVwKICAgICB2 ZWN0b3JfZnJlZV9saXN0c1tpbmRleF0gPSAodik7CQkJCVwKICAgICB0b3RhbF9mcmVlX3Zl Y3Rvcl9zbG90cyArPSAobmJ5dGVzKSAvIHdvcmRfc2l6ZTsJCVwKICAgfSB3aGlsZSAoMCkK QEAgLTI3MDYsOCArMjcyOCw3IEBACiAgIGlmICh2ZWN0b3JfZnJlZV9saXN0c1tpbmRleF0p CiAgICAgewogICAgICAgdmVjdG9yID0gdmVjdG9yX2ZyZWVfbGlzdHNbaW5kZXhdOwotICAg ICAgdmVjdG9yX2ZyZWVfbGlzdHNbaW5kZXhdID0gdmVjdG9yLT5oZWFkZXIubmV4dC52ZWN0 b3I7Ci0gICAgICB2ZWN0b3ItPmhlYWRlci5uZXh0Lm5ieXRlcyA9IG5ieXRlczsKKyAgICAg IHZlY3Rvcl9mcmVlX2xpc3RzW2luZGV4XSA9IE5FWFRfSU5fRlJFRV9MSVNUICh2ZWN0b3Ip OwogICAgICAgdG90YWxfZnJlZV92ZWN0b3Jfc2xvdHMgLT0gbmJ5dGVzIC8gd29yZF9zaXpl OwogICAgICAgcmV0dXJuIHZlY3RvcjsKICAgICB9CkBAIC0yNzIxLDggKzI3NDIsNyBAQAog ICAgICAgewogCS8qIFRoaXMgdmVjdG9yIGlzIGxhcmdlciB0aGFuIHJlcXVlc3RlZC4gICov CiAJdmVjdG9yID0gdmVjdG9yX2ZyZWVfbGlzdHNbaW5kZXhdOwotCXZlY3Rvcl9mcmVlX2xp c3RzW2luZGV4XSA9IHZlY3Rvci0+aGVhZGVyLm5leHQudmVjdG9yOwotCXZlY3Rvci0+aGVh ZGVyLm5leHQubmJ5dGVzID0gbmJ5dGVzOworCXZlY3Rvcl9mcmVlX2xpc3RzW2luZGV4XSA9 IE5FWFRfSU5fRlJFRV9MSVNUICh2ZWN0b3IpOwogCXRvdGFsX2ZyZWVfdmVjdG9yX3Nsb3Rz IC09IG5ieXRlcyAvIHdvcmRfc2l6ZTsKIAogCS8qIEV4Y2VzcyBieXRlcyBhcmUgdXNlZCBm b3IgdGhlIHNtYWxsZXIgdmVjdG9yLApAQCAtMjczOSw3ICsyNzU5LDYgQEAKIAogICAvKiBO ZXcgdmVjdG9yIHdpbGwgYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGJsb2NrLiAgKi8K ICAgdmVjdG9yID0gKHN0cnVjdCBMaXNwX1ZlY3RvciAqKSBibG9jay0+ZGF0YTsKLSAgdmVj dG9yLT5oZWFkZXIubmV4dC5uYnl0ZXMgPSBuYnl0ZXM7CiAKICAgLyogSWYgdGhlIHJlc3Qg b2Ygc3BhY2UgZnJvbSB0aGlzIGJsb2NrIGlzIGxhcmdlIGVub3VnaAogICAgICBmb3Igb25l LXNsb3QgdmVjdG9yIGF0IGxlYXN0LCBzZXQgdXAgaXQgb24gYSBmcmVlIGxpc3QuICAqLwpA QCAtMjc1OSwxNSArMjc3OCwyNyBAQAogICAoKGNoYXIgKikgKHZlY3RvcikgPD0gKGJsb2Nr KS0+ZGF0YQkJXAogICAgKyBWRUNUT1JfQkxPQ0tfQllURVMgLSBWQkxPQ0tfQllURVNfTUlO KQogCi0vKiBOdW1iZXIgb2YgYnl0ZXMgdXNlZCBieSB2ZWN0b3ItYmxvY2stYWxsb2NhdGVk IG9iamVjdC4gIFRoaXMgaXMgdGhlIG9ubHkKLSAgIHBsYWNlIHdoZXJlIHdlIGFjdHVhbGx5 IHVzZSB0aGUgYG5ieXRlcycgZmllbGQgb2YgdGhlIHZlY3Rvci1oZWFkZXIuCi0gICBJLmUu IHdlIGNvdWxkIGdldCByaWQgb2YgdGhlIGBuYnl0ZXMnIGZpZWxkIGJ5IGNvbXB1dGluZyBp dCBiYXNlZCBvbiB0aGUKLSAgIHZlY3Rvci10eXBlLiAgKi8KLQotI2RlZmluZSBQU0VVRE9W RUNUT1JfTkJZVEVTKHZlY3RvcikgXAotICAoUFNFVURPVkVDVE9SX1RZUEVQICgmdmVjdG9y LT5oZWFkZXIsIFBWRUNfRlJFRSkJXAotICAgPyB2ZWN0b3ItPmhlYWRlci5zaXplICYgUFNF VURPVkVDVE9SX1NJWkVfTUFTSwlcCi0gICA6IHZlY3Rvci0+aGVhZGVyLm5leHQubmJ5dGVz KQorLyogUmV0dXJuIHRoZSBtZW1vcnkgZm9vdHByaW50IG9mIFYgaW4gYnl0ZXMuICAqLwor CitzdGF0aWMgcHRyZGlmZl90Cit2ZWN0b3JfbmJ5dGVzIChzdHJ1Y3QgTGlzcF9WZWN0b3Ig KnYpCit7CisgIHB0cmRpZmZfdCBzaXplID0gdi0+aGVhZGVyLnNpemUgJiB+QVJSQVlfTUFS S19GTEFHOworCisgIGlmIChzaXplICYgUFNFVURPVkVDVE9SX0ZMQUcpCisgICAgeworICAg ICAgaWYgKFBTRVVET1ZFQ1RPUl9UWVBFUCAoJnYtPmhlYWRlciwgUFZFQ19CT09MX1ZFQ1RP UikpCisJcmV0dXJuIChib29sX2hlYWRlcl9zaXplCisJCSsgKCgoc3RydWN0IExpc3BfQm9v bF9WZWN0b3IgKikgdiktPnNpemUKKwkJICAgKyBCT09MX1ZFQ1RPUl9CSVRTX1BFUl9DSEFS IC0gMSkKKwkJLyBCT09MX1ZFQ1RPUl9CSVRTX1BFUl9DSEFSKTsKKyAgICAgIHJldHVybiAo aGVhZGVyX3NpemUKKwkgICAgICArICgoc2l6ZSAmIFBTRVVET1ZFQ1RPUl9TSVpFX01BU0sp CisJCSArICgoc2l6ZSAmIFBTRVVET1ZFQ1RPUl9SRVNUX01BU0spCisJCSAgICA+PiBQU0VV RE9WRUNUT1JfU0laRV9CSVRTKSkgKiB3b3JkX3NpemUpOworICAgIH0KKyAgcmV0dXJuIGhl YWRlcl9zaXplICsgc2l6ZSAqIHdvcmRfc2l6ZTsKK30KIAogLyogUmVjbGFpbSBzcGFjZSB1 c2VkIGJ5IHVubWFya2VkIHZlY3RvcnMuICAqLwogCkBAIC0yNzg1LDYgKzI4MTYsNyBAQAog ICBmb3IgKGJsb2NrID0gdmVjdG9yX2Jsb2NrczsgYmxvY2s7IGJsb2NrID0gKmJwcmV2KQog ICAgIHsKICAgICAgIGJvb2wgZnJlZV90aGlzX2Jsb2NrID0gMDsKKyAgICAgIHB0cmRpZmZf dCBuYnl0ZXM7CiAKICAgICAgIGZvciAodmVjdG9yID0gKHN0cnVjdCBMaXNwX1ZlY3RvciAq KSBibG9jay0+ZGF0YTsKIAkgICBWRUNUT1JfSU5fQkxPQ0sgKHZlY3RvciwgYmxvY2spOyB2 ZWN0b3IgPSBuZXh0KQpAQCAtMjc5MywxNCArMjgyNSwxNiBAQAogCSAgICB7CiAJICAgICAg VkVDVE9SX1VOTUFSSyAodmVjdG9yKTsKIAkgICAgICB0b3RhbF92ZWN0b3JzKys7Ci0JICAg ICAgdG90YWxfdmVjdG9yX3Nsb3RzICs9IHZlY3Rvci0+aGVhZGVyLm5leHQubmJ5dGVzIC8g d29yZF9zaXplOwotCSAgICAgIG5leHQgPSBBRFZBTkNFICh2ZWN0b3IsIHZlY3Rvci0+aGVh ZGVyLm5leHQubmJ5dGVzKTsKKwkgICAgICBuYnl0ZXMgPSB2ZWN0b3JfbmJ5dGVzICh2ZWN0 b3IpOworCSAgICAgIHRvdGFsX3ZlY3Rvcl9zbG90cyArPSBuYnl0ZXMgLyB3b3JkX3NpemU7 CisJICAgICAgbmV4dCA9IEFEVkFOQ0UgKHZlY3RvciwgbmJ5dGVzKTsKIAkgICAgfQogCSAg ZWxzZQogCSAgICB7Ci0JICAgICAgcHRyZGlmZl90IG5ieXRlcyA9IFBTRVVET1ZFQ1RPUl9O QllURVMgKHZlY3Rvcik7Ci0JICAgICAgcHRyZGlmZl90IHRvdGFsX2J5dGVzID0gbmJ5dGVz OworCSAgICAgIHB0cmRpZmZfdCB0b3RhbF9ieXRlczsKIAorCSAgICAgIG5ieXRlcyA9IHZl Y3Rvcl9uYnl0ZXMgKHZlY3Rvcik7CisJICAgICAgdG90YWxfYnl0ZXMgPSBuYnl0ZXM7CiAJ ICAgICAgbmV4dCA9IEFEVkFOQ0UgKHZlY3RvciwgbmJ5dGVzKTsKIAogCSAgICAgIC8qIFdo aWxlIE5FWFQgaXMgbm90IG1hcmtlZCwgdHJ5IHRvIGNvYWxlc2NlIHdpdGggVkVDVE9SLApA QCAtMjgxMCw3ICsyODQ0LDcgQEAKIAkJewogCQkgIGlmIChWRUNUT1JfTUFSS0VEX1AgKG5l eHQpKQogCQkgICAgYnJlYWs7Ci0JCSAgbmJ5dGVzID0gUFNFVURPVkVDVE9SX05CWVRFUyAo bmV4dCk7CisJCSAgbmJ5dGVzID0gdmVjdG9yX25ieXRlcyAobmV4dCk7CiAJCSAgdG90YWxf Ynl0ZXMgKz0gbmJ5dGVzOwogCQkgIG5leHQgPSBBRFZBTkNFIChuZXh0LCBuYnl0ZXMpOwog CQl9CkBAIC0yODY3LDEyICsyOTAxLDE1IEBACiAJICBlbHNlCiAJICAgIHRvdGFsX3ZlY3Rv cl9zbG90cwogCSAgICAgICs9IGhlYWRlcl9zaXplIC8gd29yZF9zaXplICsgdmVjdG9yLT5o ZWFkZXIuc2l6ZTsKLQkgIHZwcmV2ID0gJnZlY3Rvci0+aGVhZGVyLm5leHQudmVjdG9yOwor CSAgdnByZXYgPSAmTkVYVF9MQVJHRV9WRUNUT1IgKHZlY3Rvcik7CiAJfQogICAgICAgZWxz ZQogCXsKLQkgICp2cHJldiA9IHZlY3Rvci0+aGVhZGVyLm5leHQudmVjdG9yOwotCSAgbGlz cF9mcmVlICh2ZWN0b3IpOworCSAgKnZwcmV2ID0gTkVYVF9MQVJHRV9WRUNUT1IgKHZlY3Rv cik7CisjaWYgR0NfTUFSS19TVEFDSyAmJiAhZGVmaW5lZCBHQ19NQUxMT0NfQ0hFQ0sKKwkg IG1lbV9kZWxldGUgKG1lbV9maW5kICh2ZWN0b3IpKTsKKyNlbmRpZgorCSAgeGZyZWUgKExB UkdFX1ZFQ1RPUl9NRU0gKHZlY3RvcikpOwogCX0KICAgICB9CiB9CkBAIC0yOTA0LDggKzI5 NDEsMTUgQEAKIAlwID0gYWxsb2NhdGVfdmVjdG9yX2Zyb21fYmxvY2sgKHZyb3VuZHVwIChu Ynl0ZXMpKTsKICAgICAgIGVsc2UKIAl7Ci0JICBwID0gbGlzcF9tYWxsb2MgKG5ieXRlcywg TUVNX1RZUEVfVkVDVE9STElLRSk7Ci0JICBwLT5oZWFkZXIubmV4dC52ZWN0b3IgPSBsYXJn ZV92ZWN0b3JzOworCSAgdm9pZCAqbWVtOworCSAgLyogQ2FuJ3QgdXNlIGxpc3BfbWFsbG9j IGZvciBQIGJlY2F1c2UKKwkgICAgIE5FWFRfTEFSR0VfVkVDVE9SIChQKSBpcyBvdXRzaWRl IG9mIFAuICAqLworCSAgbWVtID0geG1hbGxvYyAobmJ5dGVzICsgc2l6ZW9mICh2b2lkICop KTsKKwkgIHAgPSBMQVJHRV9WRUNUT1JfU1RBUlQgKG1lbSk7CisjaWYgR0NfTUFSS19TVEFD SyAmJiAhZGVmaW5lZCBHQ19NQUxMT0NfQ0hFQ0sKKwkgIG1lbV9pbnNlcnQgKHAsIChjaGFy ICopIHAgKyBuYnl0ZXMsIE1FTV9UWVBFX1ZFQ1RPUkxJS0UpOworI2VuZGlmCisJICBORVhU X0xBUkdFX1ZFQ1RPUiAocCkgPSBsYXJnZV92ZWN0b3JzOwogCSAgbGFyZ2VfdmVjdG9ycyA9 IHA7CiAJfQogCkBAIC0yOTUyLDcgKzI5OTYsNyBAQAogICBmb3IgKGkgPSAwOyBpIDwgbGlz cGxlbjsgKytpKQogICAgIHYtPmNvbnRlbnRzW2ldID0gUW5pbDsKIAotICBYU0VUUFZFQ1RZ UEVTSVpFICh2LCB0YWcsIGxpc3BsZW4pOworICBYU0VUUFZFQ1RZUEVTSVpFICh2LCB0YWcs IGxpc3BsZW4sIG1lbWxlbiAtIGxpc3BsZW4pOwogICByZXR1cm4gdjsKIH0KIApAQCAtMjk2 MSwxMCArMzAwNSw5IEBACiB7CiAgIHN0cnVjdCBidWZmZXIgKmIgPSBsaXNwX21hbGxvYyAo c2l6ZW9mICpiLCBNRU1fVFlQRV9CVUZGRVIpOwogCi0gIFhTRVRQVkVDVFlQRVNJWkUgKGIs IFBWRUNfQlVGRkVSLCAob2Zmc2V0b2YgKHN0cnVjdCBidWZmZXIsIG93bl90ZXh0KQotCQkJ CSAgICAgLSBoZWFkZXJfc2l6ZSkgLyB3b3JkX3NpemUpOworICBCVUZGRVJfUFZFQ19JTklU IChiKTsKICAgLyogUHV0IEIgb24gdGhlIGNoYWluIG9mIGFsbCBidWZmZXJzIGluY2x1ZGlu ZyBraWxsZWQgb25lcy4gICovCi0gIGItPmhlYWRlci5uZXh0LmJ1ZmZlciA9IGFsbF9idWZm ZXJzOworICBiLT5uZXh0ID0gYWxsX2J1ZmZlcnM7CiAgIGFsbF9idWZmZXJzID0gYjsKICAg LyogTm90ZSB0aGF0IHRoZSByZXN0IGZpZWxkcyBvZiBCIGFyZSBub3QgaW5pdGlhbGl6ZWQu ICAqLwogICByZXR1cm4gYjsKQEAgLTQwNjgsMTMgKzQxMTEsMTAgQEAKICAgICAgIHdoaWxl IChWRUNUT1JfSU5fQkxPQ0sgKHZlY3RvciwgYmxvY2spCiAJICAgICAmJiB2ZWN0b3IgPD0g KHN0cnVjdCBMaXNwX1ZlY3RvciAqKSBwKQogCXsKLQkgIGlmIChQU0VVRE9WRUNUT1JfVFlQ RVAgKCZ2ZWN0b3ItPmhlYWRlciwgUFZFQ19GUkVFKSkKLQkgICAgdmVjdG9yID0gQURWQU5D RSAodmVjdG9yLCAodmVjdG9yLT5oZWFkZXIuc2l6ZQotCQkJCSAgICAgICAmIFBTRVVET1ZF Q1RPUl9TSVpFX01BU0spKTsKLQkgIGVsc2UgaWYgKHZlY3RvciA9PSBwKQorCSAgaWYgKCFQ U0VVRE9WRUNUT1JfVFlQRVAgKCZ2ZWN0b3ItPmhlYWRlciwgUFZFQ19GUkVFKSAmJiB2ZWN0 b3IgPT0gcCkKIAkgICAgcmV0dXJuIDE7CiAJICBlbHNlCi0JICAgIHZlY3RvciA9IEFEVkFO Q0UgKHZlY3RvciwgdmVjdG9yLT5oZWFkZXIubmV4dC5uYnl0ZXMpOworCSAgICB2ZWN0b3Ig PSBBRFZBTkNFICh2ZWN0b3IsIHZlY3Rvcl9uYnl0ZXMgKHZlY3RvcikpOwogCX0KICAgICB9 CiAgIGVsc2UgaWYgKG0tPnR5cGUgPT0gTUVNX1RZUEVfVkVDVE9STElLRSAmJiBwID09IG0t PnN0YXJ0KQpAQCAtNTY4Nyw3ICs1NzI3LDcgQEAKIAogCWlmIChwdHItPmhlYWRlci5zaXpl ICYgUFNFVURPVkVDVE9SX0ZMQUcpCiAJICBwdmVjdHlwZSA9ICgocHRyLT5oZWFkZXIuc2l6 ZSAmIFBWRUNfVFlQRV9NQVNLKQotCQkgICAgICA+PiBQU0VVRE9WRUNUT1JfU0laRV9CSVRT KTsKKwkJICAgICAgPj4gUFNFVURPVkVDVE9SX0FSRUFfQklUUyk7CiAJZWxzZQogCSAgcHZl Y3R5cGUgPSBQVkVDX05PUk1BTF9WRUNUT1I7CiAKQEAgLTYzMTcsNyArNjM1Nyw3IEBACiAg ICAgZm9yIChidWZmZXIgPSBhbGxfYnVmZmVyczsgYnVmZmVyOyBidWZmZXIgPSAqYnByZXYp CiAgICAgICBpZiAoIVZFQ1RPUl9NQVJLRURfUCAoYnVmZmVyKSkKIAl7Ci0JICAqYnByZXYg PSBidWZmZXItPmhlYWRlci5uZXh0LmJ1ZmZlcjsKKwkgICpicHJldiA9IGJ1ZmZlci0+bmV4 dDsKIAkgIGxpc3BfZnJlZSAoYnVmZmVyKTsKIAl9CiAgICAgICBlbHNlCkBAIC02MzI2LDcg KzYzNjYsNyBAQAogCSAgLyogRG8gbm90IHVzZSBidWZmZXJfKHNldHxnZXQpX2ludGVydmFs cyBoZXJlLiAgKi8KIAkgIGJ1ZmZlci0+dGV4dC0+aW50ZXJ2YWxzID0gYmFsYW5jZV9pbnRl cnZhbHMgKGJ1ZmZlci0+dGV4dC0+aW50ZXJ2YWxzKTsKIAkgIHRvdGFsX2J1ZmZlcnMrKzsK LQkgIGJwcmV2ID0gJmJ1ZmZlci0+aGVhZGVyLm5leHQuYnVmZmVyOworCSAgYnByZXYgPSAm YnVmZmVyLT5uZXh0OwogCX0KICAgfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2J1ZmZl ci5jJwotLS0gc3JjL2J1ZmZlci5jCTIwMTItMTAtMDIgMDI6NDM6NTMgKzAwMDAKKysrIHNy Yy9idWZmZXIuYwkyMDEyLTEwLTExIDA1OjU3OjA0ICswMDAwCkBAIC01MTA3LDExICs1MTA3 LDYgQEAKIGluaXRfYnVmZmVyX29uY2UgKHZvaWQpCiB7CiAgIGludCBpZHg7Ci0gIC8qIElm IHlvdSBhZGQsIHJlbW92ZSwgb3IgcmVvcmRlciBMaXNwX09iamVjdHMgaW4gYSBzdHJ1Y3Qg YnVmZmVyLCBtYWtlCi0gICAgIHN1cmUgdGhhdCB0aGlzIGlzIHN0aWxsIGNvcnJlY3QuICBP dGhlcndpc2UsIG1hcmtfdmVjdG9ybGlrZSBtYXkgbm90Ci0gICAgIHRyYWNlIGFsbCBMaXNw X09iamVjdHMgaW4gYnVmZmVyX2RlZmF1bHRzIGFuZCBidWZmZXJfbG9jYWxfc3ltYm9scy4g ICovCi0gIGNvbnN0IGludCBwdmVjc2l6ZQotICAgID0gKG9mZnNldG9mIChzdHJ1Y3QgYnVm ZmVyLCBvd25fdGV4dCkgLSBoZWFkZXJfc2l6ZSkgLyB3b3JkX3NpemU7CiAKICAgbWVtc2V0 IChidWZmZXJfcGVybWFuZW50X2xvY2FsX2ZsYWdzLCAwLCBzaXplb2YgYnVmZmVyX3Blcm1h bmVudF9sb2NhbF9mbGFncyk7CiAKQEAgLTUxMzQsOCArNTEyOSw4IEBACiAgIC8qIFRoaXMg aXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IGxldCdzIG1ha2UgdGhlbSBpbml0aWFs aXplZC4gICovCiAgIGJzZXRfbmFtZSAoJmJ1ZmZlcl9kZWZhdWx0cywgYnVpbGRfcHVyZV9j X3N0cmluZyAoIiAqYnVmZmVyLWRlZmF1bHRzKiIpKTsKICAgYnNldF9uYW1lICgmYnVmZmVy X2xvY2FsX3N5bWJvbHMsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgKmJ1ZmZlci1sb2NhbC1z eW1ib2xzKiIpKTsKLSAgWFNFVFBWRUNUWVBFU0laRSAoJmJ1ZmZlcl9kZWZhdWx0cywgUFZF Q19CVUZGRVIsIHB2ZWNzaXplKTsKLSAgWFNFVFBWRUNUWVBFU0laRSAoJmJ1ZmZlcl9sb2Nh bF9zeW1ib2xzLCBQVkVDX0JVRkZFUiwgcHZlY3NpemUpOworICBCVUZGRVJfUFZFQ19JTklU ICgmYnVmZmVyX2RlZmF1bHRzKTsKKyAgQlVGRkVSX1BWRUNfSU5JVCAoJmJ1ZmZlcl9sb2Nh bF9zeW1ib2xzKTsKIAogICAvKiBTZXQgdXAgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHZhcmlv dXMgYnVmZmVyIHNsb3RzLiAgKi8KICAgLyogTXVzdCBkbyB0aGVzZSBiZWZvcmUgbWFraW5n IHRoZSBmaXJzdCBidWZmZXIhICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2J1ZmZlci5o JwotLS0gc3JjL2J1ZmZlci5oCTIwMTItMDktMTEgMDQ6MjI6MDMgKzAwMDAKKysrIHNyYy9i dWZmZXIuaAkyMDEyLTEwLTExIDA1OjU2OjQzICswMDAwCkBAIC00ODIsMTEgKzQ4Miw2IEBA CiAKIHN0cnVjdCBidWZmZXIKIHsKLSAgLyogSEVBREVSLk5FWFQgaXMgdGhlIG5leHQgYnVm ZmVyLCBpbiBjaGFpbiBvZiBhbGwgYnVmZmVycywgaW5jbHVkaW5nIGtpbGxlZAotICAgICBi dWZmZXJzLiAgVGhpcyBjaGFpbiwgc3RhcnRpbmcgZnJvbSBhbGxfYnVmZmVycywgaXMgdXNl ZCBvbmx5IGZvciBnYXJiYWdlCi0gICAgIGNvbGxlY3Rpb24sIGluIG9yZGVyIHRvIGNvbGxl Y3Qga2lsbGVkIGJ1ZmZlcnMgcHJvcGVybHkuICBOb3RlIHRoYXQgbGFyZ2UKLSAgICAgdmVj dG9ycyBhbmQgbGFyZ2UgcHNldWRvLXZlY3RvciBvYmplY3RzIGFyZSBhbGwgb24gYW5vdGhl ciBjaGFpbiBzdGFydGluZwotICAgICBmcm9tIGxhcmdlX3ZlY3RvcnMuICAqLwogICBzdHJ1 Y3QgdmVjdG9ybGlrZV9oZWFkZXIgaGVhZGVyOwogCiAgIC8qIFRoZSBuYW1lIG9mIHRoaXMg YnVmZmVyLiAgKi8KQEAgLTc1MCw2ICs3NDUsOSBAQAogICAgICBJbiBhbiBpbmRpcmVjdCBi dWZmZXIsIHRoaXMgaXMgdGhlIG93bl90ZXh0IGZpZWxkIG9mIGFub3RoZXIgYnVmZmVyLiAg Ki8KICAgc3RydWN0IGJ1ZmZlcl90ZXh0ICp0ZXh0OwogCisgIC8qIE5leHQgYnVmZmVyLCBp biBjaGFpbiBvZiBhbGwgYnVmZmVycywgaW5jbHVkaW5nIGtpbGxlZCBvbmVzLiAgKi8KKyAg c3RydWN0IGJ1ZmZlciAqbmV4dDsKKwogICAvKiBDaGFyIHBvc2l0aW9uIG9mIHBvaW50IGlu IGJ1ZmZlci4gICovCiAgIHB0cmRpZmZfdCBwdDsKIApAQCAtOTU5LDYgKzk1NywyNiBAQAog ICBiLT5JTlRFUk5BTF9GSUVMRCAod2lkdGhfdGFibGUpID0gdmFsOwogfQogCisvKiBOdW1i ZXIgb2YgTGlzcF9PYmplY3RzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc3RydWN0IGJ1ZmZlci4K KyAgIElmIHlvdSBhZGQsIHJlbW92ZSwgb3IgcmVvcmRlciBMaXNwX09iamVjdHMgd2l0aGlu IGJ1ZmZlcgorICAgc3RydWN0dXJlLCBtYWtlIHN1cmUgdGhhdCB0aGlzIGlzIHN0aWxsIGNv cnJlY3QuICAqLworCisjZGVmaW5lIEJVRkZFUl9MSVNQX1NJWkUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChvZmZzZXRvZiAoc3RydWN0 IGJ1ZmZlciwgb3duX3RleHQpIC0gaGVhZGVyX3NpemUpIC8gd29yZF9zaXplKQorCisvKiBT aXplIG9mIHRoZSBzdHJ1Y3QgYnVmZmVyIHBhcnQgYmV5b25kIGxlYWRpbmcKKyAgIExpc3Bf T2JqZWN0cywgaW4gd29yZF9zaXplIHVuaXRzLiAgKi8KKworI2RlZmluZSBCVUZGRVJfUkVT VF9TSVpFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICgoc2l6ZW9mIChzdHJ1Y3QgYnVmZmVyKSAtIGhlYWRlcl9zaXplKSAvIHdvcmRfc2l6 ZSAtIEJVRkZFUl9MSVNQX1NJWkUpCisKKy8qIEluaXRpYWxpemUgdGhlIHBzZXVkb3ZlY3Rv ciBoZWFkZXIgb2YgYnVmZmVyIG9iamVjdC4gIEJVRkZFUl9MSVNQX1NJWkUKKyAgIGlzIHJl cXVpcmVkIGZvciBHQywgYnV0IEJVRkZFUl9SRVNUX1NJWkUgaXMgc2V0IHVwIGp1c3QgdG8g YmUgY29uc2lzdGVudAorICAgd2l0aCBvdGhlciBwc2V1ZG92ZWN0b3JzLiAgKi8KKworI2Rl ZmluZSBCVUZGRVJfUFZFQ19JTklUKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICBYU0VUUFZFQ1RZUEVTSVpFIChiLCBQVkVDX0JVRkZFUiwgQlVGRkVSX0xJ U1BfU0laRSwgQlVGRkVSX1JFU1RfU0laRSkKKwogLyogQ29udmVuaWVudCBjaGVjayB3aGV0 aGVyIGJ1ZmZlciBCIGlzIGxpdmUuICAqLwogCiAjZGVmaW5lIEJVRkZFUl9MSVZFX1AoYikg KCFOSUxQIChCVkFSIChiLCBuYW1lKSkpCkBAIC05NzAsNyArOTg4LDcgQEAKIC8qIFVzZWQg dG8gaXRlcmF0ZSBvdmVyIHRoZSBjaGFpbiBhYm92ZS4gICovCiAKICNkZWZpbmUgRk9SX0VB Q0hfQlVGRkVSKGIpIFwKLSAgZm9yICgoYikgPSBhbGxfYnVmZmVyczsgKGIpOyAoYikgPSAo YiktPmhlYWRlci5uZXh0LmJ1ZmZlcikKKyAgZm9yICgoYikgPSBhbGxfYnVmZmVyczsgKGIp OyAoYikgPSAoYiktPm5leHQpCiAKIC8qIFRoaXMgcG9pbnRzIHRvIHRoZSBjdXJyZW50IGJ1 ZmZlci4gICovCiAKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZm5zLmMnCi0tLSBzcmMvZm5z LmMJMjAxMi0xMC0wMSAxODo1OTo1MiArMDAwMAorKysgc3JjL2Zucy5jCTIwMTItMTAtMTEg MDU6NTU6MDEgKzAwMDAKQEAgLTIwNzYsOSArMjA3Niw4IEBACiAJICAgYXJlIHNlbnNpYmxl IHRvIGNvbXBhcmUsIHNvIGVsaW1pbmF0ZSB0aGUgb3RoZXJzIG5vdy4gICovCiAJaWYgKHNp emUgJiBQU0VVRE9WRUNUT1JfRkxBRykKIAkgIHsKLQkgICAgaWYgKCEoc2l6ZSAmICgoUFZF Q19DT01QSUxFRCB8IFBWRUNfQ0hBUl9UQUJMRQotCQkJICAgfCBQVkVDX1NVQl9DSEFSX1RB QkxFIHwgUFZFQ19GT05UKQotCQkJICA8PCBQU0VVRE9WRUNUT1JfU0laRV9CSVRTKSkpCisJ ICAgIGlmICgoKHNpemUgJiBQVkVDX1RZUEVfTUFTSykgPj4gUFNFVURPVkVDVE9SX0FSRUFf QklUUykKKwkJPCBQVkVDX0NPTVBJTEVEKQogCSAgICAgIHJldHVybiAwOwogCSAgICBzaXpl ICY9IFBTRVVET1ZFQ1RPUl9TSVpFX01BU0s7CiAJICB9CkBAIC0zNjYxLDEyICszNjYwLDkg QEAKIHsKICAgTGlzcF9PYmplY3QgdGFibGU7CiAgIHN0cnVjdCBMaXNwX0hhc2hfVGFibGUg KmgyOwotICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKm5leHQ7CiAKICAgaDIgPSBhbGxvY2F0ZV9o YXNoX3RhYmxlICgpOwotICBuZXh0ID0gaDItPmhlYWRlci5uZXh0LnZlY3RvcjsKICAgKmgy ID0gKmgxOwotICBoMi0+aGVhZGVyLm5leHQudmVjdG9yID0gbmV4dDsKICAgaDItPmtleV9h bmRfdmFsdWUgPSBGY29weV9zZXF1ZW5jZSAoaDEtPmtleV9hbmRfdmFsdWUpOwogICBoMi0+ aGFzaCA9IEZjb3B5X3NlcXVlbmNlIChoMS0+aGFzaCk7CiAgIGgyLT5uZXh0ID0gRmNvcHlf c2VxdWVuY2UgKGgxLT5uZXh0KTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbGlzcC5oJwot LS0gc3JjL2xpc3AuaAkyMDEyLTEwLTEwIDIwOjA5OjQ3ICswMDAwCisrKyBzcmMvbGlzcC5o CTIwMTItMTAtMTEgMDY6MjQ6MDcgKzAwMDAKQEAgLTM2MSwxNCArMzYxLDExIEBACiAgIFBW RUNfV0lORE9XX0NPTkZJR1VSQVRJT04sCiAgIFBWRUNfU1VCUiwKICAgUFZFQ19PVEhFUiwK LSAgLyogVGhlc2UgbGFzdCA0IGFyZSBzcGVjaWFsIGJlY2F1c2Ugd2UgT1IgdGhlbSBpbiBm bnMuYzppbnRlcm5hbF9lcXVhbCwKLSAgICAgc28gdGhleSBoYXZlIHRvIHVzZSBhIGRpc2pv aW50IGJpdCBwYXR0ZXJuOgotICAgICBpZiAoIShzaXplICYgKFBWRUNfQ09NUElMRUQgfCBQ VkVDX0NIQVJfVEFCTEUKLSAgICAgICAgICAgICAgICAgICB8IFBWRUNfU1VCX0NIQVJfVEFC TEUgfCBQVkVDX0ZPTlQpKSkgKi8KLSAgUFZFQ19DT01QSUxFRAkJCT0gMHgxMCwKLSAgUFZF Q19DSEFSX1RBQkxFCQk9IDB4MjAsCi0gIFBWRUNfU1VCX0NIQVJfVEFCTEUJCT0gMHgzMCwK LSAgUFZFQ19GT05UCQkJPSAweDQwCisgIC8qIFRoZXNlIHNob3VsZCBiZSBsYXN0LCBjaGVj ayBpbnRlcm5hbF9lcXVhbCB0byBzZWUgd2h5LiAgKi8KKyAgUFZFQ19DT01QSUxFRCwKKyAg UFZFQ19DSEFSX1RBQkxFLAorICBQVkVDX1NVQl9DSEFSX1RBQkxFLAorICBQVkVDX0ZPTlQK IH07CiAKIC8qIERBVEFfU0VHX0JJVFMgZm9yY2VzIGV4dHJhIGJpdHMgdG8gYmUgb3InZCBp biB3aXRoIGFueSBwb2ludGVycwpAQCAtMzg4LDkgKzM4NSwxOCBAQAogICAgICAgIG9ubHkg dGhlIG51bWJlciBvZiBMaXNwX09iamVjdCBmaWVsZHMgKHRoYXQgbmVlZCB0byBiZSB0cmFj ZWQgYnkgR0MpLgogICAgICAgIFRoZSBkaXN0aW5jdGlvbiBpcyB1c2VkLCBlLmcuLCBieSBM aXNwX1Byb2Nlc3MsIHdoaWNoIHBsYWNlcyBleHRyYQogICAgICAgIG5vbi1MaXNwX09iamVj dCBmaWVsZHMgYXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0dXJlLiAgKi8KLSAgICBQU0VVRE9W RUNUT1JfU0laRV9CSVRTID0gMTYsCisgICAgUFNFVURPVkVDVE9SX1NJWkVfQklUUyA9IDEy LAogICAgIFBTRVVET1ZFQ1RPUl9TSVpFX01BU0sgPSAoMSA8PCBQU0VVRE9WRUNUT1JfU0la RV9CSVRTKSAtIDEsCi0gICAgUFZFQ19UWVBFX01BU0sgPSAweDBmZmYgPDwgUFNFVURPVkVD VE9SX1NJWkVfQklUUywKKworICAgIC8qIFRvIGNhbGN1bGF0ZSB0aGUgbWVtb3J5IGZvb3Rw cmludCBvZiB0aGUgcHNldWRvdmVjdG9yLCBpdCdzIHVzZWZ1bAorICAgICAgIHRvIHN0b3Jl IHRoZSBzaXplIG9mIG5vbi1MaXNwIGFyZWEgaW4gd29yZF9zaXplIHVuaXRzIGhlcmUuICAq LworICAgIFBTRVVET1ZFQ1RPUl9SRVNUX0JJVFMgPSAxMiwKKyAgICBQU0VVRE9WRUNUT1Jf UkVTVF9NQVNLID0gKCgoMSA8PCBQU0VVRE9WRUNUT1JfUkVTVF9CSVRTKSAtIDEpIAorCQkJ ICAgICAgPDwgUFNFVURPVkVDVE9SX1NJWkVfQklUUyksCisKKyAgICAvKiBVc2VkIHRvIGV4 dHJhY3QgcHNldWRvdmVjdG9yIHN1YnR5cGUgaW5mb3JtYXRpb24uICAqLworICAgIFBTRVVE T1ZFQ1RPUl9BUkVBX0JJVFMgPSBQU0VVRE9WRUNUT1JfU0laRV9CSVRTICsgUFNFVURPVkVD VE9SX1JFU1RfQklUUywKKyAgICBQVkVDX1RZUEVfTUFTSyA9IDB4M2YgPDwgUFNFVURPVkVD VE9SX0FSRUFfQklUUywKIAogICAgIC8qIE51bWJlciBvZiBiaXRzIHRvIHB1dCBpbiBlYWNo IGNoYXJhY3RlciBpbiB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24KICAgICAgICBvZiBi b29sIHZlY3RvcnMuICBUaGlzIHNob3VsZCBub3QgdmFyeSBhY3Jvc3MgaW1wbGVtZW50YXRp b25zLiAgKi8KQEAgLTU2NiwxMyArNTcyLDEzIEBACiAKIC8qIFBzZXVkb3ZlY3RvciB0eXBl cy4gICovCiAKLSNkZWZpbmUgWFNFVFBWRUNUWVBFKHYsIGNvZGUpIFhTRVRUWVBFRF9QVkVD VFlQRSAodiwgaGVhZGVyLnNpemUsIGNvZGUpCi0jZGVmaW5lIFhTRVRUWVBFRF9QVkVDVFlQ RSh2LCBzaXplX21lbWJlciwgY29kZSkgXAotICAoKHYpLT5zaXplX21lbWJlciB8PSBQU0VV RE9WRUNUT1JfRkxBRyB8ICgoY29kZSkgPDwgUFNFVURPVkVDVE9SX1NJWkVfQklUUykpCi0j ZGVmaW5lIFhTRVRQVkVDVFlQRVNJWkUodiwgY29kZSwgc2l6ZXZhbCkgXAorI2RlZmluZSBY U0VUUFZFQ1RZUEUodiwgY29kZSkJCQkJCQlcCisgICgodiktPmhlYWRlci5zaXplIHw9IFBT RVVET1ZFQ1RPUl9GTEFHIHwgKChjb2RlKSA8PCBQU0VVRE9WRUNUT1JfQVJFQV9CSVRTKSkK KyNkZWZpbmUgWFNFVFBWRUNUWVBFU0laRSh2LCBjb2RlLCBsaXNwc2l6ZSwgcmVzdHNpemUp CQlcCiAgICgodiktPmhlYWRlci5zaXplID0gKFBTRVVET1ZFQ1RPUl9GTEFHCQkJXAotCQkg ICAgICAgfCAoKGNvZGUpIDw8IFBTRVVET1ZFQ1RPUl9TSVpFX0JJVFMpCVwKLQkJICAgICAg IHwgKHNpemV2YWwpKSkKKwkJICAgICAgIHwgKChjb2RlKSA8PCBQU0VVRE9WRUNUT1JfQVJF QV9CSVRTKQlcCisJCSAgICAgICB8ICgocmVzdHNpemUpIDw8IFBTRVVET1ZFQ1RPUl9TSVpF X0JJVFMpIFwKKwkJICAgICAgIHwgKGxpc3BzaXplKSkpCiAKIC8qIFRoZSBjYXN0IHRvIHN0 cnVjdCB2ZWN0b3JsaWtlX2hlYWRlciAqIGF2b2lkcyBhbGlhc2luZyBpc3N1ZXMuICAqLwog I2RlZmluZSBYU0VUUFNFVURPVkVDVE9SKGEsIGIsIGNvZGUpIFwKQEAgLTU4NCwxNiArNTkw LDE0IEBACiAjZGVmaW5lIFhTRVRUWVBFRF9QU0VVRE9WRUNUT1IoYSwgYiwgc2l6ZSwgY29k ZSkJCQlcCiAgIChYU0VUVkVDVE9SIChhLCBiKSwJCQkJCQkJXAogICAgZWFzc2VydCAoKHNp emUgJiAoUFNFVURPVkVDVE9SX0ZMQUcgfCBQVkVDX1RZUEVfTUFTSykpCQlcCi0JICAgID09 IChQU0VVRE9WRUNUT1JfRkxBRyB8IChjb2RlIDw8IFBTRVVET1ZFQ1RPUl9TSVpFX0JJVFMp KSkpCisJICAgID09IChQU0VVRE9WRUNUT1JfRkxBRyB8IChjb2RlIDw8IFBTRVVET1ZFQ1RP Ul9BUkVBX0JJVFMpKSkpCiAKICNkZWZpbmUgWFNFVFdJTkRPV19DT05GSUdVUkFUSU9OKGEs IGIpIFwKICAgKFhTRVRQU0VVRE9WRUNUT1IgKGEsIGIsIFBWRUNfV0lORE9XX0NPTkZJR1VS QVRJT04pKQogI2RlZmluZSBYU0VUUFJPQ0VTUyhhLCBiKSAoWFNFVFBTRVVET1ZFQ1RPUiAo YSwgYiwgUFZFQ19QUk9DRVNTKSkKICNkZWZpbmUgWFNFVFdJTkRPVyhhLCBiKSAoWFNFVFBT RVVET1ZFQ1RPUiAoYSwgYiwgUFZFQ19XSU5ET1cpKQogI2RlZmluZSBYU0VUVEVSTUlOQUwo YSwgYikgKFhTRVRQU0VVRE9WRUNUT1IgKGEsIGIsIFBWRUNfVEVSTUlOQUwpKQotLyogWFNF VFNVQlIgaXMgc3BlY2lhbCBzaW5jZSBMaXNwX1N1YnIgbGFja3Mgc3RydWN0IHZlY3Rvcmxp a2VfaGVhZGVyLiAgKi8KLSNkZWZpbmUgWFNFVFNVQlIoYSwgYikgXAotICBYU0VUVFlQRURf UFNFVURPVkVDVE9SIChhLCBiLCBYU1VCUiAoYSktPnNpemUsIFBWRUNfU1VCUikKKyNkZWZp bmUgWFNFVFNVQlIoYSwgYikgKFhTRVRQU0VVRE9WRUNUT1IgKGEsIGIsIFBWRUNfU1VCUikp CiAjZGVmaW5lIFhTRVRDT01QSUxFRChhLCBiKSAoWFNFVFBTRVVET1ZFQ1RPUiAoYSwgYiwg UFZFQ19DT01QSUxFRCkpCiAjZGVmaW5lIFhTRVRCVUZGRVIoYSwgYikgKFhTRVRQU0VVRE9W RUNUT1IgKGEsIGIsIFBWRUNfQlVGRkVSKSkKICNkZWZpbmUgWFNFVENIQVJfVEFCTEUoYSwg YikgKFhTRVRQU0VVRE9WRUNUT1IgKGEsIGIsIFBWRUNfQ0hBUl9UQUJMRSkpCkBAIC03ODMs MjggKzc4Nyw2IEBACiAgICAgICAgICB2ZWN0b3Igb24gYSBmcmVlLWxpc3QgYW5kIFBTRVVE T1ZFQ1RPUl9TSVpFX0JJVFMgaW5kaWNhdGVzIGl0cyBzaXplCiAgICAgICAgICBpbiBieXRl cy4gICovCiAgICAgcHRyZGlmZl90IHNpemU7Ci0KLSAgICAvKiBXaGVuIHRoZSB2ZWN0b3Ig aXMgYWxsb2NhdGVkIGZyb20gYSB2ZWN0b3IgYmxvY2ssIE5CWVRFUyBpcyB1c2VkCi0gICAg ICAgaWYgdGhlIHZlY3RvciBpcyBub3Qgb24gYSBmcmVlIGxpc3QsIGFuZCBWRUNUT1IgaXMg dXNlZCBvdGhlcndpc2UuCi0gICAgICAgRm9yIGxhcmdlIHZlY3Rvci1saWtlIG9iamVjdHMs IEJVRkZFUiBvciBWRUNUT1IgaXMgdXNlZCBhcyBhIHBvaW50ZXIKLSAgICAgICB0byB0aGUg bmV4dCB2ZWN0b3ItbGlrZSBvYmplY3QuICBJdCBpcyBnZW5lcmFsbHkgYSBidWZmZXIgb3Ig YQotICAgICAgIExpc3BfVmVjdG9yIGFsaWFzLCBzbyBmb3IgY29udmVuaWVuY2UgaXQgaXMg YSB1bmlvbiBpbnN0ZWFkIG9mIGEKLSAgICAgICBwb2ludGVyOiB0aGlzIHdheSwgb25lIGNh biB3cml0ZSBQLT5uZXh0LnZlY3RvciBpbnN0ZWFkIG9mICgoc3RydWN0Ci0gICAgICAgTGlz cF9WZWN0b3IgKikgUC0+bmV4dCkuICAqLwotICAgIHVuaW9uIHsKLSAgICAgIC8qIFRoaXMg aXMgb25seSBuZWVkZWQgZm9yIHNtYWxsIHZlY3RvcnMgdGhhdCBhcmUgbm90IGZyZWUgYmVj YXVzZSB0aGUKLQkgYHNpemUnIGZpZWxkIG9ubHkgZ2l2ZXMgdXMgdGhlIG51bWJlciBvZiBM aXNwX09iamVjdCBzbG90cywgd2hlcmVhcyB3ZQotCSBuZWVkIHRvIGtub3cgdGhlIHRvdGFs IHNpemUsIGluY2x1ZGluZyBub24tTGlzcF9PYmplY3QgZGF0YS4KLQkgRklYTUU6IGZpZ3Vy ZSBvdXQgYSB3YXkgdG8gc3RvcmUgdGhpcyBpbmZvIGVsc2V3aGVyZSBzbyB3ZSBjYW4KLQkg ZmluYWxseSBnZXQgcmlkIG9mIHRoaXMgZXh0cmEgd29yZCBvZiBvdmVyaGVhZC4gICovCi0g ICAgICBwdHJkaWZmX3QgbmJ5dGVzOwotICAgICAgc3RydWN0IGJ1ZmZlciAqYnVmZmVyOwot ICAgICAgLyogRklYTUU6IFRoaXMgY2FuIGJlIHJlbW92ZWQ6IEZvciBsYXJnZSB2ZWN0b3Jz LCB0aGlzIGZpZWxkIGNvdWxkIGJlCi0JIHBsYWNlZCAqYmVmb3JlKiB0aGUgdmVjdG9yIGl0 c2VsZi4gIEFuZCBmb3Igc21hbGwgdmVjdG9ycyBvbiBhIGZyZWUKLQkgbGlzdCwgdGhpcyBm aWVsZCBjb3VsZCBiZSBzdG9yZWQgaW4gdGhlIHZlY3RvcidzIGJ5dGVzLCBzaW5jZSB0aGUK LQkgZW1wdHkgdmVjdG9yIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFueXdheS4gICovCi0gICAg ICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnZlY3RvcjsKLSAgICB9IG5leHQ7CiAgIH07CiAKIC8q IFJlZ3VsYXIgdmVjdG9yIGlzIGp1c3QgYSBoZWFkZXIgcGx1cyBhcnJheSBvZiBMaXNwX09i amVjdHMuICAqLwpAQCAtOTc4LDE1ICs5NjAsMTEgQEAKIAogLyogVGhpcyBzdHJ1Y3R1cmUg ZGVzY3JpYmVzIGEgYnVpbHQtaW4gZnVuY3Rpb24uCiAgICBJdCBpcyBnZW5lcmF0ZWQgYnkg dGhlIERFRlVOIG1hY3JvIG9ubHkuCi0gICBkZWZzdWJyIG1ha2VzIGl0IGludG8gYSBMaXNw IG9iamVjdC4KLQotICAgVGhpcyB0eXBlIGlzIHRyZWF0ZWQgaW4gbW9zdCByZXNwZWN0cyBh cyBhIHBzZXVkb3ZlY3RvciwKLSAgIGJ1dCBzaW5jZSB3ZSBuZXZlciBkeW5hbWljYWxseSBh bGxvY2F0ZSBvciBmcmVlIHRoZW0sCi0gICB3ZSBkb24ndCBuZWVkIGEgc3RydWN0IHZlY3Rv cmxpa2VfaGVhZGVyIGFuZCBpdHMgJ25leHQnIGZpZWxkLiAgKi8KKyAgIGRlZnN1YnIgbWFr ZXMgaXQgaW50byBhIExpc3Agb2JqZWN0LiAgKi8KIAogc3RydWN0IExpc3BfU3VicgogICB7 Ci0gICAgcHRyZGlmZl90IHNpemU7CisgICAgc3RydWN0IHZlY3Rvcmxpa2VfaGVhZGVyIGhl YWRlcjsKICAgICB1bmlvbiB7CiAgICAgICBMaXNwX09iamVjdCAoKmEwKSAodm9pZCk7CiAg ICAgICBMaXNwX09iamVjdCAoKmExKSAoTGlzcF9PYmplY3QpOwpAQCAtMTY2Nyw3ICsxNjQ1 LDcgQEAKIAogI2RlZmluZSBQU0VVRE9WRUNUT1JfVFlQRVAodiwgY29kZSkJCQkJCVwKICAg KCgodiktPnNpemUgJiAoUFNFVURPVkVDVE9SX0ZMQUcgfCBQVkVDX1RZUEVfTUFTSykpCQkJ XAotICAgPT0gKFBTRVVET1ZFQ1RPUl9GTEFHIHwgKChjb2RlKSA8PCBQU0VVRE9WRUNUT1Jf U0laRV9CSVRTKSkpCisgICA9PSAoUFNFVURPVkVDVE9SX0ZMQUcgfCAoKGNvZGUpIDw8IFBT RVVET1ZFQ1RPUl9BUkVBX0JJVFMpKSkKIAogLyogVHJ1ZSBpZiBvYmplY3QgWCwgd2l0aCBp bnRlcm5hbCB0eXBlIHN0cnVjdCBUICosIGlzIGEgcHNldWRvdmVjdG9yIHdob3NlCiAgICBj b2RlIGlzIENPREUuICAqLwpAQCAtMTY4MCw4ICsxNjU4LDcgQEAKICNkZWZpbmUgUFJPQ0VT U1AoeCkgUFNFVURPVkVDVE9SUCAoeCwgUFZFQ19QUk9DRVNTKQogI2RlZmluZSBXSU5ET1dQ KHgpIFBTRVVET1ZFQ1RPUlAgKHgsIFBWRUNfV0lORE9XKQogI2RlZmluZSBURVJNSU5BTFAo eCkgUFNFVURPVkVDVE9SUCAoeCwgUFZFQ19URVJNSU5BTCkKLS8qIFNVQlJQIGlzIHNwZWNp YWwgc2luY2UgTGlzcF9TdWJyIGxhY2tzIHN0cnVjdCB2ZWN0b3JsaWtlX2hlYWRlci4gICov Ci0jZGVmaW5lIFNVQlJQKHgpIFRZUEVEX1BTRVVET1ZFQ1RPUlAgKHgsIExpc3BfU3Viciwg UFZFQ19TVUJSKQorI2RlZmluZSBTVUJSUCh4KSBQU0VVRE9WRUNUT1JQICh4LCBQVkVDX1NV QlIpCiAjZGVmaW5lIENPTVBJTEVEUCh4KSBQU0VVRE9WRUNUT1JQICh4LCBQVkVDX0NPTVBJ TEVEKQogI2RlZmluZSBCVUZGRVJQKHgpIFBTRVVET1ZFQ1RPUlAgKHgsIFBWRUNfQlVGRkVS KQogI2RlZmluZSBDSEFSX1RBQkxFX1AoeCkgUFNFVURPVkVDVE9SUCAoeCwgUFZFQ19DSEFS X1RBQkxFKQpAQCAtMTg3MCw4ICsxODQ3LDggQEAKICNkZWZpbmUgREVGVU4obG5hbWUsIGZu bmFtZSwgc25hbWUsIG1pbmFyZ3MsIG1heGFyZ3MsIGludHNwZWMsIGRvYykJXAogICAgTGlz cF9PYmplY3QgZm5uYW1lIERFRlVOX0FSR1NfICMjIG1heGFyZ3MgOwkJCQlcCiAgICBzdGF0 aWMgc3RydWN0IExpc3BfU3ViciBhbGlnbmFzIChHQ0FMSUdOTUVOVCkgc25hbWUgPQkJXAot ICAgeyAoUFZFQ19TVUJSIDw8IFBTRVVET1ZFQ1RPUl9TSVpFX0JJVFMpCQkJCVwKLSAgICAg fCAoc2l6ZW9mIChzdHJ1Y3QgTGlzcF9TdWJyKSAvIHNpemVvZiAoRU1BQ1NfSU5UKSksCQlc CisgICB7IHsgKFBWRUNfU1VCUiA8PCBQU0VVRE9WRUNUT1JfQVJFQV9CSVRTKQkJCQlcCisg ICAgICAgfCAoc2l6ZW9mIChzdHJ1Y3QgTGlzcF9TdWJyKSAvIHNpemVvZiAoRU1BQ1NfSU5U KSkgfSwJCVwKICAgICAgIHsgKExpc3BfT2JqZWN0IChfX2NkZWNsICopKHZvaWQpKWZubmFt ZSB9LCAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICBtaW5hcmdzLCBtYXhhcmdz LCBsbmFtZSwgaW50c3BlYywgMH07CQkJCVwKICAgIExpc3BfT2JqZWN0IGZubmFtZQpAQCAt MTg3OSw4ICsxODU2LDggQEAKICNkZWZpbmUgREVGVU4obG5hbWUsIGZubmFtZSwgc25hbWUs IG1pbmFyZ3MsIG1heGFyZ3MsIGludHNwZWMsIGRvYykJXAogICAgTGlzcF9PYmplY3QgZm5u YW1lIERFRlVOX0FSR1NfICMjIG1heGFyZ3MgOwkJCQlcCiAgICBzdGF0aWMgc3RydWN0IExp c3BfU3ViciBhbGlnbmFzIChHQ0FMSUdOTUVOVCkgc25hbWUgPQkJXAotICAgICB7IFBWRUNf U1VCUiA8PCBQU0VVRE9WRUNUT1JfU0laRV9CSVRTLAkJCQlcCi0gICAgICB7IC5hICMjIG1h eGFyZ3MgPSBmbm5hbWUgfSwJCQkJCVwKKyAgICAgeyB7IFBWRUNfU1VCUiA8PCBQU0VVRE9W RUNUT1JfQVJFQV9CSVRTIH0sCQkJCVwKKyAgICAgICB7IC5hICMjIG1heGFyZ3MgPSBmbm5h bWUgfSwJCQkJCVwKICAgICAgICBtaW5hcmdzLCBtYXhhcmdzLCBsbmFtZSwgaW50c3BlYywg MH07CQkJCVwKICAgIExpc3BfT2JqZWN0IGZubmFtZQogI2VuZGlmCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3JjL2xyZWFkLmMnCi0tLSBzcmMvbHJlYWQuYwkyMDEyLTEwLTA1IDA1OjU3OjI0 ICswMDAwCisrKyBzcmMvbHJlYWQuYwkyMDEyLTEwLTExIDA2OjAxOjE5ICswMDAwCkBAIC0z OTc4LDcgKzM5NzgsNyBAQAogewogICBMaXNwX09iamVjdCBzeW0sIHRlbTsKICAgc3ltID0g aW50ZXJuX2Nfc3RyaW5nIChzbmFtZS0+c3ltYm9sX25hbWUpOwotICBYU0VUVFlQRURfUFZF Q1RZUEUgKHNuYW1lLCBzaXplLCBQVkVDX1NVQlIpOworICBYU0VUUFZFQ1RZUEUgKHNuYW1l LCBQVkVDX1NVQlIpOwogICBYU0VUU1VCUiAodGVtLCBzbmFtZSk7CiAgIHNldF9zeW1ib2xf ZnVuY3Rpb24gKHN5bSwgdGVtKTsKIH0KCg== --------------040309000707000009010403--