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: Aligned blocks management: obsolete? Date: Tue, 19 Jun 2012 20:51:08 +0400 Message-ID: <4FE0ADFC.9090504@yandex.ru> References: <4EE5B744.1090103@yandex.ru> <4EE60A93.9060401@yandex.ru> <4EE6478C.1020701@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020205080204070000060809" X-Trace: dough.gmane.org 1340124692 4585 80.91.229.3 (19 Jun 2012 16:51:32 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 19 Jun 2012 16:51:32 +0000 (UTC) Cc: Paul Eggert To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Jun 19 18:51:31 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 1Sh1eH-0006KK-Se for ged-emacs-devel@m.gmane.org; Tue, 19 Jun 2012 18:51:26 +0200 Original-Received: from localhost ([::1]:45782 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh1eH-00015o-Ug for ged-emacs-devel@m.gmane.org; Tue, 19 Jun 2012 12:51:25 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:45559) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh1eA-000148-2Y for emacs-devel@gnu.org; Tue, 19 Jun 2012 12:51:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sh1e3-0001De-Tn for emacs-devel@gnu.org; Tue, 19 Jun 2012 12:51:17 -0400 Original-Received: from forward18.mail.yandex.net ([95.108.253.143]:59358) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sh1e3-0001Ct-5A for emacs-devel@gnu.org; Tue, 19 Jun 2012 12:51:11 -0400 Original-Received: from smtp16.mail.yandex.net (smtp16.mail.yandex.net [95.108.252.16]) by forward18.mail.yandex.net (Yandex) with ESMTP id E4E531781B76; Tue, 19 Jun 2012 20:51:06 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340124666; bh=KoYHQixjOdii3EroS3/4VBtIrAY9TuGvcZOQ7ngni1M=; h=Message-ID:Date:From:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type; b=m6FGIbUju75bszjkUzHuwOqMAc6u77l6V2KK4BYmBrTROlKYn+JncI28EwF/5kmiY NDZ2ezcKhZ6OmetkDiAcU+Z1OXnvVxb3VZRS8BcwH7eB7jczcDdQwrtTUb4hmWRN/U V3YGZYTkHcIZHzVAkF4jyc8/OR4NHBrhwgruQXgE= Original-Received: from smtp16.mail.yandex.net (localhost [127.0.0.1]) by smtp16.mail.yandex.net (Yandex) with ESMTP id C462D6A0644; Tue, 19 Jun 2012 20:51:06 +0400 (MSK) Original-Received: from 213-148-21-55.gelicon.ru (213-148-21-55.gelicon.ru [213.148.21.55]) by smtp16.mail.yandex.net (nwsmtp/Yandex) with ESMTP id p6gGXNHk-p6gSoZ0s; Tue, 19 Jun 2012 20:51:06 +0400 X-Yandex-Rcpt-Suid: emacs-devel@gnu.org X-Yandex-Rcpt-Suid: eggert@cs.ucla.edu DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340124666; bh=KoYHQixjOdii3EroS3/4VBtIrAY9TuGvcZOQ7ngni1M=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=YKez05WNNnk1McMbZp3cs0/xyZY0Ov+eKs1j9alt8fP3LYnbkPrbJudylratFmfY2 TWOIf4ira4qwuFSUBAi0UrBM46p/ljxrVPMJ8acVjqdX90e0psddSc7wOR2oXCRfKr x/muiP7lzmMF2t3XmBaESvW+dabOVZL9s7Tbnc04= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 In-Reply-To: <4EE6478C.1020701@cs.ucla.edu> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.253.143 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:151025 Archived-At: This is a multi-part message in MIME format. --------------020205080204070000060809 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit [some stuff from old discussion below] On 12/12/2011 10:27 PM, Paul Eggert wrote: > On 12/12/11 06:07, Dmitry Antipov wrote: >> I suppose that any non-ancient glibc malloc >> doesn't require such a glitch in lisp_align_malloc any more > > This sounds correct to me as well, though I can't cite > chapter and verse offhand. Certainly the posix_memalign > implementation has mutated significantly since glibc 2.3.2 > came out in 2003, and any performance measurements > based on 2.3.2 are suspect now. > > More generally, if some cruft was put into alloc.c long ago > for performance reasons, and if we can no longer demonstrate > that the cruft improves performance significantly > on currently-used platforms, then surely it's OK to remove it > after the feature freeze is over. Cruft like that has a real > maintenance cost, and there's no point keeping it > if it doesn't actually have a performance benefit. I believe this becomes more and more actual because more and more of ancient systems with poor malloc implementations falls into their graves; this cleanup assumes that every malloc implementation has reasonably efficient posix_memalign or memalign at least. Dmitry --------------020205080204070000060809 Content-Type: text/plain; charset=UTF-8; name="lisp_align_malloc_cleanup.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="lisp_align_malloc_cleanup.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0w Ni0xNiAxMjoyNDoxNSArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wNi0xOSAxNjo0Njoy NiArMDAwMApAQCAtMzA5LDkgKzMwOSw2IEBACiAgIE1FTV9UWVBFX1ZFQ1RPUl9CTE9DSwog fTsKIAotc3RhdGljIHZvaWQgKmxpc3BfbWFsbG9jIChzaXplX3QsIGVudW0gbWVtX3R5cGUp OwotCi0KICNpZiBHQ19NQVJLX1NUQUNLIHx8IGRlZmluZWQgR0NfTUFMTE9DX0NIRUNLCiAK ICNpZiBHQ19NQVJLX1NUQUNLID09IEdDX1VTRV9HQ1BST1NfQ0hFQ0tfWk9NQklFUwpAQCAt ODg4LDE5ICs4ODUsMzcgQEAKICAgcmV0dXJuIFFuaWw7CiB9CiAKKyNpZiAhIFVTRV9MU0Jf VEFHCisKKy8qIFVzZWQgdG8gY2F0Y2ggaW52YWxpZCBhZGRyZXNzIHdoZW4gZGVidWdnaW5n LiAgKi8KKwordm9pZCAqbGlzcF9tYWxsb2NfbG9zZXIgRVhURVJOQUxMWV9WSVNJQkxFOwor CisvKiBOb256ZXJvIGlmIHRoZSBtZW1vcnkgYXQgQUREUiBjYW4gYmUKKyAgIGFkZHJlc3Nl ZCB0aHJ1IGEgTGlzcCBvYmplY3QncyBwb2ludGVyLiAgKi8KKworc3RhdGljIGlubGluZSB2 b2lkCit2ZXJpZnlfYWRkcmVzcyAoY2hhciAqYWRkcikKK3sKKyAgTGlzcF9PYmplY3Qgb2Jq OworCisgIFhTRVRDT05TIChvYmosIGFkZHIpOworICBpZiAoKGNoYXIgKikgWENPTlMgKG9i aikgPT0gYWRkcikKKyAgICByZXR1cm4gMTsKKyAgbGlzcF9tYWxsb2NfbG9zZXIgPSBhZGRy OworICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8qIG5vdCBVU0VfTFNCX1RBRyAqLwogCiAv KiBMaWtlIG1hbGxvYyBidXQgdXNlZCBmb3IgYWxsb2NhdGluZyBMaXNwIGRhdGEuICBOQllU RVMgaXMgdGhlCiAgICBudW1iZXIgb2YgYnl0ZXMgdG8gYWxsb2NhdGUsIFRZUEUgZGVzY3Jp YmVzIHRoZSBpbnRlbmRlZCB1c2Ugb2YgdGhlCiAgICBhbGxvY2F0ZWQgbWVtb3J5IGJsb2Nr IChmb3Igc3RyaW5ncywgZm9yIGNvbnNlcywgLi4uKS4gICovCiAKLSNpZiAhIFVTRV9MU0Jf VEFHCi12b2lkICpsaXNwX21hbGxvY19sb3NlciBFWFRFUk5BTExZX1ZJU0lCTEU7Ci0jZW5k aWYKLQogc3RhdGljIHZvaWQgKgogbGlzcF9tYWxsb2MgKHNpemVfdCBuYnl0ZXMsIGVudW0g bWVtX3R5cGUgdHlwZSkKIHsKLSAgcmVnaXN0ZXIgdm9pZCAqdmFsOworICB2b2lkICp2YWw7 CiAKICAgTUFMTE9DX0JMT0NLX0lOUFVUOwogCkBAIC05MDgsMjQgKzkyMywzMyBAQAogICBh bGxvY2F0ZWRfbWVtX3R5cGUgPSB0eXBlOwogI2VuZGlmCiAKKyNpZmRlZiBET1VHX0xFQV9N QUxMT0MKKyAgLyogUHJldmVudCBtbWFwJ2luZyB0aGUgY2h1bmsuICBMaXNwIGRhdGEgbWF5 IG5vdCBiZSBtbWFwJ2VkCisgICAgIGJlY2F1c2UgbWFwcGVkIHJlZ2lvbiBjb250ZW50cyBh cmUgbm90IHByZXNlcnZlZCBpbgorICAgICBhIGR1bXBlZCBFbWFjcy4gICovCisgIG1hbGxv cHQgKE1fTU1BUF9NQVgsIDApOworI2VuZGlmCiAgIHZhbCA9ICh2b2lkICopIG1hbGxvYyAo bmJ5dGVzKTsKKyNpZmRlZiBET1VHX0xFQV9NQUxMT0MKKyAgLyogQmFjayB0byBhIHJlYXNv bmFibGUgbWF4aW11bSBvZiBtbWFwJ2VkIGFyZWFzLiAgKi8KKyAgbWFsbG9wdCAoTV9NTUFQ X01BWCwgTU1BUF9NQVhfQVJFQVMpOworI2VuZGlmCisKKyAgaWYgKCF2YWwgJiYgbmJ5dGVz KQorICAgIHsKKyAgICAgIE1BTExPQ19VTkJMT0NLX0lOUFVUOworICAgICAgbWVtb3J5X2Z1 bGwgKG5ieXRlcyk7CisgICAgfQogCiAjaWYgISBVU0VfTFNCX1RBRwotICAvKiBJZiB0aGUg bWVtb3J5IGp1c3QgYWxsb2NhdGVkIGNhbm5vdCBiZSBhZGRyZXNzZWQgdGhydSBhIExpc3AK LSAgICAgb2JqZWN0J3MgcG9pbnRlciwgYW5kIGl0IG5lZWRzIHRvIGJlLAotICAgICB0aGF0 J3MgZXF1aXZhbGVudCB0byBydW5uaW5nIG91dCBvZiBtZW1vcnkuICAqLwotICBpZiAodmFs ICYmIHR5cGUgIT0gTUVNX1RZUEVfTk9OX0xJU1ApCisgIGlmICh2YWwgJiYgdHlwZSAhPSBN RU1fVFlQRV9OT05fTElTUAorICAgICAgJiYgIXZlcmlmeV9hZGRyZXNzICgoY2hhciAqKSB2 YWwgKyBuYnl0ZXMgLSAxKSkKICAgICB7Ci0gICAgICBMaXNwX09iamVjdCB0ZW07Ci0gICAg ICBYU0VUQ09OUyAodGVtLCAoY2hhciAqKSB2YWwgKyBuYnl0ZXMgLSAxKTsKLSAgICAgIGlm ICgoY2hhciAqKSBYQ09OUyAodGVtKSAhPSAoY2hhciAqKSB2YWwgKyBuYnl0ZXMgLSAxKQot CXsKLQkgIGxpc3BfbWFsbG9jX2xvc2VyID0gdmFsOwotCSAgZnJlZSAodmFsKTsKLQkgIHZh bCA9IDA7Ci0JfQorICAgICAgZnJlZSAodmFsKTsKKyAgICAgIE1BTExPQ19VTkJMT0NLX0lO UFVUOworICAgICAgbWVtb3J5X2Z1bGwgKFNJWkVfTUFYKTsKICAgICB9Ci0jZW5kaWYKKyNl bmRpZiAvKiBub3QgVVNFX0xTQl9UQUcgKi8KIAogI2lmIEdDX01BUktfU1RBQ0sgJiYgIWRl ZmluZWQgR0NfTUFMTE9DX0NIRUNLCiAgIGlmICh2YWwgJiYgdHlwZSAhPSBNRU1fVFlQRV9O T05fTElTUCkKQEAgLTkzMywxMTYgKzk1NywzMyBAQAogI2VuZGlmCiAKICAgTUFMTE9DX1VO QkxPQ0tfSU5QVVQ7Ci0gIGlmICghdmFsICYmIG5ieXRlcykKLSAgICBtZW1vcnlfZnVsbCAo bmJ5dGVzKTsKICAgcmV0dXJuIHZhbDsKIH0KIAotLyogRnJlZSBCTE9DSy4gIFRoaXMgbXVz dCBiZSBjYWxsZWQgdG8gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIHdpdGggYQotICAgY2FsbCB0 byBsaXNwX21hbGxvYy4gICovCi0KLXN0YXRpYyB2b2lkCi1saXNwX2ZyZWUgKHZvaWQgKmJs b2NrKQotewotICBNQUxMT0NfQkxPQ0tfSU5QVVQ7Ci0gIGZyZWUgKGJsb2NrKTsKLSNpZiBH Q19NQVJLX1NUQUNLICYmICFkZWZpbmVkIEdDX01BTExPQ19DSEVDSwotICBtZW1fZGVsZXRl IChtZW1fZmluZCAoYmxvY2spKTsKLSNlbmRpZgotICBNQUxMT0NfVU5CTE9DS19JTlBVVDsK LX0KLQotLyoqKioqICBBbGxvY2F0aW9uIG9mIGFsaWduZWQgYmxvY2tzIG9mIG1lbW9yeSB0 byBzdG9yZSBMaXNwIGRhdGEuICAqKioqKi8KLQotLyogVGhlIGVudHJ5IHBvaW50IGlzIGxp c3BfYWxpZ25fbWFsbG9jIHdoaWNoIHJldHVybnMgYmxvY2tzIG9mIGF0IG1vc3QKLSAgIEJM T0NLX0JZVEVTIGFuZCBndWFyYW50ZWVzIHRoZXkgYXJlIGFsaWduZWQgb24gYSBCTE9DS19B TElHTiBib3VuZGFyeS4gICovCi0KLSNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX01FTUFMSUdO KSAmJiBkZWZpbmVkIChTWVNURU1fTUFMTE9DKQotI2RlZmluZSBVU0VfUE9TSVhfTUVNQUxJ R04gMQotI2VuZGlmCisvKiBBbGxvY2F0aW9uIG9mIGFsaWduZWQgYmxvY2tzLiAgV2UgYXNz dW1lIHRoYXQgbWFsbG9jIGltcGxlbWVudGF0aW9uCisgICBwcm92aWRlcyBwb3NpeF9tZW1h bGlnbiBvciAob2Jzb2xldGUpIG1lbWFsaWduIGF0IGxlYXN0LiAgKi8KIAogLyogQkxPQ0tf QUxJR04gaGFzIHRvIGJlIGEgcG93ZXIgb2YgMi4gICovCisKICNkZWZpbmUgQkxPQ0tfQUxJ R04gKDEgPDwgMTApCiAKLS8qIFBhZGRpbmcgdG8gbGVhdmUgYXQgdGhlIGVuZCBvZiBhIG1h bGxvYydkIGJsb2NrLiAgVGhpcyBpcyB0byBnaXZlCi0gICBtYWxsb2MgYSBjaGFuY2UgdG8g bWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1vcnkgd2FzdGVkIHRvIGFsaWdubWVudC4KLSAg IEl0IHNob3VsZCBiZSB0dW5lZCB0byB0aGUgcGFydGljdWxhciBtYWxsb2MgbGlicmFyeSB1 c2VkLgotICAgT24gZ2xpYmMtMi4zLjIsIG1hbGxvYyBuZXZlciB0cmllcyB0byBhbGlnbiwg c28gYSBwYWRkaW5nIG9mIDAgaXMgYmVzdC4KLSAgIHBvc2l4X21lbWFsaWduIG9uIHRoZSBv dGhlciBoYW5kIHdvdWxkIGlkZWFsbHkgcHJlZmVyIGEgdmFsdWUgb2YgNAotICAgYmVjYXVz ZSBvdGhlcndpc2UsIHRoZXJlJ3MgMTAyMCBieXRlcyB3YXN0ZWQgYmV0d2VlbiBlYWNoIGFi bG9ja3MuCi0gICBJbiBFbWFjcywgdGVzdGluZyBzaG93cyB0aGF0IHRob3NlIDEwMjAgY2Fu IG1vc3Qgb2YgdGhlIHRpbWUgYmUKLSAgIGVmZmljaWVudGx5IHVzZWQgYnkgbWFsbG9jIHRv IHBsYWNlIG90aGVyIG9iamVjdHMsIHNvIGEgdmFsdWUgb2YgMCBjYW4KLSAgIHN0aWxsIHBy ZWZlcmFibGUgdW5sZXNzIHlvdSBoYXZlIGEgbG90IG9mIGFsaWduZWQgYmxvY2tzIGFuZCB2 aXJ0dWFsbHkKLSAgIG5vdGhpbmcgZWxzZS4gICovCi0jZGVmaW5lIEJMT0NLX1BBRERJTkcg MAotI2RlZmluZSBCTE9DS19CWVRFUyBcCi0gIChCTE9DS19BTElHTiAtIHNpemVvZiAoc3Ry dWN0IGFibG9ja3MgKikgLSBCTE9DS19QQURESU5HKQotCi0vKiBJbnRlcm5hbCBkYXRhIHN0 cnVjdHVyZXMgYW5kIGNvbnN0YW50cy4gICovCi0KLSNkZWZpbmUgQUJMT0NLU19TSVpFIDE2 Ci0KLS8qIEFuIGFsaWduZWQgYmxvY2sgb2YgbWVtb3J5LiAgKi8KLXN0cnVjdCBhYmxvY2sK LXsKLSAgdW5pb24KLSAgewotICAgIGNoYXIgcGF5bG9hZFtCTE9DS19CWVRFU107Ci0gICAg c3RydWN0IGFibG9jayAqbmV4dF9mcmVlOwotICB9IHg7Ci0gIC8qIGBhYmFzZScgaXMgdGhl IGFsaWduZWQgYmFzZSBvZiB0aGUgYWJsb2Nrcy4gICovCi0gIC8qIEl0IGlzIG92ZXJsb2Fk ZWQgdG8gaG9sZCB0aGUgdmlydHVhbCBgYnVzeScgZmllbGQgdGhhdCBjb3VudHMKLSAgICAg dGhlIG51bWJlciBvZiB1c2VkIGFibG9jayBpbiB0aGUgcGFyZW50IGFibG9ja3MuCi0gICAg IFRoZSBmaXJzdCBhYmxvY2sgaGFzIHRoZSBgYnVzeScgZmllbGQsIHRoZSBvdGhlcnMgaGF2 ZSB0aGUgYGFiYXNlJwotICAgICBmaWVsZC4gIFRvIHRlbGwgdGhlIGRpZmZlcmVuY2UsIHdl IGFzc3VtZSB0aGF0IHBvaW50ZXJzIHdpbGwgaGF2ZQotICAgICBpbnRlZ2VyIHZhbHVlcyBs YXJnZXIgdGhhbiAyICogQUJMT0NLU19TSVpFLiAgVGhlIGxvd2VzdCBiaXQgb2YgYGJ1c3kn Ci0gICAgIGlzIHVzZWQgdG8gdGVsbCB3aGV0aGVyIHRoZSByZWFsIGJhc2Ugb2YgdGhlIHBh cmVudCBhYmxvY2tzIGlzIGBhYmFzZScKLSAgICAgKGlmIG5vdCwgdGhlIHdvcmQgYmVmb3Jl IHRoZSBmaXJzdCBhYmxvY2sgaG9sZHMgYSBwb2ludGVyIHRvIHRoZQotICAgICByZWFsIGJh c2UpLiAgKi8KLSAgc3RydWN0IGFibG9ja3MgKmFiYXNlOwotICAvKiBUaGUgcGFkZGluZyBv ZiBhbGwgYnV0IHRoZSBsYXN0IGFibG9jayBpcyB1bnVzZWQuICBUaGUgcGFkZGluZyBvZgot ICAgICB0aGUgbGFzdCBhYmxvY2sgaW4gYW4gYWJsb2NrcyBpcyBub3QgYWxsb2NhdGVkLiAg Ki8KLSNpZiBCTE9DS19QQURESU5HCi0gIGNoYXIgcGFkZGluZ1tCTE9DS19QQURESU5HXTsK LSNlbmRpZgotfTsKLQotLyogQSBidW5jaCBvZiBjb25zZWN1dGl2ZSBhbGlnbmVkIGJsb2Nr cy4gICovCi1zdHJ1Y3QgYWJsb2NrcwotewotICBzdHJ1Y3QgYWJsb2NrIGJsb2Nrc1tBQkxP Q0tTX1NJWkVdOwotfTsKLQotLyogU2l6ZSBvZiB0aGUgYmxvY2sgcmVxdWVzdGVkIGZyb20g bWFsbG9jIG9yIHBvc2l4X21lbWFsaWduLiAgKi8KLSNkZWZpbmUgQUJMT0NLU19CWVRFUyAo c2l6ZW9mIChzdHJ1Y3QgYWJsb2NrcykgLSBCTE9DS19QQURESU5HKQotCi0jZGVmaW5lIEFC TE9DS19BQkFTRShibG9jaykgXAotICAoKCh1aW50cHRyX3QpIChibG9jayktPmFiYXNlKSA8 PSAoMSArIDIgKiBBQkxPQ0tTX1NJWkUpCVwKLSAgID8gKHN0cnVjdCBhYmxvY2tzICopKGJs b2NrKQkJCQkJXAotICAgOiAoYmxvY2spLT5hYmFzZSkKLQotLyogVmlydHVhbCBgYnVzeScg ZmllbGQuICAqLwotI2RlZmluZSBBQkxPQ0tTX0JVU1koYWJhc2UpICgoYWJhc2UpLT5ibG9j a3NbMF0uYWJhc2UpCi0KLS8qIFBvaW50ZXIgdG8gdGhlIChub3QgbmVjZXNzYXJpbHkgYWxp Z25lZCkgbWFsbG9jIGJsb2NrLiAgKi8KLSNpZmRlZiBVU0VfUE9TSVhfTUVNQUxJR04KLSNk ZWZpbmUgQUJMT0NLU19CQVNFKGFiYXNlKSAoYWJhc2UpCi0jZWxzZQotI2RlZmluZSBBQkxP Q0tTX0JBU0UoYWJhc2UpIFwKLSAgKDEgJiAoaW50cHRyX3QpIEFCTE9DS1NfQlVTWSAoYWJh c2UpID8gYWJhc2UgOiAoKHZvaWQqKilhYmFzZSlbLTFdKQotI2VuZGlmCi0KLS8qIFRoZSBs aXN0IG9mIGZyZWUgYWJsb2NrLiAgICovCi1zdGF0aWMgc3RydWN0IGFibG9jayAqZnJlZV9h YmxvY2s7Ci0KLS8qIEFsbG9jYXRlIGFuIGFsaWduZWQgYmxvY2sgb2YgbmJ5dGVzLgotICAg QWxpZ25tZW50IGlzIG9uIGEgbXVsdGlwbGUgb2YgQkxPQ0tfQUxJR04gYW5kIGBuYnl0ZXMn IGhhcyB0byBiZQotICAgc21hbGxlciBvciBlcXVhbCB0byBCTE9DS19CWVRFUy4gICovCisv KiBQYWRkaW5nIHRvIGxlYXZlIGF0IHRoZSBlbmQgb2YgYSBtYWxsb2MnZCBibG9jay4gIFRo aXMgc2hvdWxkIGhlbHAKKyAgIHRoZSBtYWxsb2MgaW1wbGVtZW50YXRpb24gdG8gYWxsb2Nh dGUgYWxpZ25lZCBibG9ja3MgY29uc2VjdXRpdmVseS4KKyAgIEZJWE1FOiB0dW5lZCB0byBm aXQgZ2xpYmMgbWFsbG9jLCBtYXkgYmUgc3Vib3B0aW1hbCBmb3Igb3RoZXJzLiAgKi8KKwor I2RlZmluZSBCTE9DS19QQURESU5HIHNpemVvZiAobG9uZykKKworLyogTWF4aW11bSBhbW91 bnQgb2YgbWVtb3J5IGluIGFsaWduZWQgYmxvY2suICAqLworCisjZGVmaW5lIEJMT0NLX0JZ VEVTIChCTE9DS19BTElHTiAtIEJMT0NLX1BBRERJTkcpCisKKy8qIExpa2UgbGlzcF9tYWxs b2MsIGJ1dCBhbGxvY2F0ZXMgYWxpZ25lZCBibG9jayBvZiBhdAorICAgbW9zdCBCTE9DS19C WVRFUyBhbGlnbmVkIG9uIGEgQkxPQ0tfQUxJR04gYm91bmRhcnkuICAqLworCiBzdGF0aWMg dm9pZCAqCiBsaXNwX2FsaWduX21hbGxvYyAoc2l6ZV90IG5ieXRlcywgZW51bSBtZW1fdHlw ZSB0eXBlKQogewotICB2b2lkICpiYXNlLCAqdmFsOwotICBzdHJ1Y3QgYWJsb2NrcyAqYWJh c2U7CisgIHZvaWQgKnZhbDsKIAogICBlYXNzZXJ0IChuYnl0ZXMgPD0gQkxPQ0tfQllURVMp OwogCkBAIC0xMDUyLDg2ICs5OTMsNDAgQEAKICAgYWxsb2NhdGVkX21lbV90eXBlID0gdHlw ZTsKICNlbmRpZgogCi0gIGlmICghZnJlZV9hYmxvY2spCi0gICAgewotICAgICAgaW50IGk7 Ci0gICAgICBpbnRwdHJfdCBhbGlnbmVkOyAvKiBpbnQgZ2V0cyB3YXJuaW5nIGNhc3Rpbmcg dG8gNjQtYml0IHBvaW50ZXIuICAqLwotCiAjaWZkZWYgRE9VR19MRUFfTUFMTE9DCi0gICAg ICAvKiBQcmV2ZW50IG1tYXAnaW5nIHRoZSBjaHVuay4gIExpc3AgZGF0YSBtYXkgbm90IGJl IG1tYXAnZWQKLQkgYmVjYXVzZSBtYXBwZWQgcmVnaW9uIGNvbnRlbnRzIGFyZSBub3QgcHJl c2VydmVkIGluCi0JIGEgZHVtcGVkIEVtYWNzLiAgKi8KLSAgICAgIG1hbGxvcHQgKE1fTU1B UF9NQVgsIDApOworICAvKiBQcmV2ZW50IG1tYXAnaW5nIHRoZSBjaHVuay4gIExpc3AgZGF0 YSBtYXkgbm90IGJlIG1tYXAnZWQKKyAgICAgYmVjYXVzZSBtYXBwZWQgcmVnaW9uIGNvbnRl bnRzIGFyZSBub3QgcHJlc2VydmVkIGluCisgICAgIGEgZHVtcGVkIEVtYWNzLiAgKi8KKyAg bWFsbG9wdCAoTV9NTUFQX01BWCwgMCk7CiAjZW5kaWYKIAotI2lmZGVmIFVTRV9QT1NJWF9N RU1BTElHTgotICAgICAgewotCWludCBlcnIgPSBwb3NpeF9tZW1hbGlnbiAoJmJhc2UsIEJM T0NLX0FMSUdOLCBBQkxPQ0tTX0JZVEVTKTsKLQlpZiAoZXJyKQotCSAgYmFzZSA9IE5VTEw7 Ci0JYWJhc2UgPSBiYXNlOwotICAgICAgfQorI2lmZGVmIEhBVkVfUE9TSVhfTUVNQUxJR04K KyAgaWYgKHBvc2l4X21lbWFsaWduICgmdmFsLCBCTE9DS19BTElHTiwgbmJ5dGVzKSkKKyAg ICB2YWwgPSBOVUxMOwogI2Vsc2UKLSAgICAgIGJhc2UgPSBtYWxsb2MgKEFCTE9DS1NfQllU RVMpOwotICAgICAgYWJhc2UgPSBBTElHTiAoYmFzZSwgQkxPQ0tfQUxJR04pOworICB2YWwg PSBtZW1hbGlnbiAoQkxPQ0tfQUxJR04sIG5ieXRlcyk7CiAjZW5kaWYKIAotICAgICAgaWYg KGJhc2UgPT0gMCkKLQl7Ci0JICBNQUxMT0NfVU5CTE9DS19JTlBVVDsKLQkgIG1lbW9yeV9m dWxsIChBQkxPQ0tTX0JZVEVTKTsKLQl9Ci0KLSAgICAgIGFsaWduZWQgPSAoYmFzZSA9PSBh YmFzZSk7Ci0gICAgICBpZiAoIWFsaWduZWQpCi0JKCh2b2lkKiopYWJhc2UpWy0xXSA9IGJh c2U7Ci0KICNpZmRlZiBET1VHX0xFQV9NQUxMT0MKLSAgICAgIC8qIEJhY2sgdG8gYSByZWFz b25hYmxlIG1heGltdW0gb2YgbW1hcCdlZCBhcmVhcy4gICovCi0gICAgICBtYWxsb3B0IChN X01NQVBfTUFYLCBNTUFQX01BWF9BUkVBUyk7CisgIC8qIEJhY2sgdG8gYSByZWFzb25hYmxl IG1heGltdW0gb2YgbW1hcCdlZCBhcmVhcy4gICovCisgIG1hbGxvcHQgKE1fTU1BUF9NQVgs IE1NQVBfTUFYX0FSRUFTKTsKICNlbmRpZgogCisgIGlmICghdmFsICYmIG5ieXRlcykKKyAg ICB7CisgICAgICBNQUxMT0NfVU5CTE9DS19JTlBVVDsKKyAgICAgIG1lbW9yeV9mdWxsIChu Ynl0ZXMpOworICAgIH0KKwogI2lmICEgVVNFX0xTQl9UQUcKLSAgICAgIC8qIElmIHRoZSBt ZW1vcnkganVzdCBhbGxvY2F0ZWQgY2Fubm90IGJlIGFkZHJlc3NlZCB0aHJ1IGEgTGlzcAot CSBvYmplY3QncyBwb2ludGVyLCBhbmQgaXQgbmVlZHMgdG8gYmUsIHRoYXQncyBlcXVpdmFs ZW50IHRvCi0JIHJ1bm5pbmcgb3V0IG9mIG1lbW9yeS4gICovCi0gICAgICBpZiAodHlwZSAh PSBNRU1fVFlQRV9OT05fTElTUCkKLQl7Ci0JICBMaXNwX09iamVjdCB0ZW07Ci0JICBjaGFy ICplbmQgPSAoY2hhciAqKSBiYXNlICsgQUJMT0NLU19CWVRFUyAtIDE7Ci0JICBYU0VUQ09O UyAodGVtLCBlbmQpOwotCSAgaWYgKChjaGFyICopIFhDT05TICh0ZW0pICE9IGVuZCkKLQkg ICAgewotCSAgICAgIGxpc3BfbWFsbG9jX2xvc2VyID0gYmFzZTsKLQkgICAgICBmcmVlIChi YXNlKTsKLQkgICAgICBNQUxMT0NfVU5CTE9DS19JTlBVVDsKLQkgICAgICBtZW1vcnlfZnVs bCAoU0laRV9NQVgpOwotCSAgICB9Ci0JfQotI2VuZGlmCi0KLSAgICAgIC8qIEluaXRpYWxp emUgdGhlIGJsb2NrcyBhbmQgcHV0IHRoZW0gb24gdGhlIGZyZWUgbGlzdC4KLQkgSWYgYGJh c2UnIHdhcyBub3QgcHJvcGVybHkgYWxpZ25lZCwgd2UgY2FuJ3QgdXNlIHRoZSBsYXN0IGJs b2NrLiAgKi8KLSAgICAgIGZvciAoaSA9IDA7IGkgPCAoYWxpZ25lZCA/IEFCTE9DS1NfU0la RSA6IEFCTE9DS1NfU0laRSAtIDEpOyBpKyspCi0JewotCSAgYWJhc2UtPmJsb2Nrc1tpXS5h YmFzZSA9IGFiYXNlOwotCSAgYWJhc2UtPmJsb2Nrc1tpXS54Lm5leHRfZnJlZSA9IGZyZWVf YWJsb2NrOwotCSAgZnJlZV9hYmxvY2sgPSAmYWJhc2UtPmJsb2Nrc1tpXTsKLQl9Ci0gICAg ICBBQkxPQ0tTX0JVU1kgKGFiYXNlKSA9IChzdHJ1Y3QgYWJsb2NrcyAqKSBhbGlnbmVkOwot Ci0gICAgICBlYXNzZXJ0ICgwID09ICgodWludHB0cl90KSBhYmFzZSkgJSBCTE9DS19BTElH Tik7Ci0gICAgICBlYXNzZXJ0IChBQkxPQ0tfQUJBU0UgKCZhYmFzZS0+YmxvY2tzWzNdKSA9 PSBhYmFzZSk7IC8qIDMgaXMgYXJiaXRyYXJ5ICovCi0gICAgICBlYXNzZXJ0IChBQkxPQ0tf QUJBU0UgKCZhYmFzZS0+YmxvY2tzWzBdKSA9PSBhYmFzZSk7Ci0gICAgICBlYXNzZXJ0IChB QkxPQ0tTX0JBU0UgKGFiYXNlKSA9PSBiYXNlKTsKLSAgICAgIGVhc3NlcnQgKGFsaWduZWQg PT0gKGludHB0cl90KSBBQkxPQ0tTX0JVU1kgKGFiYXNlKSk7CisgIGlmICh0eXBlICE9IE1F TV9UWVBFX05PTl9MSVNQIAorICAgICAgJiYgIXZlcmlmeV9hZGRyZXNzICgoY2hhciAqKSB2 YWwgKyBuYnl0ZXMgLSAxKSkKKyAgICB7CisgICAgICBmcmVlICh2YWwpOworICAgICAgTUFM TE9DX1VOQkxPQ0tfSU5QVVQ7CisgICAgICBtZW1vcnlfZnVsbCAoU0laRV9NQVgpOwogICAg IH0KLQotICBhYmFzZSA9IEFCTE9DS19BQkFTRSAoZnJlZV9hYmxvY2spOwotICBBQkxPQ0tT X0JVU1kgKGFiYXNlKSA9Ci0gICAgKHN0cnVjdCBhYmxvY2tzICopICgyICsgKGludHB0cl90 KSBBQkxPQ0tTX0JVU1kgKGFiYXNlKSk7Ci0gIHZhbCA9IGZyZWVfYWJsb2NrOwotICBmcmVl X2FibG9jayA9IGZyZWVfYWJsb2NrLT54Lm5leHRfZnJlZTsKKyNlbmRpZiAvKiBub3QgVVNF X0xTQl9UQUcgKi8KIAogI2lmIEdDX01BUktfU1RBQ0sgJiYgIWRlZmluZWQgR0NfTUFMTE9D X0NIRUNLCiAgIGlmICh0eXBlICE9IE1FTV9UWVBFX05PTl9MSVNQKQpAQCAtMTEzOSw1MSAr MTAzNCwyMSBAQAogI2VuZGlmCiAKICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7Ci0KICAgZWFz c2VydCAoMCA9PSAoKHVpbnRwdHJfdCkgdmFsKSAlIEJMT0NLX0FMSUdOKTsKICAgcmV0dXJu IHZhbDsKIH0KIAorLyogRnJlZSBCTE9DSy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgdG8gZnJl ZSBtZW1vcnkgYWxsb2NhdGVkCisgICB3aXRoIGEgY2FsbCB0byBsaXNwX21hbGxvYyBvciBs aXNwX2FsaWduX21hbGxvYy4gICovCisKIHN0YXRpYyB2b2lkCi1saXNwX2FsaWduX2ZyZWUg KHZvaWQgKmJsb2NrKQorbGlzcF9mcmVlICh2b2lkICpibG9jaykKIHsKLSAgc3RydWN0IGFi bG9jayAqYWJsb2NrID0gYmxvY2s7Ci0gIHN0cnVjdCBhYmxvY2tzICphYmFzZSA9IEFCTE9D S19BQkFTRSAoYWJsb2NrKTsKLQogICBNQUxMT0NfQkxPQ0tfSU5QVVQ7CisgIGZyZWUgKGJs b2NrKTsKICNpZiBHQ19NQVJLX1NUQUNLICYmICFkZWZpbmVkIEdDX01BTExPQ19DSEVDSwog ICBtZW1fZGVsZXRlIChtZW1fZmluZCAoYmxvY2spKTsKICNlbmRpZgotICAvKiBQdXQgb24g ZnJlZSBsaXN0LiAgKi8KLSAgYWJsb2NrLT54Lm5leHRfZnJlZSA9IGZyZWVfYWJsb2NrOwot ICBmcmVlX2FibG9jayA9IGFibG9jazsKLSAgLyogVXBkYXRlIGJ1c3kgY291bnQuICAqLwot ICBBQkxPQ0tTX0JVU1kgKGFiYXNlKQotICAgID0gKHN0cnVjdCBhYmxvY2tzICopICgtMiAr IChpbnRwdHJfdCkgQUJMT0NLU19CVVNZIChhYmFzZSkpOwotCi0gIGlmICgyID4gKGludHB0 cl90KSBBQkxPQ0tTX0JVU1kgKGFiYXNlKSkKLSAgICB7IC8qIEFsbCB0aGUgYmxvY2tzIGFy ZSBmcmVlLiAgKi8KLSAgICAgIGludCBpID0gMCwgYWxpZ25lZCA9IChpbnRwdHJfdCkgQUJM T0NLU19CVVNZIChhYmFzZSk7Ci0gICAgICBzdHJ1Y3QgYWJsb2NrICoqdGVtID0gJmZyZWVf YWJsb2NrOwotICAgICAgc3RydWN0IGFibG9jayAqYXRvcCA9ICZhYmFzZS0+YmxvY2tzW2Fs aWduZWQgPyBBQkxPQ0tTX1NJWkUgOiBBQkxPQ0tTX1NJWkUgLSAxXTsKLQotICAgICAgd2hp bGUgKCp0ZW0pCi0JewotCSAgaWYgKCp0ZW0gPj0gKHN0cnVjdCBhYmxvY2sgKikgYWJhc2Ug JiYgKnRlbSA8IGF0b3ApCi0JICAgIHsKLQkgICAgICBpKys7Ci0JICAgICAgKnRlbSA9ICgq dGVtKS0+eC5uZXh0X2ZyZWU7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgdGVtID0gJigqdGVt KS0+eC5uZXh0X2ZyZWU7Ci0JfQotICAgICAgZWFzc2VydCAoKGFsaWduZWQgJiAxKSA9PSBh bGlnbmVkKTsKLSAgICAgIGVhc3NlcnQgKGkgPT0gKGFsaWduZWQgPyBBQkxPQ0tTX1NJWkUg OiBBQkxPQ0tTX1NJWkUgLSAxKSk7Ci0jaWZkZWYgVVNFX1BPU0lYX01FTUFMSUdOCi0gICAg ICBlYXNzZXJ0ICgodWludHB0cl90KSBBQkxPQ0tTX0JBU0UgKGFiYXNlKSAlIEJMT0NLX0FM SUdOID09IDApOwotI2VuZGlmCi0gICAgICBmcmVlIChBQkxPQ0tTX0JBU0UgKGFiYXNlKSk7 Ci0gICAgfQogICBNQUxMT0NfVU5CTE9DS19JTlBVVDsKIH0KIApAQCAtMzc1Nyw3ICszNjIy LDcgQEAKIAkgICAgaWYgKGkgPT0gMCkKIAkgICAgICBmcmVlIChzcGFyZV9tZW1vcnlbaV0p OwogCSAgICBlbHNlIGlmIChpID49IDEgJiYgaSA8PSA0KQotCSAgICAgIGxpc3BfYWxpZ25f ZnJlZSAoc3BhcmVfbWVtb3J5W2ldKTsKKwkgICAgICBsaXNwX2ZyZWUgKHNwYXJlX21lbW9y eVtpXSk7CiAJICAgIGVsc2UKIAkgICAgICBsaXNwX2ZyZWUgKHNwYXJlX21lbW9yeVtpXSk7 CiAJICAgIHNwYXJlX21lbW9yeVtpXSA9IDA7CkBAIC02MjkyLDcgKzYxNTcsNyBAQAogCSAg ICAqY3ByZXYgPSBjYmxrLT5uZXh0OwogCSAgICAvKiBVbmhvb2sgZnJvbSB0aGUgZnJlZSBs aXN0LiAgKi8KIAkgICAgY29uc19mcmVlX2xpc3QgPSBjYmxrLT5jb25zZXNbMF0udS5jaGFp bjsKLQkgICAgbGlzcF9hbGlnbl9mcmVlIChjYmxrKTsKKwkgICAgbGlzcF9mcmVlIChjYmxr KTsKIAkgIH0KIAllbHNlCiAJICB7CkBAIC02MzM4LDcgKzYyMDMsNyBAQAogCSAgICAqZnBy ZXYgPSBmYmxrLT5uZXh0OwogCSAgICAvKiBVbmhvb2sgZnJvbSB0aGUgZnJlZSBsaXN0LiAg Ki8KIAkgICAgZmxvYXRfZnJlZV9saXN0ID0gZmJsay0+ZmxvYXRzWzBdLnUuY2hhaW47Ci0J ICAgIGxpc3BfYWxpZ25fZnJlZSAoZmJsayk7CisJICAgIGxpc3BfZnJlZSAoZmJsayk7CiAJ ICB9CiAJZWxzZQogCSAgewpAQCAtNjY3MSw5ICs2NTM2LDYgQEAKICAgcHVyZV9ieXRlc191 c2VkX2xpc3AgPSBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgPSAwOwogICBwdXJlX2J5dGVz X3VzZWRfYmVmb3JlX292ZXJmbG93ID0gMDsKIAotICAvKiBJbml0aWFsaXplIHRoZSBsaXN0 IG9mIGZyZWUgYWxpZ25lZCBibG9ja3MuICAqLwotICBmcmVlX2FibG9jayA9IE5VTEw7Ci0K ICNpZiBHQ19NQVJLX1NUQUNLIHx8IGRlZmluZWQgR0NfTUFMTE9DX0NIRUNLCiAgIG1lbV9p bml0ICgpOwogICBWZGVhZCA9IG1ha2VfcHVyZV9zdHJpbmcgKCJERUFEIiwgNCwgNCwgMCk7 Cgo= --------------020205080204070000060809--