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: Thu, 21 Jun 2012 08:27:14 +0400 Message-ID: <4FE2A2A2.5080904@yandex.ru> References: <4EE5B744.1090103@yandex.ru> <4EE60A93.9060401@yandex.ru> <4EE6478C.1020701@cs.ucla.edu> <4FE0ADFC.9090504@yandex.ru> <4FE171EC.8000503@yandex.ru> <4FE1D61E.8010204@yandex.ru> <83vcildi46.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020204050101000806060103" X-Trace: dough.gmane.org 1340252853 5291 80.91.229.3 (21 Jun 2012 04:27:33 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 21 Jun 2012 04:27:33 +0000 (UTC) Cc: eggert@cs.ucla.edu, monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jun 21 06:27:29 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 1ShYzQ-0002wH-Kl for ged-emacs-devel@m.gmane.org; Thu, 21 Jun 2012 06:27:28 +0200 Original-Received: from localhost ([::1]:49423 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShYzQ-0007z7-6h for ged-emacs-devel@m.gmane.org; Thu, 21 Jun 2012 00:27:28 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:53857) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShYzL-0007yX-TA for emacs-devel@gnu.org; Thu, 21 Jun 2012 00:27:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ShYzI-0005re-Ux for emacs-devel@gnu.org; Thu, 21 Jun 2012 00:27:23 -0400 Original-Received: from forward1.mail.yandex.net ([77.88.46.6]:55680) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShYzE-0005qo-AJ; Thu, 21 Jun 2012 00:27:17 -0400 Original-Received: from smtp1.mail.yandex.net (smtp1.mail.yandex.net [77.88.46.101]) by forward1.mail.yandex.net (Yandex) with ESMTP id 7F3341241E47; Thu, 21 Jun 2012 08:27:13 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340252833; bh=k8Pe8ZproUjzZBZzmSosN/jy0uLcYdWFDTZO2ZCH5fQ=; h=Message-ID:Date:From:MIME-Version:To:CC:Subject:References: In-Reply-To:Content-Type; b=j+GSy1mJvezspgOmT/ekKusa10RCbf0mzpuLKzZrRm4qaIIioqvYT7XGSdnpVwoXK XXOQGomfiqi8nKYRfzZ0cwubuSSDn3ufixqUwB8ON10KXzO0Z+5V2dGeep6BPXqQNb X3SBDS/ajzMCagVDelEPsbfuYl+QZm0jUGo0P7dQ= Original-Received: from smtp1.mail.yandex.net (localhost [127.0.0.1]) by smtp1.mail.yandex.net (Yandex) with ESMTP id 3FD83AA0518; Thu, 21 Jun 2012 08:27:13 +0400 (MSK) Original-Received: from 213-148-21-55.gelicon.ru (213-148-21-55.gelicon.ru [213.148.21.55]) by smtp1.mail.yandex.net (nwsmtp/Yandex) with ESMTP id RCA8WPaO-RCA8iFv0; Thu, 21 Jun 2012 08:27:12 +0400 X-Yandex-Rcpt-Suid: eliz@gnu.org X-Yandex-Rcpt-Suid: monnier@iro.umontreal.ca X-Yandex-Rcpt-Suid: eggert@cs.ucla.edu X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1340252833; bh=k8Pe8ZproUjzZBZzmSosN/jy0uLcYdWFDTZO2ZCH5fQ=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=ULhF34RitmGL+s0qMgoykKNB+7OIt6S39qisbB+iMHmPElrgNS3Qprqy4PUmVDtwV OIGj2y/Ye74Ds8/Z44uN/5DrWSp4dQn8YWKfNSrl/V2nlHUCUETwlzb/8letkvdqV5 g2XoOoK8ziqHa2KrGPv423uQznYXCO3QhEVCPYb8= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 In-Reply-To: <83vcildi46.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 77.88.46.6 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:151067 Archived-At: This is a multi-part message in MIME format. --------------020204050101000806060103 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 06/20/2012 09:10 PM, Eli Zaretskii wrote: >> From: Dmitry Antipov >> CC: Paul Eggert , Eli Zaretskii , >> Emacs development discussions >> >> For example, attached code checks whether memalign tends to create holes >> while allocating (1024 - 8) blocks aligned at 1024-bytes boundary; optimal >> pad (BLOCK_PADDING in current code) may be detected with the similar way. > > Is it possible to incorporate such tests into Emacs, and write some > Lisp to execute the tests and report the results? Such a test can be embedded into configure script. Moreover, I believe it might be applicable outside of Emacs; IMHO, it would be nice to have such a test as a part of gnulib. > I'm asking because it's hard to use this test as-is on MS-Windows, > since all of the related functions used by the Windows build are > reimplemented by Emacs sources, they are not in any system library, > and so linking a stand-alone test program is not easy. Previous discussions shows my incompetence in Windows-related areas of Emacs development, so I have no ideas. > P.S. If memory fragmentation is what you worry about, then doesn't > ralloc.c free us from this, on platforms that use it? I don't know how ralloc.c works. In general, I believe moving/compacting GC is the only way to reduce fragmentation; since current design makes it impossible to move/compact Lisp objects, any underlying allocator can't really help to reduce fragmentation. As for the lisp_align_{malloc,free}, this cleanup was designed just because I have some experimental mmap stuff and want to make some simplifications before introducing even more complexities :-). Dmitry --------------020204050101000806060103 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 LTA2LTEzIDEzOjQwOjQ4ICswMDAwCisrKyBjb25maWd1cmUuaW4JMjAxMi0wNi0yMSAwNDoy NTowMSArMDAwMApAQCAtMjY5OCwxMSArMjY5OCwxMjUgQEAKIF9fZnBlbmRpbmcgc3Ryc2ln bmFsIHNldGl0aW1lciBcCiBzZW5kdG8gcmVjdmZyb20gZ2V0c29ja25hbWUgZ2V0cGVlcm5h bWUgZ2V0aWZhZGRycyBmcmVlaWZhZGRycyBcCiBnYWlfc3RyZXJyb3IgbWtzdGVtcCBnZXRs aW5lIGdldGRlbGltIGZzeW5jIHN5bmMgXAotZGlmZnRpbWUgcG9zaXhfbWVtYWxpZ24gXAor ZGlmZnRpbWUgbWVtYWxpZ24gcG9zaXhfbWVtYWxpZ24gXAogZ2V0cHdlbnQgZW5kcHdlbnQg Z2V0Z3JlbnQgZW5kZ3JlbnQgXAogdG91Y2hsb2NrIFwKIGNmbWFrZXJhdyBjZnNldHNwZWVk IGNvcHlzaWduIF9fZXhlY3V0YWJsZV9zdGFydCkKIAorZG5sIENoZWNrIHdoZXRoZXIgcG9z aXhfbWVtYWxpZ24gY2FuIGFsbG9jYXRlIGJsb2NrcyBjb25zZWN1dGl2ZWx5CitpZiB0ZXN0 ICIkYWNfY3ZfZnVuY19wb3NpeF9tZW1hbGlnbiIgPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX0NI RUNLSU5HKFtmb3IgYmxvY2sgcGFkZGluZyBzaXplIHRvIHVzZSB3aXRoIHBvc2l4X21lbWFs aWduXSkKKyAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sjaW5jbHVkZSA8c3Rk bGliLmg+CitpbnQKK21haW4gKCkKK3sKKyAgaW50IGksIGosIGJhZDsKKyAgdm9pZCAqcCwg KnByZXY7CisgIHNpemVfdCBwYWRzeiwgYmxrc3ogPSAxMDI0OworCisgIGZvciAocGFkc3og PSAwOyBwYWRzeiA8PSA2NDsgcGFkc3ogKz0gc2l6ZW9mIChsb25nKSkKKyAgICB7CisgICAg ICBiYWQgPSAwOworICAgICAgLyogbWFrZSBzb21lIGNoYW9zIGluIHRoZSBoZWFwICovCisg ICAgICBmb3IgKGkgPSAwOyBpIDw9IDEwMDA7IGkrKykKKwlmb3IgKGogPSA4OyBqIDw9IDEw MjQ7IGogKz0gOCkKKwkgIHsKKwkgICAgcCA9IG1hbGxvYyAoaik7CisJICAgIGlmICghcCkK KwkgICAgICByZXR1cm4gMjU1OworCSAgICBpZiAoKChpICsgaikgJiA3KSA9PSAwKQorCSAg ICAgIGZyZWUgKHApOworCSAgfQorCisgICAgICAvKiB0ZXN0IGFza3MgZm9yIEJMS1NaIC0g UEFEU1ogYnl0ZXMgYWxpZ25lZCBhdCBCTEtTWiBib3VuZGFyeSAqLworICAgICAgZm9yIChp ID0gMCwgcHJldiA9IE5VTEw7IGkgPCAxNjsgaSsrKQorCXsKKwkgIGlmIChwb3NpeF9tZW1h bGlnbiAoJnAsIGJsa3N6LCBibGtzeiAtIHBhZHN6KSkKKwkgICAgYmFkKys7CisJICBlbHNl IGlmIChwcmV2ICYmIHAgLSBwcmV2ID4gYmxrc3opCisJICAgIGJhZCsrOworCSAgcHJldiA9 IHA7CisJfQorCisgICAgICAvKiB6ZXJvIG1lYW5zIHBvc2l4X21lbWFsaWduIGxvb2tzIGdv b2QgZW5vdWdoIHdpdGggdGhpcyBQQURTWiAqLworICAgICAgaWYgKCFiYWQpCisJcmV0dXJu IHBhZHN6OworICAgIH0KKworICAvKiBubyBzdWl0YWJsZSBQQURTWiB3YXMgZm91bmQsIHBv c2l4X21lbWFsaWduIGxvb2tzIHBvb3IgKi8KKyAgcmV0dXJuIDI1NTsKK31dXSldLCBlbWFj c19jdl9wb3NpeF9tZW1hbGlnbl9wYWQ9MjU1LCBlbWFjc19jdl9wb3NpeF9tZW1hbGlnbl9w YWQ9JD8sCisgIGVtYWNzX2N2X3Bvc2l4X21lbWFsaWduX3BhZD0yNTUpCisgIGlmIHRlc3Qg JGVtYWNzX2N2X3Bvc2l4X21lbWFsaWduX3BhZCAtbGUgNjQ7IHRoZW4KKyAgICAgIEFDX01T R19SRVNVTFQoJGVtYWNzX2N2X3Bvc2l4X21lbWFsaWduX3BhZCkKKyAgICAgIEFDX0RFRklO RShQT1NJWF9NRU1BTElHTl9XT1JLUywgMSwKKyAgICAgICAgW0RlZmluZSB0byAxIGlmIHlv dSBoYXZlIGdvb2QgZW5vdWdoIGBwb3NpeF9tZW1hbGlnbicgZnVuY3Rpb24uXSkKKyAgICAg IEFDX0RFRklORV9VTlFVT1RFRChCTE9DS19QQURESU5HLCAkZW1hY3NfY3ZfcG9zaXhfbWVt YWxpZ25fcGFkLAorICAgICAgICBbQmxvY2sgcGFkZGluZyB1c2VkIHRvIGFsbG9jYXRlIGFs aWduZWQgYmxvY2tzLl0pCisgIGVsc2UKKyAgICAgIEFDX01TR19SRVNVTFQoW25vdCBkZXRl Y3RlZCwgcG9zaXhfbWVtYWxpZ24gd2lsbCBub3QgYmUgdXNlZF0pCisgIGZpCitmaQorCitk bmwgSWYgcG9zaXhfbWVtYWxpZ24gaXNuJ3QgYXZhaWxhYmxlIG9yIHRlbmRzIHRvIGNyZWF0 ZSBob2xlcworZG5sIGJldHdlZW4gYmxvY2tzLCBjaGVjayB3aGV0aGVyIG1lbWFsaWduIHBl cmZvcm1zIGJldHRlcgoraWYgdGVzdCAiJGVtYWNzX2N2X3Bvc2l4X21lbWFsaWduX3BhZCIg LWd0IDY0OyB0aGVuCisgIGlmIHRlc3QgIiRhY19jdl9mdW5jX21lbWFsaWduIiA9IHllczsg dGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGJsb2NrIHBhZGRpbmcgc2l6ZSBmb3Ig bWVtYWxpZ25dKQorICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1 ZGUgPG1hbGxvYy5oPgoraW50CittYWluICgpCit7CisgIGludCBpLCBqLCBiYWQ7CisgIHZv aWQgKnAsICpwcmV2OworICBzaXplX3QgcGFkc3osIGJsa3N6ID0gMTAyNDsKKworICBmb3Ig KHBhZHN6ID0gMDsgcGFkc3ogPD0gNjQ7IHBhZHN6ICs9IHNpemVvZiAobG9uZykpCisgICAg eworICAgICAgYmFkID0gMDsKKyAgICAgIC8qIG1ha2Ugc29tZSBjaGFvcyBpbiB0aGUgaGVh cCAqLworICAgICAgZm9yIChpID0gMDsgaSA8PSAxMDAwOyBpKyspCisJZm9yIChqID0gODsg aiA8PSAxMDI0OyBqICs9IDgpCisJICB7CisJICAgIHAgPSBtYWxsb2MgKGopOworCSAgICBp ZiAoIXApCisJICAgICAgcmV0dXJuIDI1NTsKKwkgICAgaWYgKCgoaSArIGopICYgNykgPT0g MCkKKwkgICAgICBmcmVlIChwKTsKKwkgIH0KKworICAgICAgLyogdGVzdCBhc2tzIGZvciBC TEtTWiAtIFBBRFNaIGJ5dGVzIGFsaWduZWQgYXQgQkxLU1ogYm91bmRhcnkgKi8KKyAgICAg IGZvciAoaSA9IDAsIHByZXYgPSBOVUxMOyBpIDwgMTY7IGkrKykKKwl7CisJICBwID0gbWVt YWxpZ24gKGJsa3N6LCBibGtzeiAtIHBhZHN6KTsKKwkgIGlmICghcCkKKwkgICAgYmFkKys7 CisJICBlbHNlIGlmIChwcmV2ICYmIHAgLSBwcmV2ID4gYmxrc3opCisJICAgIGJhZCsrOwor CSAgcHJldiA9IHA7CisJfQorICAKKyAgICAgIC8qIHplcm8gbWVhbnMgbWVtYWxpZ24gbG9v a3MgZ29vZCBlbm91Z2ggd2l0aCB0aGlzIFBBRFNaICovCisgICAgICBpZiAoIWJhZCkKKwly ZXR1cm4gcGFkc3o7CisgICAgfQorCisgIC8qIG5vIHN1aXRhYmxlIFBBRFNaIHdhcyBmb3Vu ZCwgbWVtYWxpZ24gbG9va3MgcG9vciAqLworICByZXR1cm4gMjU1OworfV1dKV0sIGVtYWNz X2N2X21lbWFsaWduX3BhZD0yNTUsIGVtYWNzX2N2X21lbWFsaWduX3BhZD0kPywKKyAgICBl bWFjc19jdl9tZW1hbGlnbl9wYWQ9MjU1KQorICAgIGlmIHRlc3QgJGVtYWNzX2N2X21lbWFs aWduX3BhZCAtbGUgNjQ7IHRoZW4KKyAgICAgIEFDX01TR19SRVNVTFQoJGVtYWNzX2N2X21l bWFsaWduX3BhZCkKKyAgICAgIEFDX0RFRklORShNRU1BTElHTl9XT1JLUywgMSwKKyAgICAg ICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGdvb2QgZW5vdWdoIGBtZW1hbGlnbicgZnVu Y3Rpb24uXSkKKyAgICAgIEFDX0RFRklORV9VTlFVT1RFRChCTE9DS19QQURESU5HLCAkZW1h Y3NfY3ZfbWVtYWxpZ25fcGFkLAorICAgICAgICBbQmxvY2sgcGFkZGluZyB1c2VkIHRvIGFs bG9jYXRlIGFsaWduZWQgYmxvY2tzLl0pCisgICAgZWxzZQorICAgICAgQUNfTVNHX1JFU1VM VChbbm90IGRldGVjdGVkLCBtZW1hbGlnbiB3aWxsIG5vdCBiZSB1c2VkXSkKKyAgICBmaQor ICBmaQorZmkKKwogZG5sIENhbm5vdCB1c2UgQUNfQ0hFQ0tfRlVOQ1MKIEFDX0NBQ0hFX0NI RUNLKFtmb3IgX19idWlsdGluX3Vud2luZF9pbml0XSwKIAkgICAgICAgZW1hY3NfY3ZfZnVu Y19fX2J1aWx0aW5fdW53aW5kX2luaXQsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2FsbG9j LmMnCi0tLSBzcmMvYWxsb2MuYwkyMDEyLTA2LTE5IDE2OjU2OjI4ICswMDAwCisrKyBzcmMv YWxsb2MuYwkyMDEyLTA2LTIxIDA0OjI0OjMzICswMDAwCkBAIC0zMDksOSArMzA5LDYgQEAK ICAgTUVNX1RZUEVfVkVDVE9SX0JMT0NLCiB9OwogCi1zdGF0aWMgdm9pZCAqbGlzcF9tYWxs b2MgKHNpemVfdCwgZW51bSBtZW1fdHlwZSk7Ci0KLQogI2lmIEdDX01BUktfU1RBQ0sgfHwg ZGVmaW5lZCBHQ19NQUxMT0NfQ0hFQ0sKIAogI2lmIEdDX01BUktfU1RBQ0sgPT0gR0NfVVNF X0dDUFJPU19DSEVDS19aT01CSUVTCkBAIC04ODgsMTkgKzg4NSwzNyBAQAogICByZXR1cm4g UW5pbDsKIH0KIAorI2lmICEgVVNFX0xTQl9UQUcKKworLyogVXNlZCB0byBjYXRjaCBpbnZh bGlkIGFkZHJlc3Mgd2hlbiBkZWJ1Z2dpbmcuICAqLworCit2b2lkICpsaXNwX21hbGxvY19s b3NlciBFWFRFUk5BTExZX1ZJU0lCTEU7CisKKy8qIE5vbnplcm8gaWYgdGhlIG1lbW9yeSBh dCBBRERSIGNhbiBiZQorICAgYWRkcmVzc2VkIHRocnUgYSBMaXNwIG9iamVjdCdzIHBvaW50 ZXIuICAqLworCitzdGF0aWMgaW5saW5lIGludAordmVyaWZ5X2FkZHJlc3MgKGNoYXIgKmFk ZHIpCit7CisgIExpc3BfT2JqZWN0IG9iajsKKworICBYU0VUQ09OUyAob2JqLCBhZGRyKTsK KyAgaWYgKChjaGFyICopIFhDT05TIChvYmopID09IGFkZHIpCisgICAgcmV0dXJuIDE7Cisg IGxpc3BfbWFsbG9jX2xvc2VyID0gYWRkcjsKKyAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAv KiBub3QgVVNFX0xTQl9UQUcgKi8KIAogLyogTGlrZSBtYWxsb2MgYnV0IHVzZWQgZm9yIGFs bG9jYXRpbmcgTGlzcCBkYXRhLiAgTkJZVEVTIGlzIHRoZQogICAgbnVtYmVyIG9mIGJ5dGVz IHRvIGFsbG9jYXRlLCBUWVBFIGRlc2NyaWJlcyB0aGUgaW50ZW5kZWQgdXNlIG9mIHRoZQog ICAgYWxsb2NhdGVkIG1lbW9yeSBibG9jayAoZm9yIHN0cmluZ3MsIGZvciBjb25zZXMsIC4u LikuICAqLwogCi0jaWYgISBVU0VfTFNCX1RBRwotdm9pZCAqbGlzcF9tYWxsb2NfbG9zZXIg RVhURVJOQUxMWV9WSVNJQkxFOwotI2VuZGlmCi0KIHN0YXRpYyB2b2lkICoKIGxpc3BfbWFs bG9jIChzaXplX3QgbmJ5dGVzLCBlbnVtIG1lbV90eXBlIHR5cGUpCiB7Ci0gIHJlZ2lzdGVy IHZvaWQgKnZhbDsKKyAgdm9pZCAqdmFsOwogCiAgIE1BTExPQ19CTE9DS19JTlBVVDsKIApA QCAtOTA4LDI0ICs5MjMsMzMgQEAKICAgYWxsb2NhdGVkX21lbV90eXBlID0gdHlwZTsKICNl bmRpZgogCisjaWZkZWYgRE9VR19MRUFfTUFMTE9DCisgIC8qIFByZXZlbnQgbW1hcCdpbmcg dGhlIGNodW5rLiAgTGlzcCBkYXRhIG1heSBub3QgYmUgbW1hcCdlZAorICAgICBiZWNhdXNl IG1hcHBlZCByZWdpb24gY29udGVudHMgYXJlIG5vdCBwcmVzZXJ2ZWQgaW4KKyAgICAgYSBk dW1wZWQgRW1hY3MuICAqLworICBtYWxsb3B0IChNX01NQVBfTUFYLCAwKTsKKyNlbmRpZgog ICB2YWwgPSAodm9pZCAqKSBtYWxsb2MgKG5ieXRlcyk7CisjaWZkZWYgRE9VR19MRUFfTUFM TE9DCisgIC8qIEJhY2sgdG8gYSByZWFzb25hYmxlIG1heGltdW0gb2YgbW1hcCdlZCBhcmVh cy4gICovCisgIG1hbGxvcHQgKE1fTU1BUF9NQVgsIE1NQVBfTUFYX0FSRUFTKTsKKyNlbmRp ZgorCisgIGlmICghdmFsICYmIG5ieXRlcykKKyAgICB7CisgICAgICBNQUxMT0NfVU5CTE9D S19JTlBVVDsKKyAgICAgIG1lbW9yeV9mdWxsIChuYnl0ZXMpOworICAgIH0KIAogI2lmICEg VVNFX0xTQl9UQUcKLSAgLyogSWYgdGhlIG1lbW9yeSBqdXN0IGFsbG9jYXRlZCBjYW5ub3Qg YmUgYWRkcmVzc2VkIHRocnUgYSBMaXNwCi0gICAgIG9iamVjdCdzIHBvaW50ZXIsIGFuZCBp dCBuZWVkcyB0byBiZSwKLSAgICAgdGhhdCdzIGVxdWl2YWxlbnQgdG8gcnVubmluZyBvdXQg b2YgbWVtb3J5LiAgKi8KLSAgaWYgKHZhbCAmJiB0eXBlICE9IE1FTV9UWVBFX05PTl9MSVNQ KQorICBpZiAodmFsICYmIHR5cGUgIT0gTUVNX1RZUEVfTk9OX0xJU1AKKyAgICAgICYmICF2 ZXJpZnlfYWRkcmVzcyAoKGNoYXIgKikgdmFsICsgbmJ5dGVzIC0gMSkpCiAgICAgewotICAg ICAgTGlzcF9PYmplY3QgdGVtOwotICAgICAgWFNFVENPTlMgKHRlbSwgKGNoYXIgKikgdmFs ICsgbmJ5dGVzIC0gMSk7Ci0gICAgICBpZiAoKGNoYXIgKikgWENPTlMgKHRlbSkgIT0gKGNo YXIgKikgdmFsICsgbmJ5dGVzIC0gMSkKLQl7Ci0JICBsaXNwX21hbGxvY19sb3NlciA9IHZh bDsKLQkgIGZyZWUgKHZhbCk7Ci0JICB2YWwgPSAwOwotCX0KKyAgICAgIGZyZWUgKHZhbCk7 CisgICAgICBNQUxMT0NfVU5CTE9DS19JTlBVVDsKKyAgICAgIG1lbW9yeV9mdWxsIChTSVpF X01BWCk7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogbm90IFVTRV9MU0JfVEFHICovCiAK ICNpZiBHQ19NQVJLX1NUQUNLICYmICFkZWZpbmVkIEdDX01BTExPQ19DSEVDSwogICBpZiAo dmFsICYmIHR5cGUgIT0gTUVNX1RZUEVfTk9OX0xJU1ApCkBAIC05MzMsMTMgKzk1NywxMSBA QAogI2VuZGlmCiAKICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7Ci0gIGlmICghdmFsICYmIG5i eXRlcykKLSAgICBtZW1vcnlfZnVsbCAobmJ5dGVzKTsKICAgcmV0dXJuIHZhbDsKIH0KIAot LyogRnJlZSBCTE9DSy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgdG8gZnJlZSBtZW1vcnkgYWxs b2NhdGVkIHdpdGggYQotICAgY2FsbCB0byBsaXNwX21hbGxvYy4gICovCisvKiBGcmVlIEJM T0NLLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCB0byBmcmVlCisgICBtZW1vcnkgYWxsb2NhdGVk IHdpdGggYSBjYWxsIHRvIGxpc3BfbWFsbG9jLiAgKi8KIAogc3RhdGljIHZvaWQKIGxpc3Bf ZnJlZSAodm9pZCAqYmxvY2spCkBAIC05NTIsMzAgKzk3NCwzMyBAQAogICBNQUxMT0NfVU5C TE9DS19JTlBVVDsKIH0KIAotLyoqKioqICBBbGxvY2F0aW9uIG9mIGFsaWduZWQgYmxvY2tz IG9mIG1lbW9yeSB0byBzdG9yZSBMaXNwIGRhdGEuICAqKioqKi8KLQotLyogVGhlIGVudHJ5 IHBvaW50IGlzIGxpc3BfYWxpZ25fbWFsbG9jIHdoaWNoIHJldHVybnMgYmxvY2tzIG9mIGF0 IG1vc3QKLSAgIEJMT0NLX0JZVEVTIGFuZCBndWFyYW50ZWVzIHRoZXkgYXJlIGFsaWduZWQg b24gYSBCTE9DS19BTElHTiBib3VuZGFyeS4gICovCi0KLSNpZiBkZWZpbmVkIChIQVZFX1BP U0lYX01FTUFMSUdOKSAmJiBkZWZpbmVkIChTWVNURU1fTUFMTE9DKQotI2RlZmluZSBVU0Vf UE9TSVhfTUVNQUxJR04gMQotI2VuZGlmCisvKiBBbGxvY2F0aW9uIG9mIGFsaWduZWQgYmxv Y2tzIGlzIHNvbWV3aGF0IHRyaWNreS4gIElmIHBvc2l4X21lbWFsaWduIGlzCisgICBhdmFp bGFibGUsIGNvbmZpZ3VyZSB0cmllcyB0byBkZXRlcm1pbmUgdGhlIGJsb2NrIHBhZGRpbmcg dmFsdWUgdG8gaGVscAorICAgcG9zaXhfbWVtYWxpZ24gYWxsb2NhdGUgYmxvY2tzIG9mICgx MDI0IC0gcGFkZGluZykgYnl0ZXMgd2l0aG91dCBob2xlcworICAgYmV0d2VlbiB0aGVtLiAg SWYgc3VpdGFibGUgcGFkZGluZyBpcyBmb3VuZCwgd2UgZGVmaW5lIFBPU0lYX01FTUFMSUdO X1dPUktTLAorICAgQkxPQ0tfUEFERElORyB0byBwYWRkaW5nIHZhbHVlIGFuZCB1c2UgcG9z aXhfbWVtYWxpZ24gYW5kIGZyZWUuICBTb21lCisgICBzeXN0ZW1zIGxhY2tzIHBvc2l4X21l bWFsaWduLCBidXQgcHJvdmlkZXMgbWVtYWxpZ247IGZvciBzdWNoIGEgc3lzdGVtLAorICAg Y29uZmlndXJlIHBlcmZvcm1zIHNpbWlsYXIgY2hlY2sgZm9yIG1lbWFsaWduLiAgSWYgc3Vp dGFibGUgcGFkZGluZyBpcworICAgZm91bmQsIHdlIGRlZmluZSBNRU1BTElHTl9XT1JLUywg QkxPQ0tfUEFERElORyB0byBwYWRkaW5nIHZhbHVlIGFuZCB1c2UKKyAgIG1lbWFsaWduIGFu ZCBmcmVlLiAgSWYgbm9uZSBvZiB0aGUgYWJvdmUsIHdlIHVzZSBpbnRlcm5hbF9hbGlnbl9h bGxvYyBhbmQKKyAgIGludGVybmFsX2FsaWduX2ZyZWUuICAqLwogCiAvKiBCTE9DS19BTElH TiBoYXMgdG8gYmUgYSBwb3dlciBvZiAyLiAgKi8KKwogI2RlZmluZSBCTE9DS19BTElHTiAo MSA8PCAxMCkKIAotLyogUGFkZGluZyB0byBsZWF2ZSBhdCB0aGUgZW5kIG9mIGEgbWFsbG9j J2QgYmxvY2suICBUaGlzIGlzIHRvIGdpdmUKLSAgIG1hbGxvYyBhIGNoYW5jZSB0byBtaW5p bWl6ZSB0aGUgYW1vdW50IG9mIG1lbW9yeSB3YXN0ZWQgdG8gYWxpZ25tZW50LgotICAgSXQg c2hvdWxkIGJlIHR1bmVkIHRvIHRoZSBwYXJ0aWN1bGFyIG1hbGxvYyBsaWJyYXJ5IHVzZWQu Ci0gICBPbiBnbGliYy0yLjMuMiwgbWFsbG9jIG5ldmVyIHRyaWVzIHRvIGFsaWduLCBzbyBh IHBhZGRpbmcgb2YgMCBpcyBiZXN0LgotICAgcG9zaXhfbWVtYWxpZ24gb24gdGhlIG90aGVy IGhhbmQgd291bGQgaWRlYWxseSBwcmVmZXIgYSB2YWx1ZSBvZiA0Ci0gICBiZWNhdXNlIG90 aGVyd2lzZSwgdGhlcmUncyAxMDIwIGJ5dGVzIHdhc3RlZCBiZXR3ZWVuIGVhY2ggYWJsb2Nr cy4KLSAgIEluIEVtYWNzLCB0ZXN0aW5nIHNob3dzIHRoYXQgdGhvc2UgMTAyMCBjYW4gbW9z dCBvZiB0aGUgdGltZSBiZQotICAgZWZmaWNpZW50bHkgdXNlZCBieSBtYWxsb2MgdG8gcGxh Y2Ugb3RoZXIgb2JqZWN0cywgc28gYSB2YWx1ZSBvZiAwIGNhbgotICAgc3RpbGwgcHJlZmVy YWJsZSB1bmxlc3MgeW91IGhhdmUgYSBsb3Qgb2YgYWxpZ25lZCBibG9ja3MgYW5kIHZpcnR1 YWxseQotICAgbm90aGluZyBlbHNlLiAgKi8KKyNpZiAhIFBPU0lYX01FTUFMSUdOX1dPUktT ICYmICEgTUVNQUxJR05fV09SS1MKKworLyogSGVyZSB3ZSBhc3N1bWUgdGhhdCBtYWxsb2Mg aW1wbGVtZW50YXRpb24gaGFzCisgICBub3RoaW5nIGFib3V0IGFsaWduZWQgYmxvY2tzIG1h bmFnZW1lbnQuICAqLworCisvKiBQYWRkaW5nIHRvIGxlYXZlIGF0IHRoZSBlbmQgb2YgYSBt YWxsb2MnZCBibG9jay4gICovCisKICNkZWZpbmUgQkxPQ0tfUEFERElORyAwCi0jZGVmaW5l IEJMT0NLX0JZVEVTIFwKKworLyogTWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IGluIGFsaWdu ZWQgYmxvY2suICAqLworCisjZGVmaW5lIEJMT0NLX0JZVEVTCQkJCQkJXAogICAoQkxPQ0tf QUxJR04gLSBzaXplb2YgKHN0cnVjdCBhYmxvY2tzICopIC0gQkxPQ0tfUEFERElORykKIAog LyogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb25zdGFudHMuICAqLwpAQCAtOTgz LDYgKzEwMDgsNyBAQAogI2RlZmluZSBBQkxPQ0tTX1NJWkUgMTYKIAogLyogQW4gYWxpZ25l ZCBibG9jayBvZiBtZW1vcnkuICAqLworCiBzdHJ1Y3QgYWJsb2NrCiB7CiAgIHVuaW9uCkBA IC0xMDA4LDEyICsxMDM0LDE0IEBACiB9OwogCiAvKiBBIGJ1bmNoIG9mIGNvbnNlY3V0aXZl IGFsaWduZWQgYmxvY2tzLiAgKi8KKwogc3RydWN0IGFibG9ja3MKIHsKICAgc3RydWN0IGFi bG9jayBibG9ja3NbQUJMT0NLU19TSVpFXTsKIH07CiAKLS8qIFNpemUgb2YgdGhlIGJsb2Nr IHJlcXVlc3RlZCBmcm9tIG1hbGxvYyBvciBwb3NpeF9tZW1hbGlnbi4gICovCisvKiBTaXpl IG9mIHRoZSBibG9jayByZXF1ZXN0ZWQgZnJvbSB1bmRlcmx5aW5nIG1hbGxvYy4gICovCisK ICNkZWZpbmUgQUJMT0NLU19CWVRFUyAoc2l6ZW9mIChzdHJ1Y3QgYWJsb2NrcykgLSBCTE9D S19QQURESU5HKQogCiAjZGVmaW5lIEFCTE9DS19BQkFTRShibG9jaykgXApAQCAtMTAyMiw5 NCArMTA1MCw0MyBAQAogICAgOiAoYmxvY2spLT5hYmFzZSkKIAogLyogVmlydHVhbCBgYnVz eScgZmllbGQuICAqLworCiAjZGVmaW5lIEFCTE9DS1NfQlVTWShhYmFzZSkgKChhYmFzZSkt PmJsb2Nrc1swXS5hYmFzZSkKIAogLyogUG9pbnRlciB0byB0aGUgKG5vdCBuZWNlc3Nhcmls eSBhbGlnbmVkKSBtYWxsb2MgYmxvY2suICAqLwotI2lmZGVmIFVTRV9QT1NJWF9NRU1BTElH TgotI2RlZmluZSBBQkxPQ0tTX0JBU0UoYWJhc2UpIChhYmFzZSkKLSNlbHNlCi0jZGVmaW5l IEFCTE9DS1NfQkFTRShhYmFzZSkgXAorCisjZGVmaW5lIEFCTE9DS1NfQkFTRShhYmFzZSkJ CQkJCQlcCiAgICgxICYgKGludHB0cl90KSBBQkxPQ0tTX0JVU1kgKGFiYXNlKSA/IGFiYXNl IDogKCh2b2lkKiopYWJhc2UpWy0xXSkKLSNlbmRpZgogCiAvKiBUaGUgbGlzdCBvZiBmcmVl IGFibG9jay4gICAqLworCiBzdGF0aWMgc3RydWN0IGFibG9jayAqZnJlZV9hYmxvY2s7CiAK LS8qIEFsbG9jYXRlIGFuIGFsaWduZWQgYmxvY2sgb2YgbmJ5dGVzLgotICAgQWxpZ25tZW50 IGlzIG9uIGEgbXVsdGlwbGUgb2YgQkxPQ0tfQUxJR04gYW5kIGBuYnl0ZXMnIGhhcyB0byBi ZQotICAgc21hbGxlciBvciBlcXVhbCB0byBCTE9DS19CWVRFUy4gICovCisvKiBBbGxvY2F0 ZSBhbiBhbGlnbmVkIGJsb2NrIG9mIE5CWVRFUy4gICovCisKIHN0YXRpYyB2b2lkICoKLWxp c3BfYWxpZ25fbWFsbG9jIChzaXplX3QgbmJ5dGVzLCBlbnVtIG1lbV90eXBlIHR5cGUpCitp bnRlcm5hbF9hbGlnbl9hbGxvYyAoc2l6ZV90IG5ieXRlcykKIHsKICAgdm9pZCAqYmFzZSwg KnZhbDsKICAgc3RydWN0IGFibG9ja3MgKmFiYXNlOwogCiAgIGVhc3NlcnQgKG5ieXRlcyA8 PSBCTE9DS19CWVRFUyk7CiAKLSAgTUFMTE9DX0JMT0NLX0lOUFVUOwotCi0jaWZkZWYgR0Nf TUFMTE9DX0NIRUNLCi0gIGFsbG9jYXRlZF9tZW1fdHlwZSA9IHR5cGU7Ci0jZW5kaWYKLQog ICBpZiAoIWZyZWVfYWJsb2NrKQogICAgIHsKICAgICAgIGludCBpOwogICAgICAgaW50cHRy X3QgYWxpZ25lZDsgLyogaW50IGdldHMgd2FybmluZyBjYXN0aW5nIHRvIDY0LWJpdCBwb2lu dGVyLiAgKi8KIAotI2lmZGVmIERPVUdfTEVBX01BTExPQwotICAgICAgLyogUHJldmVudCBt bWFwJ2luZyB0aGUgY2h1bmsuICBMaXNwIGRhdGEgbWF5IG5vdCBiZSBtbWFwJ2VkCi0JIGJl Y2F1c2UgbWFwcGVkIHJlZ2lvbiBjb250ZW50cyBhcmUgbm90IHByZXNlcnZlZCBpbgotCSBh IGR1bXBlZCBFbWFjcy4gICovCi0gICAgICBtYWxsb3B0IChNX01NQVBfTUFYLCAwKTsKLSNl bmRpZgotCi0jaWZkZWYgVVNFX1BPU0lYX01FTUFMSUdOCi0gICAgICB7Ci0JaW50IGVyciA9 IHBvc2l4X21lbWFsaWduICgmYmFzZSwgQkxPQ0tfQUxJR04sIEFCTE9DS1NfQllURVMpOwot CWlmIChlcnIpCi0JICBiYXNlID0gTlVMTDsKLQlhYmFzZSA9IGJhc2U7Ci0gICAgICB9Ci0j ZWxzZQogICAgICAgYmFzZSA9IG1hbGxvYyAoQUJMT0NLU19CWVRFUyk7CiAgICAgICBhYmFz ZSA9IEFMSUdOIChiYXNlLCBCTE9DS19BTElHTik7Ci0jZW5kaWYKIAotICAgICAgaWYgKGJh c2UgPT0gMCkKLQl7Ci0JICBNQUxMT0NfVU5CTE9DS19JTlBVVDsKLQkgIG1lbW9yeV9mdWxs IChBQkxPQ0tTX0JZVEVTKTsKLQl9CisgICAgICBpZiAoYmFzZSA9PSBOVUxMKQorCXJldHVy biBiYXNlOwogCiAgICAgICBhbGlnbmVkID0gKGJhc2UgPT0gYWJhc2UpOwogICAgICAgaWYg KCFhbGlnbmVkKQogCSgodm9pZCoqKWFiYXNlKVstMV0gPSBiYXNlOwogCi0jaWZkZWYgRE9V R19MRUFfTUFMTE9DCi0gICAgICAvKiBCYWNrIHRvIGEgcmVhc29uYWJsZSBtYXhpbXVtIG9m IG1tYXAnZWQgYXJlYXMuICAqLwotICAgICAgbWFsbG9wdCAoTV9NTUFQX01BWCwgTU1BUF9N QVhfQVJFQVMpOwotI2VuZGlmCi0KLSNpZiAhIFVTRV9MU0JfVEFHCi0gICAgICAvKiBJZiB0 aGUgbWVtb3J5IGp1c3QgYWxsb2NhdGVkIGNhbm5vdCBiZSBhZGRyZXNzZWQgdGhydSBhIExp c3AKLQkgb2JqZWN0J3MgcG9pbnRlciwgYW5kIGl0IG5lZWRzIHRvIGJlLCB0aGF0J3MgZXF1 aXZhbGVudCB0bwotCSBydW5uaW5nIG91dCBvZiBtZW1vcnkuICAqLwotICAgICAgaWYgKHR5 cGUgIT0gTUVNX1RZUEVfTk9OX0xJU1ApCi0JewotCSAgTGlzcF9PYmplY3QgdGVtOwotCSAg Y2hhciAqZW5kID0gKGNoYXIgKikgYmFzZSArIEFCTE9DS1NfQllURVMgLSAxOwotCSAgWFNF VENPTlMgKHRlbSwgZW5kKTsKLQkgIGlmICgoY2hhciAqKSBYQ09OUyAodGVtKSAhPSBlbmQp Ci0JICAgIHsKLQkgICAgICBsaXNwX21hbGxvY19sb3NlciA9IGJhc2U7Ci0JICAgICAgZnJl ZSAoYmFzZSk7Ci0JICAgICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7Ci0JICAgICAgbWVtb3J5 X2Z1bGwgKFNJWkVfTUFYKTsKLQkgICAgfQotCX0KLSNlbmRpZgotCiAgICAgICAvKiBJbml0 aWFsaXplIHRoZSBibG9ja3MgYW5kIHB1dCB0aGVtIG9uIHRoZSBmcmVlIGxpc3QuCiAJIElm IGBiYXNlJyB3YXMgbm90IHByb3Blcmx5IGFsaWduZWQsIHdlIGNhbid0IHVzZSB0aGUgbGFz dCBibG9jay4gICovCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGFsaWduZWQgPyBBQkxPQ0tT X1NJWkUgOiBBQkxPQ0tTX1NJWkUgLSAxKTsgaSsrKQpAQCAtMTEzMywyNyArMTExMCwxNSBA QAogICB2YWwgPSBmcmVlX2FibG9jazsKICAgZnJlZV9hYmxvY2sgPSBmcmVlX2FibG9jay0+ eC5uZXh0X2ZyZWU7CiAKLSNpZiBHQ19NQVJLX1NUQUNLICYmICFkZWZpbmVkIEdDX01BTExP Q19DSEVDSwotICBpZiAodHlwZSAhPSBNRU1fVFlQRV9OT05fTElTUCkKLSAgICBtZW1faW5z ZXJ0ICh2YWwsIChjaGFyICopIHZhbCArIG5ieXRlcywgdHlwZSk7Ci0jZW5kaWYKLQotICBN QUxMT0NfVU5CTE9DS19JTlBVVDsKLQotICBlYXNzZXJ0ICgwID09ICgodWludHB0cl90KSB2 YWwpICUgQkxPQ0tfQUxJR04pOwogICByZXR1cm4gdmFsOwogfQogCiBzdGF0aWMgdm9pZAot bGlzcF9hbGlnbl9mcmVlICh2b2lkICpibG9jaykKK2ludGVybmFsX2FsaWduX2ZyZWUgKHZv aWQgKmJsb2NrKQogewogICBzdHJ1Y3QgYWJsb2NrICphYmxvY2sgPSBibG9jazsKICAgc3Ry dWN0IGFibG9ja3MgKmFiYXNlID0gQUJMT0NLX0FCQVNFIChhYmxvY2spOwogCi0gIE1BTExP Q19CTE9DS19JTlBVVDsKLSNpZiBHQ19NQVJLX1NUQUNLICYmICFkZWZpbmVkIEdDX01BTExP Q19DSEVDSwotICBtZW1fZGVsZXRlIChtZW1fZmluZCAoYmxvY2spKTsKLSNlbmRpZgogICAv KiBQdXQgb24gZnJlZSBsaXN0LiAgKi8KICAgYWJsb2NrLT54Lm5leHRfZnJlZSA9IGZyZWVf YWJsb2NrOwogICBmcmVlX2FibG9jayA9IGFibG9jazsKQEAgLTExNzksMTEgKzExNDQsMTAz IEBACiAJfQogICAgICAgZWFzc2VydCAoKGFsaWduZWQgJiAxKSA9PSBhbGlnbmVkKTsKICAg ICAgIGVhc3NlcnQgKGkgPT0gKGFsaWduZWQgPyBBQkxPQ0tTX1NJWkUgOiBBQkxPQ0tTX1NJ WkUgLSAxKSk7Ci0jaWZkZWYgVVNFX1BPU0lYX01FTUFMSUdOCi0gICAgICBlYXNzZXJ0ICgo dWludHB0cl90KSBBQkxPQ0tTX0JBU0UgKGFiYXNlKSAlIEJMT0NLX0FMSUdOID09IDApOwot I2VuZGlmCiAgICAgICBmcmVlIChBQkxPQ0tTX0JBU0UgKGFiYXNlKSk7CiAgICAgfQorfQor CisjZWxzZSAvKiAhIFBPU0lYX01FTUFMSUdOX1dPUktTICYmICEgTUVNQUxJR05fV09SS1Mg Ki8KKworLyogSGVyZSB3ZSBhc3N1bWUgdGhhdCBtYWxsb2MgaW1wbGVtZW50YXRpb24gaGFz IGVpdGhlciBwb3NpeF9tZW1hbGlnbgorICAgb3IgbWVtYWxpZ24sIGFuZCBzdWl0YWJsZSBC TE9DS19QQURESU5HIHZhbHVlIHdhcyBkZXRlY3RlZCBieSBjb25maWd1cmUuICAqLworCisj aWZuZGVmIEJMT0NLX1BBRERJTkcKKyNlcnJvciAidW5rbm93biBCTE9DS19QQURESU5HIgor I2VuZGlmCisKKy8qIE1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBpbiBhbGlnbmVkIGJsb2Nr LiAgKi8KKworI2RlZmluZSBCTE9DS19CWVRFUyAoQkxPQ0tfQUxJR04gLSBCTE9DS19QQURE SU5HKQorCisjZW5kaWYgLyogISBQT1NJWF9NRU1BTElHTl9XT1JLUyAmJiAhIE1FTUFMSUdO X1dPUktTICovCisKKy8qIExpa2UgbGlzcF9tYWxsb2MsIGJ1dCBhbGxvY2F0ZXMgYWxpZ25l ZCBibG9jayBvZiBhdAorICAgbW9zdCBCTE9DS19CWVRFUyBhbGlnbmVkIG9uIGEgQkxPQ0tf QUxJR04gYm91bmRhcnkuICAqLworCitzdGF0aWMgdm9pZCAqCitsaXNwX2FsaWduX21hbGxv YyAoc2l6ZV90IG5ieXRlcywgZW51bSBtZW1fdHlwZSB0eXBlKQoreworICB2b2lkICp2YWw7 CisKKyAgZWFzc2VydCAobmJ5dGVzIDw9IEJMT0NLX0JZVEVTKTsKKworICBNQUxMT0NfQkxP Q0tfSU5QVVQ7CisKKyNpZmRlZiBHQ19NQUxMT0NfQ0hFQ0sKKyAgYWxsb2NhdGVkX21lbV90 eXBlID0gdHlwZTsKKyNlbmRpZgorCisjaWZkZWYgRE9VR19MRUFfTUFMTE9DCisgIC8qIFBy ZXZlbnQgbW1hcCdpbmcgdGhlIGNodW5rLiAgTGlzcCBkYXRhIG1heSBub3QgYmUgbW1hcCdl ZAorICAgICBiZWNhdXNlIG1hcHBlZCByZWdpb24gY29udGVudHMgYXJlIG5vdCBwcmVzZXJ2 ZWQgaW4KKyAgICAgYSBkdW1wZWQgRW1hY3MuICAqLworICBtYWxsb3B0IChNX01NQVBfTUFY LCAwKTsKKyNlbmRpZgorCisjaWZkZWYgUE9TSVhfTUVNQUxJR05fV09SS1MKKyAgaWYgKHBv c2l4X21lbWFsaWduICgmdmFsLCBCTE9DS19BTElHTiwgbmJ5dGVzKSkKKyAgICB2YWwgPSBO VUxMOworI2VsaWYgTUVNQUxJR05fV09SS1MKKyAgdmFsID0gbWVtYWxpZ24gKEJMT0NLX0FM SUdOLCBuYnl0ZXMpOworI2Vsc2UKKyAgdmFsID0gaW50ZXJuYWxfYWxpZ25fYWxsb2MgKG5i eXRlcyk7CisjZW5kaWYKKworI2lmZGVmIERPVUdfTEVBX01BTExPQworICAvKiBCYWNrIHRv IGEgcmVhc29uYWJsZSBtYXhpbXVtIG9mIG1tYXAnZWQgYXJlYXMuICAqLworICBtYWxsb3B0 IChNX01NQVBfTUFYLCBNTUFQX01BWF9BUkVBUyk7CisjZW5kaWYKKworICBpZiAoIXZhbCAm JiBuYnl0ZXMpCisgICAgeworICAgICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7CisgICAgICBt ZW1vcnlfZnVsbCAobmJ5dGVzKTsKKyAgICB9CisKKyNpZiAhIFVTRV9MU0JfVEFHCisgIGlm ICh0eXBlICE9IE1FTV9UWVBFX05PTl9MSVNQIAorICAgICAgJiYgIXZlcmlmeV9hZGRyZXNz ICgoY2hhciAqKSB2YWwgKyBuYnl0ZXMgLSAxKSkKKyAgICB7CisgICAgICBmcmVlICh2YWwp OworICAgICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7CisgICAgICBtZW1vcnlfZnVsbCAoU0la RV9NQVgpOworICAgIH0KKyNlbmRpZiAvKiBub3QgVVNFX0xTQl9UQUcgKi8KKworI2lmIEdD X01BUktfU1RBQ0sgJiYgIWRlZmluZWQgR0NfTUFMTE9DX0NIRUNLCisgIGlmICh0eXBlICE9 IE1FTV9UWVBFX05PTl9MSVNQKQorICAgIG1lbV9pbnNlcnQgKHZhbCwgKGNoYXIgKikgdmFs ICsgbmJ5dGVzLCB0eXBlKTsKKyNlbmRpZgorCisgIE1BTExPQ19VTkJMT0NLX0lOUFVUOwor ICBlYXNzZXJ0ICgwID09ICgodWludHB0cl90KSB2YWwpICUgQkxPQ0tfQUxJR04pOworICBy ZXR1cm4gdmFsOworfQorCisvKiBGcmVlIGFsaWduZWQgQkxPQ0suICBUaGlzIG11c3QgYmUg Y2FsbGVkIHRvIGZyZWUKKyAgIG1lbW9yeSBhbGxvY2F0ZWQgd2l0aCBhIGNhbGwgdG8gbGlz cF9hbGlnbl9tYWxsb2MuICAqLworCitzdGF0aWMgdm9pZAorbGlzcF9hbGlnbl9mcmVlICh2 b2lkICpibG9jaykKK3sKKyAgTUFMTE9DX0JMT0NLX0lOUFVUOworI2lmIEdDX01BUktfU1RB Q0sgJiYgIWRlZmluZWQgR0NfTUFMTE9DX0NIRUNLCisgIG1lbV9kZWxldGUgKG1lbV9maW5k IChibG9jaykpOworI2VuZGlmCisjaWYgUE9TSVhfTUVNQUxJR05fV09SS1MgfHwgTUVNQUxJ R05fV09SS1MKKyAgZnJlZSAoYmxvY2spOworI2Vsc2UKKyAgaW50ZXJuYWxfYWxpZ25fZnJl ZSAoYmxvY2spOworI2VuZGlmCiAgIE1BTExPQ19VTkJMT0NLX0lOUFVUOwogfQogCkBAIC02 NjcxLDggKzY3MjgsMTAgQEAKICAgcHVyZV9ieXRlc191c2VkX2xpc3AgPSBwdXJlX2J5dGVz X3VzZWRfbm9uX2xpc3AgPSAwOwogICBwdXJlX2J5dGVzX3VzZWRfYmVmb3JlX292ZXJmbG93 ID0gMDsKIAorI2lmICEgUE9TSVhfTUVNQUxJR05fV09SS1MgJiYgISBNRU1BTElHTl9XT1JL UwogICAvKiBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGZyZWUgYWxpZ25lZCBibG9ja3MuICAq LwogICBmcmVlX2FibG9jayA9IE5VTEw7CisjZW5kaWYKIAogI2lmIEdDX01BUktfU1RBQ0sg fHwgZGVmaW5lZCBHQ19NQUxMT0NfQ0hFQ0sKICAgbWVtX2luaXQgKCk7Cgo= --------------020204050101000806060103--