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: Wed, 20 Jun 2012 10:47:08 +0400 Message-ID: <4FE171EC.8000503@yandex.ru> References: <4EE5B744.1090103@yandex.ru> <4EE60A93.9060401@yandex.ru> <4EE6478C.1020701@cs.ucla.edu> <4FE0ADFC.9090504@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080208090609090204010702" X-Trace: dough.gmane.org 1340174853 23380 80.91.229.3 (20 Jun 2012 06:47:33 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 20 Jun 2012 06:47:33 +0000 (UTC) Cc: Emacs development discussions To: Stefan Monnier , Paul Eggert , Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jun 20 08:47:30 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 1ShEhL-0002ne-7r for ged-emacs-devel@m.gmane.org; Wed, 20 Jun 2012 08:47:27 +0200 Original-Received: from localhost ([::1]:34100 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShEhL-0006xd-33 for ged-emacs-devel@m.gmane.org; Wed, 20 Jun 2012 02:47:27 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:50410) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShEhD-0006wy-Tp for emacs-devel@gnu.org; Wed, 20 Jun 2012 02:47:25 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ShEh7-0000Su-I2 for emacs-devel@gnu.org; Wed, 20 Jun 2012 02:47:19 -0400 Original-Received: from forward14.mail.yandex.net ([95.108.130.92]:41481) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShEh3-0000S1-G5; Wed, 20 Jun 2012 02:47:10 -0400 Original-Received: from smtp11.mail.yandex.net (smtp11.mail.yandex.net [95.108.130.67]) by forward14.mail.yandex.net (Yandex) with ESMTP id 42E671980BBA; Wed, 20 Jun 2012 10:47:07 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340174827; bh=qU+SMxf0smKOXPS0i/b6zziCe0HmyKpj9hnihB/AcZ4=; h=Message-ID:Date:From:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type; b=wThwYSdFaUQ2NfmJ/n/nt366/1ldHxDf+5A7AQhUsl0bI4G6jN0FVpEExjvus9jfY /0WQrqFZaGe+Nx2IboM8Y10EjXEJqqDI83n4KeE03Utb7Kmg0kjYuD9Mj6ma1ZQdNX uf7nQ3onJ7YROW5CUUNwTu9BHtflqeDzpUm9ObNo= Original-Received: from smtp11.mail.yandex.net (localhost [127.0.0.1]) by smtp11.mail.yandex.net (Yandex) with ESMTP id F36907E0510; Wed, 20 Jun 2012 10:47:06 +0400 (MSK) Original-Received: from 213-148-21-55.gelicon.ru (213-148-21-55.gelicon.ru [213.148.21.55]) by smtp11.mail.yandex.net (nwsmtp/Yandex) with ESMTP id l5VKnacE-l6V8FcuG; Wed, 20 Jun 2012 10:47:06 +0400 X-Yandex-Rcpt-Suid: monnier@iro.umontreal.ca X-Yandex-Rcpt-Suid: eggert@cs.ucla.edu X-Yandex-Rcpt-Suid: eliz@gnu.org X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340174826; bh=qU+SMxf0smKOXPS0i/b6zziCe0HmyKpj9hnihB/AcZ4=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=mS3nqHqYwkAqmi+9EM63R06A5tVEFpzC90YJSy9A7oWSVCNrkNxIziT+Bg96BK1b5 fQ3ISrerYCGtnjSaM02oMg9NidPih39jrDU3TtgVYki/l+HOO35kHEEkcz+0vVgion 5/Kyv+fRHqYGd8jK3QCEk9wNslI+kejRLySh8Yxg= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.130.92 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:151042 Archived-At: This is a multi-part message in MIME format. --------------080208090609090204010702 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This code tries to utilize system malloc features and falls back to legacy aligned blocks management code if system malloc implementation is unknown, broken, or lacks aligned allocation routines. It will be great if someone can help to test this on Windows, OSX, old *BSD and other non-GNU/Linux systems; in particular, I believe OSX should have some specific aligned allocation stuff, which I'm not aware about. Dmitry --------------080208090609090204010702 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" PT09IG1vZGlmaWVkIGZpbGUgJ2NvbmZpZ3VyZS5pbicKLS0tIGNvbmZpZ3VyZS5pbgkyMDEy LTA2LTEzIDEzOjQwOjQ4ICswMDAwCisrKyBjb25maWd1cmUuaW4JMjAxMi0wNi0yMCAwNTo1 OTo0MyArMDAwMApAQCAtMjY5OCwxMSArMjY5OCwyOSBAQAogX19mcGVuZGluZyBzdHJzaWdu YWwgc2V0aXRpbWVyIFwKIHNlbmR0byByZWN2ZnJvbSBnZXRzb2NrbmFtZSBnZXRwZWVybmFt ZSBnZXRpZmFkZHJzIGZyZWVpZmFkZHJzIFwKIGdhaV9zdHJlcnJvciBta3N0ZW1wIGdldGxp bmUgZ2V0ZGVsaW0gZnN5bmMgc3luYyBcCi1kaWZmdGltZSBwb3NpeF9tZW1hbGlnbiBcCitk aWZmdGltZSBtZW1hbGlnbiBwb3NpeF9tZW1hbGlnbiBcCiBnZXRwd2VudCBlbmRwd2VudCBn ZXRncmVudCBlbmRncmVudCBcCiB0b3VjaGxvY2sgXAogY2ZtYWtlcmF3IGNmc2V0c3BlZWQg Y29weXNpZ24gX19leGVjdXRhYmxlX3N0YXJ0KQogCitkbmwgSWYgdGhlcmUgaXMgbm8gcG9z aXhfbWVtYWxpZ24sIGNoZWNrIHdoZXRoZXIgcG9pbnRlciAKK2RubCByZXR1cm5lZCBieSBt ZW1hbGlnbiBjYW4gYmUgcGFzc2VkIHRvIGZyZWUuCitpZiB0ZXN0ICIkYWNfY3ZfZnVuY19w b3NpeF9tZW1hbGlnbiIgIT0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRhY19jdl9mdW5jX21l bWFsaWduIiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBwb2lu dGVyIHJldHVybmVkIGJ5IG1lbWFsaWduIGNhbiBiZSBwYXNzZWQgdG8gZnJlZV0pCisgICAg QUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sjaW5jbHVkZSA8bWFsbG9jLmg+Citt YWluICgpIHsgdm9pZCAqcHRyID0gbWVtYWxpZ24gKDEwMjQsIDEwMjQpOworaWYgKCFwdHIp IHJldHVybiAxOyBmcmVlIChwdHIpOyByZXR1cm4gMDsgfQorXV0pXSwgZW1hY3NfY3Zfd29y a2luZ19tZW1hbGlnbj15ZXMsIGVtYWNzX2N2X3dvcmtpbmdfbWVtYWxpZ249bm8sCisgICAg ZW1hY3NfY3Zfd29ya2luZ19tZW1hbGlnbj1ubykKKyAgICBBQ19NU0dfUkVTVUxUKCRlbWFj c19jdl93b3JraW5nX21lbWFsaWduKQorICAgIGlmIHRlc3QgJGVtYWNzX2N2X3dvcmtpbmdf bWVtYWxpZ24gPSB5ZXM7IHRoZW4KKyAgICAgIEFDX0RFRklORShIQVZFX1dPUktJTkdfTUVN QUxJR04sIDEsCisgICAgICAgIFtEZWZpbmUgdG8gMSBpZiBwb2ludGVyIHJldHVybmVkIGJ5 IGBtZW1hbGlnbicgY2FuIGJlIHBhc3NlZCB0byBgZnJlZScuXSkKKyAgICBmaQorICBmaQor ZmkKKwogZG5sIENhbm5vdCB1c2UgQUNfQ0hFQ0tfRlVOQ1MKIEFDX0NBQ0hFX0NIRUNLKFtm b3IgX19idWlsdGluX3Vud2luZF9pbml0XSwKIAkgICAgICAgZW1hY3NfY3ZfZnVuY19fX2J1 aWx0aW5fdW53aW5kX2luaXQsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2FsbG9jLmMnCi0t LSBzcmMvYWxsb2MuYwkyMDEyLTA2LTE5IDE2OjU2OjI4ICswMDAwCisrKyBzcmMvYWxsb2Mu YwkyMDEyLTA2LTIwIDA2OjM1OjA1ICswMDAwCkBAIC0zMDksOSArMzA5LDYgQEAKICAgTUVN X1RZUEVfVkVDVE9SX0JMT0NLCiB9OwogCi1zdGF0aWMgdm9pZCAqbGlzcF9tYWxsb2MgKHNp emVfdCwgZW51bSBtZW1fdHlwZSk7Ci0KLQogI2lmIEdDX01BUktfU1RBQ0sgfHwgZGVmaW5l ZCBHQ19NQUxMT0NfQ0hFQ0sKIAogI2lmIEdDX01BUktfU1RBQ0sgPT0gR0NfVVNFX0dDUFJP U19DSEVDS19aT01CSUVTCkBAIC04ODgsMTkgKzg4NSwzNyBAQAogICByZXR1cm4gUW5pbDsK IH0KIAorI2lmICEgVVNFX0xTQl9UQUcKKworLyogVXNlZCB0byBjYXRjaCBpbnZhbGlkIGFk ZHJlc3Mgd2hlbiBkZWJ1Z2dpbmcuICAqLworCit2b2lkICpsaXNwX21hbGxvY19sb3NlciBF WFRFUk5BTExZX1ZJU0lCTEU7CisKKy8qIE5vbnplcm8gaWYgdGhlIG1lbW9yeSBhdCBBRERS IGNhbiBiZQorICAgYWRkcmVzc2VkIHRocnUgYSBMaXNwIG9iamVjdCdzIHBvaW50ZXIuICAq LworCitzdGF0aWMgaW5saW5lIHZvaWQKK3ZlcmlmeV9hZGRyZXNzIChjaGFyICphZGRyKQor eworICBMaXNwX09iamVjdCBvYmo7CisKKyAgWFNFVENPTlMgKG9iaiwgYWRkcik7CisgIGlm ICgoY2hhciAqKSBYQ09OUyAob2JqKSA9PSBhZGRyKQorICAgIHJldHVybiAxOworICBsaXNw X21hbGxvY19sb3NlciA9IGFkZHI7CisgIHJldHVybiAwOworfQorCisjZW5kaWYgLyogbm90 IFVTRV9MU0JfVEFHICovCiAKIC8qIExpa2UgbWFsbG9jIGJ1dCB1c2VkIGZvciBhbGxvY2F0 aW5nIExpc3AgZGF0YS4gIE5CWVRFUyBpcyB0aGUKICAgIG51bWJlciBvZiBieXRlcyB0byBh bGxvY2F0ZSwgVFlQRSBkZXNjcmliZXMgdGhlIGludGVuZGVkIHVzZSBvZiB0aGUKICAgIGFs bG9jYXRlZCBtZW1vcnkgYmxvY2sgKGZvciBzdHJpbmdzLCBmb3IgY29uc2VzLCAuLi4pLiAg Ki8KIAotI2lmICEgVVNFX0xTQl9UQUcKLXZvaWQgKmxpc3BfbWFsbG9jX2xvc2VyIEVYVEVS TkFMTFlfVklTSUJMRTsKLSNlbmRpZgotCiBzdGF0aWMgdm9pZCAqCiBsaXNwX21hbGxvYyAo c2l6ZV90IG5ieXRlcywgZW51bSBtZW1fdHlwZSB0eXBlKQogewotICByZWdpc3RlciB2b2lk ICp2YWw7CisgIHZvaWQgKnZhbDsKIAogICBNQUxMT0NfQkxPQ0tfSU5QVVQ7CiAKQEAgLTkw OCwyNCArOTIzLDMzIEBACiAgIGFsbG9jYXRlZF9tZW1fdHlwZSA9IHR5cGU7CiAjZW5kaWYK IAorI2lmZGVmIERPVUdfTEVBX01BTExPQworICAvKiBQcmV2ZW50IG1tYXAnaW5nIHRoZSBj aHVuay4gIExpc3AgZGF0YSBtYXkgbm90IGJlIG1tYXAnZWQKKyAgICAgYmVjYXVzZSBtYXBw ZWQgcmVnaW9uIGNvbnRlbnRzIGFyZSBub3QgcHJlc2VydmVkIGluCisgICAgIGEgZHVtcGVk IEVtYWNzLiAgKi8KKyAgbWFsbG9wdCAoTV9NTUFQX01BWCwgMCk7CisjZW5kaWYKICAgdmFs ID0gKHZvaWQgKikgbWFsbG9jIChuYnl0ZXMpOworI2lmZGVmIERPVUdfTEVBX01BTExPQwor ICAvKiBCYWNrIHRvIGEgcmVhc29uYWJsZSBtYXhpbXVtIG9mIG1tYXAnZWQgYXJlYXMuICAq LworICBtYWxsb3B0IChNX01NQVBfTUFYLCBNTUFQX01BWF9BUkVBUyk7CisjZW5kaWYKKwor ICBpZiAoIXZhbCAmJiBuYnl0ZXMpCisgICAgeworICAgICAgTUFMTE9DX1VOQkxPQ0tfSU5Q VVQ7CisgICAgICBtZW1vcnlfZnVsbCAobmJ5dGVzKTsKKyAgICB9CiAKICNpZiAhIFVTRV9M U0JfVEFHCi0gIC8qIElmIHRoZSBtZW1vcnkganVzdCBhbGxvY2F0ZWQgY2Fubm90IGJlIGFk ZHJlc3NlZCB0aHJ1IGEgTGlzcAotICAgICBvYmplY3QncyBwb2ludGVyLCBhbmQgaXQgbmVl ZHMgdG8gYmUsCi0gICAgIHRoYXQncyBlcXVpdmFsZW50IHRvIHJ1bm5pbmcgb3V0IG9mIG1l bW9yeS4gICovCi0gIGlmICh2YWwgJiYgdHlwZSAhPSBNRU1fVFlQRV9OT05fTElTUCkKKyAg aWYgKHZhbCAmJiB0eXBlICE9IE1FTV9UWVBFX05PTl9MSVNQCisgICAgICAmJiAhdmVyaWZ5 X2FkZHJlc3MgKChjaGFyICopIHZhbCArIG5ieXRlcyAtIDEpKQogICAgIHsKLSAgICAgIExp c3BfT2JqZWN0IHRlbTsKLSAgICAgIFhTRVRDT05TICh0ZW0sIChjaGFyICopIHZhbCArIG5i eXRlcyAtIDEpOwotICAgICAgaWYgKChjaGFyICopIFhDT05TICh0ZW0pICE9IChjaGFyICop IHZhbCArIG5ieXRlcyAtIDEpCi0JewotCSAgbGlzcF9tYWxsb2NfbG9zZXIgPSB2YWw7Ci0J ICBmcmVlICh2YWwpOwotCSAgdmFsID0gMDsKLQl9CisgICAgICBmcmVlICh2YWwpOworICAg ICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7CisgICAgICBtZW1vcnlfZnVsbCAoU0laRV9NQVgp OwogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIG5vdCBVU0VfTFNCX1RBRyAqLwogCiAjaWYg R0NfTUFSS19TVEFDSyAmJiAhZGVmaW5lZCBHQ19NQUxMT0NfQ0hFQ0sKICAgaWYgKHZhbCAm JiB0eXBlICE9IE1FTV9UWVBFX05PTl9MSVNQKQpAQCAtOTMzLDEzICs5NTcsMTEgQEAKICNl bmRpZgogCiAgIE1BTExPQ19VTkJMT0NLX0lOUFVUOwotICBpZiAoIXZhbCAmJiBuYnl0ZXMp Ci0gICAgbWVtb3J5X2Z1bGwgKG5ieXRlcyk7CiAgIHJldHVybiB2YWw7CiB9CiAKLS8qIEZy ZWUgQkxPQ0suICBUaGlzIG11c3QgYmUgY2FsbGVkIHRvIGZyZWUgbWVtb3J5IGFsbG9jYXRl ZCB3aXRoIGEKLSAgIGNhbGwgdG8gbGlzcF9tYWxsb2MuICAqLworLyogRnJlZSBCTE9DSy4g IFRoaXMgbXVzdCBiZSBjYWxsZWQgdG8gZnJlZQorICAgbWVtb3J5IGFsbG9jYXRlZCB3aXRo IGEgY2FsbCB0byBsaXNwX21hbGxvYy4gICovCiAKIHN0YXRpYyB2b2lkCiBsaXNwX2ZyZWUg KHZvaWQgKmJsb2NrKQpAQCAtOTUyLDMwICs5NzQsMzEgQEAKICAgTUFMTE9DX1VOQkxPQ0tf SU5QVVQ7CiB9CiAKLS8qKioqKiAgQWxsb2NhdGlvbiBvZiBhbGlnbmVkIGJsb2NrcyBvZiBt ZW1vcnkgdG8gc3RvcmUgTGlzcCBkYXRhLiAgKioqKiovCi0KLS8qIFRoZSBlbnRyeSBwb2lu dCBpcyBsaXNwX2FsaWduX21hbGxvYyB3aGljaCByZXR1cm5zIGJsb2NrcyBvZiBhdCBtb3N0 Ci0gICBCTE9DS19CWVRFUyBhbmQgZ3VhcmFudGVlcyB0aGV5IGFyZSBhbGlnbmVkIG9uIGEg QkxPQ0tfQUxJR04gYm91bmRhcnkuICAqLwotCi0jaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9N RU1BTElHTikgJiYgZGVmaW5lZCAoU1lTVEVNX01BTExPQykKLSNkZWZpbmUgVVNFX1BPU0lY X01FTUFMSUdOIDEKLSNlbmRpZgorLyogQWxsb2NhdGlvbiBvZiBhbGlnbmVkIGJsb2NrcyBp cyBzb21ld2hhdCB0cmlja3kuICBPbiBQT1NJWCBzeXN0ZW1zLAorICAgSEFWRV9QT1NJWF9N RU1BTElHTiBpcyBkZWZpbmVkLCBzbyB3ZSBjYW4gdXNlIHBvc2l4X21lbWFsaWduIGFuZCBm cmVlLgorICAgU29tZSBzeXN0ZW1zIGxhY2tzIHBvc2l4X21lbWFsaWduLCBidXQgcHJvdmlk ZXMgbWVtYWxpZ247IGZvciBzdWNoIGEKKyAgIHN5c3RlbXMsIHdlJ3JlIGNoZWNraW5nIHdo ZXRoZXIgcG9pbnRlciByZXR1cm5lZCBieSBtZW1hbGlnbiBjYW4gYmUKKyAgIHBhc3NlZCB0 byBmcmVlLiAgSWYgdGhpcyBpcyBzbywgd2UgZGVmaW5lIEhBVkVfV09SS0lOR19NRU1BTElH TiBhbmQKKyAgIHVzZSBtZW1hbGlnbiBhbmQgZnJlZS4gIEZvciBuYXRpdmUgV2luZG93cyBi dWlsZCB3aXRoIE1TVkMsIHdlIHVzZQorICAgX2FsaWduZWRfbWFsbG9jIGFuZCBfYWxpZ25l ZF9mcmVlLiAgSWYgbm9uZSBvZiB0aGUgYWJvdmUsIHdlIHVzZQorICAgaW50ZXJuYWxfYWxp Z25fYWxsb2MgYW5kIGludGVybmFsX2FsaWduX2ZyZWUuICAqLwogCiAvKiBCTE9DS19BTElH TiBoYXMgdG8gYmUgYSBwb3dlciBvZiAyLiAgKi8KKwogI2RlZmluZSBCTE9DS19BTElHTiAo MSA8PCAxMCkKIAotLyogUGFkZGluZyB0byBsZWF2ZSBhdCB0aGUgZW5kIG9mIGEgbWFsbG9j J2QgYmxvY2suICBUaGlzIGlzIHRvIGdpdmUKLSAgIG1hbGxvYyBhIGNoYW5jZSB0byBtaW5p bWl6ZSB0aGUgYW1vdW50IG9mIG1lbW9yeSB3YXN0ZWQgdG8gYWxpZ25tZW50LgotICAgSXQg c2hvdWxkIGJlIHR1bmVkIHRvIHRoZSBwYXJ0aWN1bGFyIG1hbGxvYyBsaWJyYXJ5IHVzZWQu Ci0gICBPbiBnbGliYy0yLjMuMiwgbWFsbG9jIG5ldmVyIHRyaWVzIHRvIGFsaWduLCBzbyBh IHBhZGRpbmcgb2YgMCBpcyBiZXN0LgotICAgcG9zaXhfbWVtYWxpZ24gb24gdGhlIG90aGVy IGhhbmQgd291bGQgaWRlYWxseSBwcmVmZXIgYSB2YWx1ZSBvZiA0Ci0gICBiZWNhdXNlIG90 aGVyd2lzZSwgdGhlcmUncyAxMDIwIGJ5dGVzIHdhc3RlZCBiZXR3ZWVuIGVhY2ggYWJsb2Nr cy4KLSAgIEluIEVtYWNzLCB0ZXN0aW5nIHNob3dzIHRoYXQgdGhvc2UgMTAyMCBjYW4gbW9z dCBvZiB0aGUgdGltZSBiZQotICAgZWZmaWNpZW50bHkgdXNlZCBieSBtYWxsb2MgdG8gcGxh Y2Ugb3RoZXIgb2JqZWN0cywgc28gYSB2YWx1ZSBvZiAwIGNhbgotICAgc3RpbGwgcHJlZmVy YWJsZSB1bmxlc3MgeW91IGhhdmUgYSBsb3Qgb2YgYWxpZ25lZCBibG9ja3MgYW5kIHZpcnR1 YWxseQotICAgbm90aGluZyBlbHNlLiAgKi8KKyNpZiAhIEhBVkVfUE9TSVhfTUVNQUxJR04g JiYgISBIQVZFX1dPUktJTkdfTUVNQUxJR04gJiYgISBfTVNDX1ZFUgorCisvKiBIZXJlIHdl IGFzc3VtZSB0aGF0IG1hbGxvYyBpbXBsZW1lbnRhdGlvbiBoYXMKKyAgIG5vdGhpbmcgYWJv dXQgYWxpZ25lZCBibG9ja3MgbWFuYWdlbWVudC4gICovCisKKy8qIFBhZGRpbmcgdG8gbGVh dmUgYXQgdGhlIGVuZCBvZiBhIG1hbGxvYydkIGJsb2NrLiAgKi8KKwogI2RlZmluZSBCTE9D S19QQURESU5HIDAKLSNkZWZpbmUgQkxPQ0tfQllURVMgXAorCisvKiBNYXhpbXVtIGFtb3Vu dCBvZiBtZW1vcnkgaW4gYWxpZ25lZCBibG9jay4gICovCisKKyNkZWZpbmUgQkxPQ0tfQllU RVMJCQkJCQlcCiAgIChCTE9DS19BTElHTiAtIHNpemVvZiAoc3RydWN0IGFibG9ja3MgKikg LSBCTE9DS19QQURESU5HKQogCiAvKiBJbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGNv bnN0YW50cy4gICovCkBAIC05ODMsNiArMTAwNiw3IEBACiAjZGVmaW5lIEFCTE9DS1NfU0la RSAxNgogCiAvKiBBbiBhbGlnbmVkIGJsb2NrIG9mIG1lbW9yeS4gICovCisKIHN0cnVjdCBh YmxvY2sKIHsKICAgdW5pb24KQEAgLTEwMDgsMTIgKzEwMzIsMTQgQEAKIH07CiAKIC8qIEEg YnVuY2ggb2YgY29uc2VjdXRpdmUgYWxpZ25lZCBibG9ja3MuICAqLworCiBzdHJ1Y3QgYWJs b2NrcwogewogICBzdHJ1Y3QgYWJsb2NrIGJsb2Nrc1tBQkxPQ0tTX1NJWkVdOwogfTsKIAot LyogU2l6ZSBvZiB0aGUgYmxvY2sgcmVxdWVzdGVkIGZyb20gbWFsbG9jIG9yIHBvc2l4X21l bWFsaWduLiAgKi8KKy8qIFNpemUgb2YgdGhlIGJsb2NrIHJlcXVlc3RlZCBmcm9tIHVuZGVy bHlpbmcgbWFsbG9jLiAgKi8KKwogI2RlZmluZSBBQkxPQ0tTX0JZVEVTIChzaXplb2YgKHN0 cnVjdCBhYmxvY2tzKSAtIEJMT0NLX1BBRERJTkcpCiAKICNkZWZpbmUgQUJMT0NLX0FCQVNF KGJsb2NrKSBcCkBAIC0xMDIyLDk0ICsxMDQ4LDQzIEBACiAgICA6IChibG9jayktPmFiYXNl KQogCiAvKiBWaXJ0dWFsIGBidXN5JyBmaWVsZC4gICovCisKICNkZWZpbmUgQUJMT0NLU19C VVNZKGFiYXNlKSAoKGFiYXNlKS0+YmxvY2tzWzBdLmFiYXNlKQogCiAvKiBQb2ludGVyIHRv IHRoZSAobm90IG5lY2Vzc2FyaWx5IGFsaWduZWQpIG1hbGxvYyBibG9jay4gICovCi0jaWZk ZWYgVVNFX1BPU0lYX01FTUFMSUdOCi0jZGVmaW5lIEFCTE9DS1NfQkFTRShhYmFzZSkgKGFi YXNlKQotI2Vsc2UKLSNkZWZpbmUgQUJMT0NLU19CQVNFKGFiYXNlKSBcCisKKyNkZWZpbmUg QUJMT0NLU19CQVNFKGFiYXNlKQkJCQkJCVwKICAgKDEgJiAoaW50cHRyX3QpIEFCTE9DS1Nf QlVTWSAoYWJhc2UpID8gYWJhc2UgOiAoKHZvaWQqKilhYmFzZSlbLTFdKQotI2VuZGlmCiAK IC8qIFRoZSBsaXN0IG9mIGZyZWUgYWJsb2NrLiAgICovCisKIHN0YXRpYyBzdHJ1Y3QgYWJs b2NrICpmcmVlX2FibG9jazsKIAotLyogQWxsb2NhdGUgYW4gYWxpZ25lZCBibG9jayBvZiBu Ynl0ZXMuCi0gICBBbGlnbm1lbnQgaXMgb24gYSBtdWx0aXBsZSBvZiBCTE9DS19BTElHTiBh bmQgYG5ieXRlcycgaGFzIHRvIGJlCi0gICBzbWFsbGVyIG9yIGVxdWFsIHRvIEJMT0NLX0JZ VEVTLiAgKi8KKy8qIEFsbG9jYXRlIGFuIGFsaWduZWQgYmxvY2sgb2YgTkJZVEVTLiAgKi8K Kwogc3RhdGljIHZvaWQgKgotbGlzcF9hbGlnbl9tYWxsb2MgKHNpemVfdCBuYnl0ZXMsIGVu dW0gbWVtX3R5cGUgdHlwZSkKK2ludGVybmFsX2FsaWduX2FsbG9jIChzaXplX3QgbmJ5dGVz KQogewogICB2b2lkICpiYXNlLCAqdmFsOwogICBzdHJ1Y3QgYWJsb2NrcyAqYWJhc2U7CiAK ICAgZWFzc2VydCAobmJ5dGVzIDw9IEJMT0NLX0JZVEVTKTsKIAotICBNQUxMT0NfQkxPQ0tf SU5QVVQ7Ci0KLSNpZmRlZiBHQ19NQUxMT0NfQ0hFQ0sKLSAgYWxsb2NhdGVkX21lbV90eXBl ID0gdHlwZTsKLSNlbmRpZgotCiAgIGlmICghZnJlZV9hYmxvY2spCiAgICAgewogICAgICAg aW50IGk7CiAgICAgICBpbnRwdHJfdCBhbGlnbmVkOyAvKiBpbnQgZ2V0cyB3YXJuaW5nIGNh c3RpbmcgdG8gNjQtYml0IHBvaW50ZXIuICAqLwogCi0jaWZkZWYgRE9VR19MRUFfTUFMTE9D Ci0gICAgICAvKiBQcmV2ZW50IG1tYXAnaW5nIHRoZSBjaHVuay4gIExpc3AgZGF0YSBtYXkg bm90IGJlIG1tYXAnZWQKLQkgYmVjYXVzZSBtYXBwZWQgcmVnaW9uIGNvbnRlbnRzIGFyZSBu b3QgcHJlc2VydmVkIGluCi0JIGEgZHVtcGVkIEVtYWNzLiAgKi8KLSAgICAgIG1hbGxvcHQg KE1fTU1BUF9NQVgsIDApOwotI2VuZGlmCi0KLSNpZmRlZiBVU0VfUE9TSVhfTUVNQUxJR04K LSAgICAgIHsKLQlpbnQgZXJyID0gcG9zaXhfbWVtYWxpZ24gKCZiYXNlLCBCTE9DS19BTElH TiwgQUJMT0NLU19CWVRFUyk7Ci0JaWYgKGVycikKLQkgIGJhc2UgPSBOVUxMOwotCWFiYXNl ID0gYmFzZTsKLSAgICAgIH0KLSNlbHNlCiAgICAgICBiYXNlID0gbWFsbG9jIChBQkxPQ0tT X0JZVEVTKTsKICAgICAgIGFiYXNlID0gQUxJR04gKGJhc2UsIEJMT0NLX0FMSUdOKTsKLSNl bmRpZgogCi0gICAgICBpZiAoYmFzZSA9PSAwKQotCXsKLQkgIE1BTExPQ19VTkJMT0NLX0lO UFVUOwotCSAgbWVtb3J5X2Z1bGwgKEFCTE9DS1NfQllURVMpOwotCX0KKyAgICAgIGlmIChi YXNlID09IE5VTEwpCisJcmV0dXJuIGJhc2U7CiAKICAgICAgIGFsaWduZWQgPSAoYmFzZSA9 PSBhYmFzZSk7CiAgICAgICBpZiAoIWFsaWduZWQpCiAJKCh2b2lkKiopYWJhc2UpWy0xXSA9 IGJhc2U7CiAKLSNpZmRlZiBET1VHX0xFQV9NQUxMT0MKLSAgICAgIC8qIEJhY2sgdG8gYSBy ZWFzb25hYmxlIG1heGltdW0gb2YgbW1hcCdlZCBhcmVhcy4gICovCi0gICAgICBtYWxsb3B0 IChNX01NQVBfTUFYLCBNTUFQX01BWF9BUkVBUyk7Ci0jZW5kaWYKLQotI2lmICEgVVNFX0xT Ql9UQUcKLSAgICAgIC8qIElmIHRoZSBtZW1vcnkganVzdCBhbGxvY2F0ZWQgY2Fubm90IGJl IGFkZHJlc3NlZCB0aHJ1IGEgTGlzcAotCSBvYmplY3QncyBwb2ludGVyLCBhbmQgaXQgbmVl ZHMgdG8gYmUsIHRoYXQncyBlcXVpdmFsZW50IHRvCi0JIHJ1bm5pbmcgb3V0IG9mIG1lbW9y eS4gICovCi0gICAgICBpZiAodHlwZSAhPSBNRU1fVFlQRV9OT05fTElTUCkKLQl7Ci0JICBM aXNwX09iamVjdCB0ZW07Ci0JICBjaGFyICplbmQgPSAoY2hhciAqKSBiYXNlICsgQUJMT0NL U19CWVRFUyAtIDE7Ci0JICBYU0VUQ09OUyAodGVtLCBlbmQpOwotCSAgaWYgKChjaGFyICop IFhDT05TICh0ZW0pICE9IGVuZCkKLQkgICAgewotCSAgICAgIGxpc3BfbWFsbG9jX2xvc2Vy ID0gYmFzZTsKLQkgICAgICBmcmVlIChiYXNlKTsKLQkgICAgICBNQUxMT0NfVU5CTE9DS19J TlBVVDsKLQkgICAgICBtZW1vcnlfZnVsbCAoU0laRV9NQVgpOwotCSAgICB9Ci0JfQotI2Vu ZGlmCi0KICAgICAgIC8qIEluaXRpYWxpemUgdGhlIGJsb2NrcyBhbmQgcHV0IHRoZW0gb24g dGhlIGZyZWUgbGlzdC4KIAkgSWYgYGJhc2UnIHdhcyBub3QgcHJvcGVybHkgYWxpZ25lZCwg d2UgY2FuJ3QgdXNlIHRoZSBsYXN0IGJsb2NrLiAgKi8KICAgICAgIGZvciAoaSA9IDA7IGkg PCAoYWxpZ25lZCA/IEFCTE9DS1NfU0laRSA6IEFCTE9DS1NfU0laRSAtIDEpOyBpKyspCkBA IC0xMTMzLDI3ICsxMTA4LDE1IEBACiAgIHZhbCA9IGZyZWVfYWJsb2NrOwogICBmcmVlX2Fi bG9jayA9IGZyZWVfYWJsb2NrLT54Lm5leHRfZnJlZTsKIAotI2lmIEdDX01BUktfU1RBQ0sg JiYgIWRlZmluZWQgR0NfTUFMTE9DX0NIRUNLCi0gIGlmICh0eXBlICE9IE1FTV9UWVBFX05P Tl9MSVNQKQotICAgIG1lbV9pbnNlcnQgKHZhbCwgKGNoYXIgKikgdmFsICsgbmJ5dGVzLCB0 eXBlKTsKLSNlbmRpZgotCi0gIE1BTExPQ19VTkJMT0NLX0lOUFVUOwotCi0gIGVhc3NlcnQg KDAgPT0gKCh1aW50cHRyX3QpIHZhbCkgJSBCTE9DS19BTElHTik7CiAgIHJldHVybiB2YWw7 CiB9CiAKIHN0YXRpYyB2b2lkCi1saXNwX2FsaWduX2ZyZWUgKHZvaWQgKmJsb2NrKQoraW50 ZXJuYWxfYWxpZ25fZnJlZSAodm9pZCAqYmxvY2spCiB7CiAgIHN0cnVjdCBhYmxvY2sgKmFi bG9jayA9IGJsb2NrOwogICBzdHJ1Y3QgYWJsb2NrcyAqYWJhc2UgPSBBQkxPQ0tfQUJBU0Ug KGFibG9jayk7CiAKLSAgTUFMTE9DX0JMT0NLX0lOUFVUOwotI2lmIEdDX01BUktfU1RBQ0sg JiYgIWRlZmluZWQgR0NfTUFMTE9DX0NIRUNLCi0gIG1lbV9kZWxldGUgKG1lbV9maW5kIChi bG9jaykpOwotI2VuZGlmCiAgIC8qIFB1dCBvbiBmcmVlIGxpc3QuICAqLwogICBhYmxvY2st PngubmV4dF9mcmVlID0gZnJlZV9hYmxvY2s7CiAgIGZyZWVfYWJsb2NrID0gYWJsb2NrOwpA QCAtMTE3OSwxMSArMTE0MiwxMTAgQEAKIAl9CiAgICAgICBlYXNzZXJ0ICgoYWxpZ25lZCAm IDEpID09IGFsaWduZWQpOwogICAgICAgZWFzc2VydCAoaSA9PSAoYWxpZ25lZCA/IEFCTE9D S1NfU0laRSA6IEFCTE9DS1NfU0laRSAtIDEpKTsKLSNpZmRlZiBVU0VfUE9TSVhfTUVNQUxJ R04KLSAgICAgIGVhc3NlcnQgKCh1aW50cHRyX3QpIEFCTE9DS1NfQkFTRSAoYWJhc2UpICUg QkxPQ0tfQUxJR04gPT0gMCk7Ci0jZW5kaWYKICAgICAgIGZyZWUgKEFCTE9DS1NfQkFTRSAo YWJhc2UpKTsKICAgICB9Cit9CisKKyNlbHNlIC8qICEgSEFWRV9QT1NJWF9NRU1BTElHTiAm JiAhIEhBVkVfV09SS0lOR19NRU1BTElHTiAmJiAhIF9NU0NfVkVSICovCisKKy8qIEhlcmUg d2UgYXNzdW1lIG1hbGxvYyBpbXBsZW1lbnRhdGlvbiB3aXRoIHBvc2l4X21lbWFsaWduLAor ICAgb3IgbWFsbG9jIGltcGxlbWVudGF0aW9uIHdpdGggd29ya2luZyBtZW1hbGlnbiwgb3Ig TVNWQy4gICovCisKKy8qIFBhZGRpbmcgdG8gbGVhdmUgYXQgdGhlIGVuZCBvZiBhIG1hbGxv YydkIGJsb2NrLiAgVGhpcyBzaG91bGQgaGVscAorICAgdGhlIG1hbGxvYyBpbXBsZW1lbnRh dGlvbiB0byBhbGxvY2F0ZSBhbGlnbmVkIGJsb2NrcyBjb25zZWN1dGl2ZWx5LgorICAgRklY TUU6IHR1bmVkIHRvIGZpdCBnbGliYyBtYWxsb2MsIG1heSBiZSBzdWJvcHRpbWFsIGZvciBv dGhlcnMuICAqLworCisjZGVmaW5lIEJMT0NLX1BBRERJTkcgc2l6ZW9mIChsb25nKQorCisv KiBNYXhpbXVtIGFtb3VudCBvZiBtZW1vcnkgaW4gYWxpZ25lZCBibG9jay4gICovCisKKyNk ZWZpbmUgQkxPQ0tfQllURVMgKEJMT0NLX0FMSUdOIC0gQkxPQ0tfUEFERElORykKKworI2Vu ZGlmIC8qICEgSEFWRV9QT1NJWF9NRU1BTElHTiAmJiAhIEhBVkVfV09SS0lOR19NRU1BTElH TiAmJiAhIF9NU0NfVkVSICovCisKKy8qIExpa2UgbGlzcF9tYWxsb2MsIGJ1dCBhbGxvY2F0 ZXMgYWxpZ25lZCBibG9jayBvZiBhdAorICAgbW9zdCBCTE9DS19CWVRFUyBhbGlnbmVkIG9u IGEgQkxPQ0tfQUxJR04gYm91bmRhcnkuICAqLworCitzdGF0aWMgdm9pZCAqCitsaXNwX2Fs aWduX21hbGxvYyAoc2l6ZV90IG5ieXRlcywgZW51bSBtZW1fdHlwZSB0eXBlKQoreworICB2 b2lkICp2YWw7CisKKyAgZWFzc2VydCAobmJ5dGVzIDw9IEJMT0NLX0JZVEVTKTsKKworICBN QUxMT0NfQkxPQ0tfSU5QVVQ7CisKKyNpZmRlZiBHQ19NQUxMT0NfQ0hFQ0sKKyAgYWxsb2Nh dGVkX21lbV90eXBlID0gdHlwZTsKKyNlbmRpZgorCisjaWZkZWYgRE9VR19MRUFfTUFMTE9D CisgIC8qIFByZXZlbnQgbW1hcCdpbmcgdGhlIGNodW5rLiAgTGlzcCBkYXRhIG1heSBub3Qg YmUgbW1hcCdlZAorICAgICBiZWNhdXNlIG1hcHBlZCByZWdpb24gY29udGVudHMgYXJlIG5v dCBwcmVzZXJ2ZWQgaW4KKyAgICAgYSBkdW1wZWQgRW1hY3MuICAqLworICBtYWxsb3B0IChN X01NQVBfTUFYLCAwKTsKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QT1NJWF9NRU1BTElHTgor ICBpZiAocG9zaXhfbWVtYWxpZ24gKCZ2YWwsIEJMT0NLX0FMSUdOLCBuYnl0ZXMpKQorICAg IHZhbCA9IE5VTEw7CisjZWxpZiBIQVZFX1dPUktJTkdfTUVNQUxJR04KKyAgdmFsID0gbWVt YWxpZ24gKEJMT0NLX0FMSUdOLCBuYnl0ZXMpOworI2VsaWYgX01TQ19WRVIKKyAgLyogWWVz LCB0aGUgb3JkZXIgb2YgYXJndW1lbnRzIGlzIGNvcnJlY3QuICAqLworICB2YWwgPSBfYWxp Z25lZF9tYWxsb2MgKG5ieXRlcywgQkxPQ0tfQUxJR04pOworI2Vsc2UKKyAgdmFsID0gaW50 ZXJuYWxfYWxpZ25fYWxsb2MgKG5ieXRlcyk7CisjZW5kaWYKKworI2lmZGVmIERPVUdfTEVB X01BTExPQworICAvKiBCYWNrIHRvIGEgcmVhc29uYWJsZSBtYXhpbXVtIG9mIG1tYXAnZWQg YXJlYXMuICAqLworICBtYWxsb3B0IChNX01NQVBfTUFYLCBNTUFQX01BWF9BUkVBUyk7Cisj ZW5kaWYKKworICBpZiAoIXZhbCAmJiBuYnl0ZXMpCisgICAgeworICAgICAgTUFMTE9DX1VO QkxPQ0tfSU5QVVQ7CisgICAgICBtZW1vcnlfZnVsbCAobmJ5dGVzKTsKKyAgICB9CisKKyNp ZiAhIFVTRV9MU0JfVEFHCisgIGlmICh0eXBlICE9IE1FTV9UWVBFX05PTl9MSVNQIAorICAg ICAgJiYgIXZlcmlmeV9hZGRyZXNzICgoY2hhciAqKSB2YWwgKyBuYnl0ZXMgLSAxKSkKKyAg ICB7CisgICAgICBmcmVlICh2YWwpOworICAgICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7Cisg ICAgICBtZW1vcnlfZnVsbCAoU0laRV9NQVgpOworICAgIH0KKyNlbmRpZiAvKiBub3QgVVNF X0xTQl9UQUcgKi8KKworI2lmIEdDX01BUktfU1RBQ0sgJiYgIWRlZmluZWQgR0NfTUFMTE9D X0NIRUNLCisgIGlmICh0eXBlICE9IE1FTV9UWVBFX05PTl9MSVNQKQorICAgIG1lbV9pbnNl cnQgKHZhbCwgKGNoYXIgKikgdmFsICsgbmJ5dGVzLCB0eXBlKTsKKyNlbmRpZgorCisgIE1B TExPQ19VTkJMT0NLX0lOUFVUOworICBlYXNzZXJ0ICgwID09ICgodWludHB0cl90KSB2YWwp ICUgQkxPQ0tfQUxJR04pOworICByZXR1cm4gdmFsOworfQorCisvKiBGcmVlIGFsaWduZWQg QkxPQ0suICBUaGlzIG11c3QgYmUgY2FsbGVkIHRvIGZyZWUKKyAgIG1lbW9yeSBhbGxvY2F0 ZWQgd2l0aCBhIGNhbGwgdG8gbGlzcF9hbGlnbl9tYWxsb2MuICAqLworCitzdGF0aWMgdm9p ZAorbGlzcF9hbGlnbl9mcmVlICh2b2lkICpibG9jaykKK3sKKyAgTUFMTE9DX0JMT0NLX0lO UFVUOworI2lmIEdDX01BUktfU1RBQ0sgJiYgIWRlZmluZWQgR0NfTUFMTE9DX0NIRUNLCisg IG1lbV9kZWxldGUgKG1lbV9maW5kIChibG9jaykpOworI2VuZGlmCisjaWYgSEFWRV9QT1NJ WF9NRU1BTElHTiB8fCBIQVZFX1dPUktJTkdfTUVNQUxJR04KKyAgZnJlZSAoYmxvY2spOwor I2VsaWYgX01TQ19WRVIKKyAgX2FsaWduZWRfZnJlZSAoYmxvY2spOworI2Vsc2UKKyAgaW50 ZXJuYWxfYWxpZ25fZnJlZSAoYmxvY2spOworI2VuZGlmCiAgIE1BTExPQ19VTkJMT0NLX0lO UFVUOwogfQogCkBAIC02NjcxLDggKzY3MzMsMTAgQEAKICAgcHVyZV9ieXRlc191c2VkX2xp c3AgPSBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgPSAwOwogICBwdXJlX2J5dGVzX3VzZWRf YmVmb3JlX292ZXJmbG93ID0gMDsKIAorI2lmICEgSEFWRV9QT1NJWF9NRU1BTElHTiAmJiAh IEhBVkVfV09SS0lOR19NRU1BTElHTiAmJiAhIF9NU0NfVkVSCiAgIC8qIEluaXRpYWxpemUg dGhlIGxpc3Qgb2YgZnJlZSBhbGlnbmVkIGJsb2Nrcy4gICovCiAgIGZyZWVfYWJsb2NrID0g TlVMTDsKKyNlbmRpZgogCiAjaWYgR0NfTUFSS19TVEFDSyB8fCBkZWZpbmVkIEdDX01BTExP Q19DSEVDSwogICBtZW1faW5pdCAoKTsKCg== --------------080208090609090204010702--