Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfjJT-0001mA-1E for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Jun 2019 11:08:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hfjJR-00036H-SB for pgsql-hackers@arkaria.postgresql.org; Tue, 25 Jun 2019 11:08:33 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfjJR-00036A-3Q for pgsql-hackers@lists.postgresql.org; Tue, 25 Jun 2019 11:08:33 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfjJM-000088-44 for pgsql-hackers@postgresql.org; Tue, 25 Jun 2019 11:08:32 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id 713A6378 for ; Tue, 25 Jun 2019 07:08:24 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Tue, 25 Jun 2019 07:08:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; bh=XpKEuc75LwlSmA3HRmxjCd9R6h++Z jdKUrDwZ4WsjjM=; b=kGXr5myKlWFUS7Sf38Qse57+hImoBGIZo2CAA/zVzgJTD LKSnZCPST2AFt+X/6R3HQQfV0HBRSaJqwQJ0OUKNn7h+heLkaa/E+TnnG8NIhiXR orqpfF4Jcl99RYh2h02f7Ks1DPSow0mvyz+ApTqbxHaAGagz1dEY6OyLs4zheLWv cMmHXy+npS5xqaLvENAFx8oWqMhwzoR8mXbxev5300rdYp40CHG10BfEPgYA/Yt+ ClTBdJZQckt7EhcXfBJIwKjikh2QepVdlYYfOk6TpDPsbkY1W6iUNC5KIw4C92pJ pU1KrqjxsSWc3Y58f56ZBf2WtrZo99vK92ihITxEA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduvddrudeggdefiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhephffuvfhokffffgggtgesmhdtreertd efjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghi shgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhmqeenucffohhmrghinhepvd hnughquhgrughrrghnthdrtghomhdpphhoshhtghhrvghsqhhlrdhorhhgnecukfhppeel fedrvdegvddrgedtrddvtddvnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrd gvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomhenucevlhhushhtvghr ufhiiigvpedt X-ME-Proxy: Received: from april.pezone.net (p5df228ca.dip0.t-ipconnect.de [93.242.40.202]) by mail.messagingengine.com (Postfix) with ESMTPA id 027B18005B for ; Tue, 25 Jun 2019 07:08:22 -0400 (EDT) From: Peter Eisentraut Subject: errbacktrace Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 3jI= To: pgsql-hackers Organization: 2ndQuadrant Message-ID: <5f48cb47-bf1e-05b6-7aae-3bf2cd01586d@2ndquadrant.com> Date: Tue, 25 Jun 2019 13:08:21 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------582EAF314A02612769E89A0F" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------582EAF314A02612769E89A0F Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit New thread continuing from . Here is a extended version of Álvaro's patch that adds an errbacktrace() function. You can do two things with this: - Manually attach it to an ereport() call site that you want to debug. - Set a configuration parameter like backtrace_function = 'int8in' to debug ereport()/elog() calls in a specific function. There was also mention of settings that would automatically produce backtraces for PANICs etc. Those could surely be added if there is enough interest. For the implementation, I support both backtrace() provided by the OS as well as using libunwind. The former seems to be supported by a number of platforms, including glibc, macOS, and FreeBSD, so maybe we don't need the libunwind suport. I haven't found any difference in quality in the backtraces between the two approaches, but surely that is highly dependent on the exact configuration. I would welcome testing in all direction with this, to see how well it works in different circumstances. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------582EAF314A02612769E89A0F Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-Add-errbacktrace-and-backtrace_function-GUC.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v2-0001-Add-errbacktrace-and-backtrace_function-GUC.patch" RnJvbSBlYTc5ZDdkMDRlOTQwZTcwZmE1YjYzZjFiZTViNTI3MmQyODc2NzdjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxOCBKdW4gMjAxOSAwMDozNjoyMCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIEFkZCBlcnJiYWNrdHJhY2UoKSBhbmQgYmFja3RyYWNlX2Z1bmN0aW9u IEdVQwoKLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgfCAxMDEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0KIGNvbmZpZ3VyZS5pbiAgICAgICAgICAgICAgICAg ICB8ICAxNyArKysrKwogc3JjL01ha2VmaWxlLmdsb2JhbC5pbiAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyB8IDExNSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICB8ICAx MCArKysKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluICAgICB8ICAgOSArKysKIHNyYy9p bmNsdWRlL3V0aWxzL2Vsb2cuaCAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9n dWMuaCAgICAgICAgfCAgIDEgKwogOCBmaWxlcyBjaGFuZ2VkLCAyNTUgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUK aW5kZXggOGQ0NzA3MWU0YS4uYTgzOTRlY2ZkOSAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisr KyBiL2NvbmZpZ3VyZQpAQCAtNzEwLDYgKzcxMCw3IEBAIHdpdGhfdXVpZAogd2l0aF9zeXN0 ZW1kCiB3aXRoX3NlbGludXgKIHdpdGhfb3BlbnNzbAord2l0aF9saWJ1bndpbmQKIHdpdGhf bGRhcAogd2l0aF9rcmJfc3J2bmFtCiBrcmJfc3J2dGFiCkBAIC04NTMsNiArODU0LDcgQEAg d2l0aF9wYW0KIHdpdGhfYnNkX2F1dGgKIHdpdGhfbGRhcAogd2l0aF9ib25qb3VyCit3aXRo X2xpYnVud2luZAogd2l0aF9vcGVuc3NsCiB3aXRoX3NlbGludXgKIHdpdGhfc3lzdGVtZApA QCAtMTU1Nyw2ICsxNTU5LDcgQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAgIC0td2l0aC1ic2Qt YXV0aCAgICAgICAgIGJ1aWxkIHdpdGggQlNEIEF1dGhlbnRpY2F0aW9uIHN1cHBvcnQKICAg LS13aXRoLWxkYXAgICAgICAgICAgICAgYnVpbGQgd2l0aCBMREFQIHN1cHBvcnQKICAgLS13 aXRoLWJvbmpvdXIgICAgICAgICAgYnVpbGQgd2l0aCBCb25qb3VyIHN1cHBvcnQKKyAgLS13 aXRoLWxpYnVud2luZCAgICAgICAgYnVpbGQgd2l0aCBsaWJ1bndpbmQgc3VwcG9ydAogICAt LXdpdGgtb3BlbnNzbCAgICAgICAgICBidWlsZCB3aXRoIE9wZW5TU0wgc3VwcG9ydAogICAt LXdpdGgtc2VsaW51eCAgICAgICAgICBidWlsZCB3aXRoIFNFTGludXggc3VwcG9ydAogICAt LXdpdGgtc3lzdGVtZCAgICAgICAgICBidWlsZCB3aXRoIHN5c3RlbWQgc3VwcG9ydApAQCAt Nzg2MSw2ICs3ODY0LDM5IEBAIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJHdpdGhfYm9uam91ciIgPiY1CiAkYXNfZWNobyAiJHdpdGhf Ym9uam91ciIgPiY2OyB9CiAKKyMKKyMgbGlidW53aW5kCisjCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gYnVpbGQgd2l0 aCBsaWJ1bndpbmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBidWls ZCB3aXRoIGxpYnVud2luZC4uLiAiID4mNjsgfQorCisKKworIyBDaGVjayB3aGV0aGVyIC0t d2l0aC1saWJ1bndpbmQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2xpYnVud2luZCtz ZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfbGlidW53aW5kOworICBjYXNl ICR3aXRodmFsIGluCisgICAgeWVzKQorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfTElCVU5X SU5EIDEiID4+Y29uZmRlZnMuaAorCisgICAgICA7OworICAgIG5vKQorICAgICAgOgorICAg ICAgOzsKKyAgICAqKQorICAgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFyZ3VtZW50IGV4cGVj dGVkIGZvciAtLXdpdGgtbGlidW53aW5kIG9wdGlvbiIgIiRMSU5FTk8iIDUKKyAgICAgIDs7 CisgIGVzYWMKKworZWxzZQorICB3aXRoX2xpYnVud2luZD1ubworCitmaQorCisKK3sgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9saWJ1 bndpbmQiID4mNQorJGFzX2VjaG8gIiR3aXRoX2xpYnVud2luZCIgPiY2OyB9CiAKICMKICMg T3BlblNTTApAQCAtMTIyMjQsNiArMTIyNjAsNjcgQEAgZmkKIAogZmkKIAoraWYgdGVzdCAi JHdpdGhfbGlidW53aW5kIiA9IHllczsgdGhlbgorICAjIE9uIG1hY09TLCB0aGUgbGlicmFy eSBkb2VzIG5vdCBleGlzdCwgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgYnVpbHQKKyAgIyBpbnRv IHRoZSBPUy4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIHVud19nZXRjb250ZXh0IiA+JjUKKyRh c19lY2hvX24gImNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgdW53X2dldGNvbnRl eHQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2VhcmNoX3Vud19nZXRjb250ZXh0Kzp9IGZh bHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNf ZnVuY19zZWFyY2hfc2F2ZV9MSUJTPSRMSUJTCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJy aWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAg VXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEg R0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQg c3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5k aWYKK2NoYXIgdW53X2dldGNvbnRleHQgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiB1 bndfZ2V0Y29udGV4dCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgorZm9yIGFj X2xpYiBpbiAnJyB1bndpbmQ7IGRvCisgIGlmIHRlc3QgLXogIiRhY19saWIiOyB0aGVuCisg ICAgYWNfcmVzPSJub25lIHJlcXVpcmVkIgorICBlbHNlCisgICAgYWNfcmVzPS1sJGFjX2xp YgorICAgIExJQlM9Ii1sJGFjX2xpYiAgJGFjX2Z1bmNfc2VhcmNoX3NhdmVfTElCUyIKKyAg ZmkKKyAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9z ZWFyY2hfdW53X2dldGNvbnRleHQ9JGFjX3JlcworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dAorICBp ZiAke2FjX2N2X3NlYXJjaF91bndfZ2V0Y29udGV4dCs6fSBmYWxzZTsgdGhlbiA6CisgIGJy ZWFrCitmaQorZG9uZQoraWYgJHthY19jdl9zZWFyY2hfdW53X2dldGNvbnRleHQrOn0gZmFs c2U7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X3NlYXJjaF91bndfZ2V0Y29udGV4dD1ubwor ZmkKK3JtIGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2Z1bmNfc2VhcmNoX3NhdmVfTElC UworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3Zfc2VhcmNoX3Vud19nZXRjb250ZXh0IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zf c2VhcmNoX3Vud19nZXRjb250ZXh0IiA+JjY7IH0KK2FjX3Jlcz0kYWNfY3Zfc2VhcmNoX3Vu d19nZXRjb250ZXh0CitpZiB0ZXN0ICIkYWNfcmVzIiAhPSBubzsgdGhlbiA6CisgIHRlc3Qg IiRhY19yZXMiID0gIm5vbmUgcmVxdWlyZWQiIHx8IExJQlM9IiRhY19yZXMgJExJQlMiCisK K2ZpCisKK2ZpCisKIGlmIHRlc3QgIiR3aXRoX2xpYnhtbCIgPSB5ZXMgOyB0aGVuCiAgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHht bFNhdmVUb0J1ZmZlciBpbiAtbHhtbDIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IHhtbFNhdmVUb0J1ZmZlciBpbiAtbHhtbDIuLi4gIiA+JjY7IH0KQEAgLTEyNzkzLDcgKzEy ODkwLDcgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TVERCT09MX0ggMSIgPj5jb25mZGVm cy5oCiBmaQogCiAKLWZvciBhY19oZWFkZXIgaW4gYXRvbWljLmggY29weWZpbGUuaCBjcnlw dC5oIGZwX2NsYXNzLmggZ2V0b3B0LmggaWVlZWZwLmggaWZhZGRycy5oIGxhbmdpbmZvLmgg bWJhcnJpZXIuaCBwb2xsLmggc3lzL2Vwb2xsLmggc3lzL2lwYy5oIHN5cy9wcmN0bC5oIHN5 cy9wcm9jY3RsLmggc3lzL3BzdGF0Lmggc3lzL3Jlc291cmNlLmggc3lzL3NlbGVjdC5oIHN5 cy9zZW0uaCBzeXMvc2htLmggc3lzL3NvY2tpby5oIHN5cy90YXMuaCBzeXMvdW4uaCB0ZXJt aW9zLmggdWNyZWQuaCB1dGltZS5oIHdjaGFyLmggd2N0eXBlLmgKK2ZvciBhY19oZWFkZXIg aW4gYXRvbWljLmggY29weWZpbGUuaCBjcnlwdC5oIGV4ZWNpbmZvLmggZnBfY2xhc3MuaCBn ZXRvcHQuaCBpZWVlZnAuaCBpZmFkZHJzLmggbGFuZ2luZm8uaCBtYmFycmllci5oIHBvbGwu aCBzeXMvZXBvbGwuaCBzeXMvaXBjLmggc3lzL3ByY3RsLmggc3lzL3Byb2NjdGwuaCBzeXMv cHN0YXQuaCBzeXMvcmVzb3VyY2UuaCBzeXMvc2VsZWN0Lmggc3lzL3NlbS5oIHN5cy9zaG0u aCBzeXMvc29ja2lvLmggc3lzL3Rhcy5oIHN5cy91bi5oIHRlcm1pb3MuaCB1Y3JlZC5oIHV0 aW1lLmggd2NoYXIuaCB3Y3R5cGUuaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hv ICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNr X2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIi ICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKQEAgLTE1MTc2LDcgKzE1MjczLDcgQEAgZmkKIExJ QlNfaW5jbHVkaW5nX3JlYWRsaW5lPSIkTElCUyIKIExJQlM9YGVjaG8gIiRMSUJTIiB8IHNl ZCAtZSAncy8tbGVkaXQvL2cnIC1lICdzLy1scmVhZGxpbmUvL2cnYAogCi1mb3IgYWNfZnVu YyBpbiBjYnJ0IGNsb2NrX2dldHRpbWUgY29weWZpbGUgZmRhdGFzeW5jIGdldGlmYWRkcnMg Z2V0cGVlcnVjcmVkIGdldHJsaW1pdCBtYnN0b3djc19sIG1lbW1vdmUgcG9sbCBwb3NpeF9m YWxsb2NhdGUgcHBvbGwgcHN0YXQgcHRocmVhZF9pc190aHJlYWRlZF9ucCByZWFkbGluayBz ZXRwcm9jdGl0bGUgc2V0cHJvY3RpdGxlX2Zhc3Qgc2V0c2lkIHNobV9vcGVuIHN0cmNocm51 bCBzdHJzaWduYWwgc3ltbGluayBzeW5jX2ZpbGVfcmFuZ2UgdXNlbG9jYWxlIHV0aW1lIHV0 aW1lcyB3Y3N0b21ic19sCitmb3IgYWNfZnVuYyBpbiBiYWNrdHJhY2Vfc3ltYm9scyBjYnJ0 IGNsb2NrX2dldHRpbWUgY29weWZpbGUgZmRhdGFzeW5jIGdldGlmYWRkcnMgZ2V0cGVlcnVj cmVkIGdldHJsaW1pdCBtYnN0b3djc19sIG1lbW1vdmUgcG9sbCBwb3NpeF9mYWxsb2NhdGUg cHBvbGwgcHN0YXQgcHRocmVhZF9pc190aHJlYWRlZF9ucCByZWFkbGluayBzZXRwcm9jdGl0 bGUgc2V0cHJvY3RpdGxlX2Zhc3Qgc2V0c2lkIHNobV9vcGVuIHN0cmNocm51bCBzdHJzaWdu YWwgc3ltbGluayBzeW5jX2ZpbGVfcmFuZ2UgdXNlbG9jYWxlIHV0aW1lIHV0aW1lcyB3Y3N0 b21ic19sCiBkbyA6CiAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1 bmMiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1 bmMiICIkYXNfYWNfdmFyIgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJl LmluCmluZGV4IDc0OTM4ZDQxOTAuLjEzNDlkYWY1NGEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy ZS5pbgorKysgYi9jb25maWd1cmUuaW4KQEAgLTgzMSw2ICs4MzEsMTUgQEAgUEdBQ19BUkdf Qk9PTCh3aXRoLCBib25qb3VyLCBubywKICAgICAgICAgICAgICAgW0FDX0RFRklORShbVVNF X0JPTkpPVVJdLCAxLCBbRGVmaW5lIHRvIDEgdG8gYnVpbGQgd2l0aCBCb25qb3VyIHN1cHBv cnQuICgtLXdpdGgtYm9uam91cildKV0pCiBBQ19NU0dfUkVTVUxUKFskd2l0aF9ib25qb3Vy XSkKIAorIworIyBsaWJ1bndpbmQKKyMKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBi dWlsZCB3aXRoIGxpYnVud2luZF0pCitQR0FDX0FSR19CT09MKHdpdGgsIGxpYnVud2luZCwg bm8sCisgICAgICAgICAgICAgIFtidWlsZCB3aXRoIGxpYnVud2luZCBzdXBwb3J0XSwKKyAg ICAgICAgICAgICAgW0FDX0RFRklORShbVVNFX0xJQlVOV0lORF0sIDEsIFtEZWZpbmUgdG8g MSB0byBidWlsZCB3aXRoIGxpYnVud2luZCBzdXBwb3J0LiAoLS13aXRoLWxpYnVud2luZCld KV0pCitBQ19NU0dfUkVTVUxUKFskd2l0aF9saWJ1bndpbmRdKQorQUNfU1VCU1Qod2l0aF9s aWJ1bndpbmQpW11kbmwKIAogIwogIyBPcGVuU1NMCkBAIC0xMjIzLDYgKzEyMzIsMTIgQEAg aWYgdGVzdCAiJHdpdGhfcGFtIiA9IHllcyA7IHRoZW4KICAgQUNfQ0hFQ0tfTElCKHBhbSwg ICAgcGFtX3N0YXJ0LCBbXSwgW0FDX01TR19FUlJPUihbbGlicmFyeSAncGFtJyBpcyByZXF1 aXJlZCBmb3IgUEFNXSldKQogZmkKIAoraWYgdGVzdCAiJHdpdGhfbGlidW53aW5kIiA9IHll czsgdGhlbgorICAjIE9uIG1hY09TLCB0aGUgbGlicmFyeSBkb2VzIG5vdCBleGlzdCwgdGhl IGZ1bmN0aW9uYWxpdHkgaXMgYnVpbHQKKyAgIyBpbnRvIHRoZSBPUy4KKyAgQUNfU0VBUkNI X0xJQlModW53X2dldGNvbnRleHQsIFt1bndpbmRdKQorZmkKKwogaWYgdGVzdCAiJHdpdGhf bGlieG1sIiA9IHllcyA7IHRoZW4KICAgQUNfQ0hFQ0tfTElCKHhtbDIsIHhtbFNhdmVUb0J1 ZmZlciwgW10sIFtBQ19NU0dfRVJST1IoW2xpYnJhcnkgJ3htbDInICh2ZXJzaW9uID49IDIu Ni4yMykgaXMgcmVxdWlyZWQgZm9yIFhNTCBzdXBwb3J0XSldKQogZmkKQEAgLTEyOTgsNiAr MTMxMyw3IEBAIEFDX0NIRUNLX0hFQURFUlMobTRfbm9ybWFsaXplKFsKIAlhdG9taWMuaAog CWNvcHlmaWxlLmgKIAljcnlwdC5oCisJZXhlY2luZm8uaAogCWZwX2NsYXNzLmgKIAlnZXRv cHQuaAogCWllZWVmcC5oCkBAIC0xNjEyLDYgKzE2MjgsNyBAQCBMSUJTX2luY2x1ZGluZ19y ZWFkbGluZT0iJExJQlMiCiBMSUJTPWBlY2hvICIkTElCUyIgfCBzZWQgLWUgJ3MvLWxlZGl0 Ly9nJyAtZSAncy8tbHJlYWRsaW5lLy9nJ2AKIAogQUNfQ0hFQ0tfRlVOQ1MobTRfbm9ybWFs aXplKFsKKwliYWNrdHJhY2Vfc3ltYm9scwogCWNicnQKIAljbG9ja19nZXR0aW1lCiAJY29w eWZpbGUKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4gYi9zcmMvTWFrZWZp bGUuZ2xvYmFsLmluCmluZGV4IGI5ZDg2YWNhYTkuLjZlMTRhNGIyMTcgMTAwNjQ0Ci0tLSBh L3NyYy9NYWtlZmlsZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpA QCAtMTkwLDYgKzE5MCw3IEBAIHdpdGhfc3lzdGVtZAk9IEB3aXRoX3N5c3RlbWRACiB3aXRo X2dzc2FwaQk9IEB3aXRoX2dzc2FwaUAKIHdpdGhfa3JiX3Nydm5hbQk9IEB3aXRoX2tyYl9z cnZuYW1ACiB3aXRoX2xkYXAJPSBAd2l0aF9sZGFwQAord2l0aF9saWJ1bndpbmQJPSBAd2l0 aF9saWJ1bndpbmRACiB3aXRoX2xpYnhtbAk9IEB3aXRoX2xpYnhtbEAKIHdpdGhfbGlieHNs dAk9IEB3aXRoX2xpYnhzbHRACiB3aXRoX2xsdm0JPSBAd2l0aF9sbHZtQApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv ZXJyb3IvZWxvZy5jCmluZGV4IDhiNDcyMGVmM2EuLjkwMTI4N2MzMzUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9lcnJvci9lbG9nLmMKQEAgLTYyLDYgKzYyLDEyIEBACiAjaWZkZWYgSEFWRV9TWVNMT0cK ICNpbmNsdWRlIDxzeXNsb2cuaD4KICNlbmRpZgorI2lmZGVmIEhBVkVfRVhFQ0lORk9fSAor I2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisjZW5kaWYKKyNpZmRlZiBVU0VfTElCVU5XSU5ECisj aW5jbHVkZSA8bGlidW53aW5kLmg+CisjZW5kaWYKIAogI2luY2x1ZGUgImFjY2Vzcy90cmFu c2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKQEAgLTE2Niw2ICsxNzIsNyBAQCBz dGF0aWMgY2hhciBmb3JtYXR0ZWRfbG9nX3RpbWVbRk9STUFUVEVEX1RTX0xFTl07CiAJfSB3 aGlsZSAoMCkKIAogCitzdGF0aWMgdm9pZCBzZXRfYmFja3RyYWNlKEVycm9yRGF0YSAqZWRh dGEsIGludCBudW1fc2tpcCk7CiBzdGF0aWMgY29uc3QgY2hhciAqZXJyX2dldHRleHQoY29u c3QgY2hhciAqc3RyKSBwZ19hdHRyaWJ1dGVfZm9ybWF0X2FyZygxKTsKIHN0YXRpYyB2b2lk IHNldF9lcnJkYXRhX2ZpZWxkKE1lbW9yeUNvbnRleHREYXRhICpjeHQsIGNoYXIgKipwdHIs IGNvbnN0IGNoYXIgKnN0cik7CiBzdGF0aWMgdm9pZCB3cml0ZV9jb25zb2xlKGNvbnN0IGNo YXIgKmxpbmUsIGludCBsZW4pOwpAQCAtNDI0LDYgKzQzMSwxMiBAQCBlcnJmaW5pc2goaW50 IGR1bW15LC4uLikKIAkgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KEVycm9yQ29udGV4dCk7CiAKKwlpZiAoIWVkYXRhLT5iYWNrdHJhY2UgJiYKKwkJZWRhdGEt PmZ1bmNuYW1lICYmCisJCWJhY2t0cmFjZV9mdW5jdGlvblswXSAmJgorCQlzdHJjbXAoYmFj a3RyYWNlX2Z1bmN0aW9uLCBlZGF0YS0+ZnVuY25hbWUpID09IDApCisJCXNldF9iYWNrdHJh Y2UoZWRhdGEsIDIpOworCiAJLyoKIAkgKiBDYWxsIGFueSBjb250ZXh0IGNhbGxiYWNrIGZ1 bmN0aW9ucy4gIEVycm9ycyBvY2N1cnJpbmcgaW4gY2FsbGJhY2sKIAkgKiBmdW5jdGlvbnMg d2lsbCBiZSB0cmVhdGVkIGFzIHJlY3Vyc2l2ZSBlcnJvcnMgLS0tIHRoaXMgZW5zdXJlcyB3 ZSB3aWxsCkBAIC00ODgsNiArNTAxLDggQEAgZXJyZmluaXNoKGludCBkdW1teSwuLi4pCiAJ CXBmcmVlKGVkYXRhLT5oaW50KTsKIAlpZiAoZWRhdGEtPmNvbnRleHQpCiAJCXBmcmVlKGVk YXRhLT5jb250ZXh0KTsKKwlpZiAoZWRhdGEtPmJhY2t0cmFjZSkKKwkJcGZyZWUoZWRhdGEt PmJhY2t0cmFjZSk7CiAJaWYgKGVkYXRhLT5zY2hlbWFfbmFtZSkKIAkJcGZyZWUoZWRhdGEt PnNjaGVtYV9uYW1lKTsKIAlpZiAoZWRhdGEtPnRhYmxlX25hbWUpCkBAIC03OTgsNiArODEz LDg1IEBAIGVycm1zZyhjb25zdCBjaGFyICpmbXQsLi4uKQogCXJldHVybiAwOwkJCQkJLyog cmV0dXJuIHZhbHVlIGRvZXMgbm90IG1hdHRlciAqLwogfQogCitpbnQKK2VycmJhY2t0cmFj ZSh2b2lkKQoreworCUVycm9yRGF0YSAgICplZGF0YSA9ICZlcnJvcmRhdGFbZXJyb3JkYXRh X3N0YWNrX2RlcHRoXTsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlyZWN1cnNp b25fZGVwdGgrKzsKKwlDSEVDS19TVEFDS19ERVBUSCgpOworCW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oZWRhdGEtPmFzc29jX2NvbnRleHQpOworCisJc2V0X2JhY2t0 cmFjZShlZGF0YSwgMSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisJcmVjdXJzaW9uX2RlcHRoLS07CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQK K3NldF9iYWNrdHJhY2UoRXJyb3JEYXRhICplZGF0YSwgaW50IG51bV9za2lwKQoreworCVN0 cmluZ0luZm9EYXRhIGVycnRyYWNlOworCisJaW5pdFN0cmluZ0luZm8oJmVycnRyYWNlKTsK KworI2lmZGVmIFVTRV9MSUJVTldJTkQKKwl7CisJCXVud19jb250ZXh0X3QgY29udGV4dDsK KwkJdW53X2N1cnNvcl90IGN1cnNvcjsKKwkJaW50CQkJbiA9IDA7CisKKwkJdW53X2dldGNv bnRleHQoJmNvbnRleHQpOworCQl1bndfaW5pdF9sb2NhbCgmY3Vyc29yLCAmY29udGV4dCk7 CisKKwkJd2hpbGUgKHVud19zdGVwKCZjdXJzb3IpKQorCQl7CisJCQl1bndfd29yZF90IGlw LCBvZmY7CisJCQljaGFyIHN5bWJvbFsyNTZdID0gIjx1bmtub3duPiI7CisKKwkJCWlmIChu IDwgbnVtX3NraXAgLSAxKQorCQkJeworCQkJCW4rKzsKKwkJCQljb250aW51ZTsKKwkJCX0K KworCQkJdW53X2dldF9yZWcoJmN1cnNvciwgVU5XX1JFR19JUCwgJmlwKTsKKwkJCXVud19n ZXRfcHJvY19uYW1lKCZjdXJzb3IsIHN5bWJvbCwgc2l6ZW9mKHN5bWJvbCksICZvZmYpOwor CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJ0cmFjZSwKKwkJCQkJCQkgIiMlLTJkICVzKzB4 JWxseCBbMHglMDE2bGx4XVxuIiwKKwkJCQkJCQkgbiAtIDEsCisJCQkJCQkJIHN5bWJvbCwK KwkJCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgb2ZmLAorCQkJCQkJCSAodW5zaWduZWQg bG9uZyBsb25nKSBpcCk7CisKKwkJCW4rKzsKKwkJfQorCX0KKyNlbGlmIGRlZmluZWQoSEFW RV9FWEVDSU5GT19IKSAmJiBkZWZpbmVkKEhBVkVfQkFDS1RSQUNFX1NZTUJPTFMpCisJewor CQl2b2lkCSAgICpidWZbMTAwXTsKKwkJaW50CQkJbmZyYW1lczsKKwkJY2hhcgkgICoqc3Ry ZnJtczsKKworCQluZnJhbWVzID0gYmFja3RyYWNlKGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQlz dHJmcm1zID0gYmFja3RyYWNlX3N5bWJvbHMoYnVmLCBuZnJhbWVzKTsKKwkJaWYgKHN0cmZy bXMgPT0gTlVMTCkKKwkJCXJldHVybjsKKworCQlmb3IgKGludCBpID0gbnVtX3NraXA7IGkg PCBuZnJhbWVzOyBpKyspCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJ0cmFjZSwgIiVzXG4i LCBzdHJmcm1zW2ldKTsKKwkJZnJlZShzdHJmcm1zKTsKKwl9CisjZWxzZQorCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmVycnRyYWNlLCAiYmFja3RyYWNlIG5vdCBzdXBwb3J0ZWQiKTsK KyNlbmRpZgorCisJZWRhdGEtPmJhY2t0cmFjZSA9IGVycnRyYWNlLmRhdGE7Cit9CiAKIC8q CiAgKiBlcnJtc2dfaW50ZXJuYWwgLS0tIGFkZCBhIHByaW1hcnkgZXJyb3IgbWVzc2FnZSB0 ZXh0IHRvIHRoZSBjdXJyZW50IGVycm9yCkBAIC0xMzUzLDYgKzE0NDcsMTIgQEAgZWxvZ19m aW5pc2goaW50IGVsZXZlbCwgY29uc3QgY2hhciAqZm10LC4uLikKIAlyZWN1cnNpb25fZGVw dGgrKzsKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVkYXRhLT5hc3Nv Y19jb250ZXh0KTsKIAorCWlmICghZWRhdGEtPmJhY2t0cmFjZSAmJgorCQllZGF0YS0+ZnVu Y25hbWUgJiYKKwkJYmFja3RyYWNlX2Z1bmN0aW9uWzBdICYmCisJCXN0cmNtcChiYWNrdHJh Y2VfZnVuY3Rpb24sIGVkYXRhLT5mdW5jbmFtZSkgPT0gMCkKKwkJc2V0X2JhY2t0cmFjZShl ZGF0YSwgMik7CisKIAllZGF0YS0+bWVzc2FnZV9pZCA9IGZtdDsKIAlFVkFMVUFURV9NRVNT QUdFKGVkYXRhLT5kb21haW4sIG1lc3NhZ2UsIGZhbHNlLCBmYWxzZSk7CiAKQEAgLTE1MDks NiArMTYwOSw4IEBAIENvcHlFcnJvckRhdGEodm9pZCkKIAkJbmV3ZWRhdGEtPmhpbnQgPSBw c3RyZHVwKG5ld2VkYXRhLT5oaW50KTsKIAlpZiAobmV3ZWRhdGEtPmNvbnRleHQpCiAJCW5l d2VkYXRhLT5jb250ZXh0ID0gcHN0cmR1cChuZXdlZGF0YS0+Y29udGV4dCk7CisJaWYgKG5l d2VkYXRhLT5iYWNrdHJhY2UpCisJCW5ld2VkYXRhLT5iYWNrdHJhY2UgPSBwc3RyZHVwKG5l d2VkYXRhLT5iYWNrdHJhY2UpOwogCWlmIChuZXdlZGF0YS0+c2NoZW1hX25hbWUpCiAJCW5l d2VkYXRhLT5zY2hlbWFfbmFtZSA9IHBzdHJkdXAobmV3ZWRhdGEtPnNjaGVtYV9uYW1lKTsK IAlpZiAobmV3ZWRhdGEtPnRhYmxlX25hbWUpCkBAIC0xNTQ3LDYgKzE2NDksOCBAQCBGcmVl RXJyb3JEYXRhKEVycm9yRGF0YSAqZWRhdGEpCiAJCXBmcmVlKGVkYXRhLT5oaW50KTsKIAlp ZiAoZWRhdGEtPmNvbnRleHQpCiAJCXBmcmVlKGVkYXRhLT5jb250ZXh0KTsKKwlpZiAoZWRh dGEtPmJhY2t0cmFjZSkKKwkJcGZyZWUoZWRhdGEtPmJhY2t0cmFjZSk7CiAJaWYgKGVkYXRh LT5zY2hlbWFfbmFtZSkKIAkJcGZyZWUoZWRhdGEtPnNjaGVtYV9uYW1lKTsKIAlpZiAoZWRh dGEtPnRhYmxlX25hbWUpCkBAIC0xNjIyLDYgKzE3MjYsOCBAQCBUaHJvd0Vycm9yRGF0YShF cnJvckRhdGEgKmVkYXRhKQogCQluZXdlZGF0YS0+aGludCA9IHBzdHJkdXAoZWRhdGEtPmhp bnQpOwogCWlmIChlZGF0YS0+Y29udGV4dCkKIAkJbmV3ZWRhdGEtPmNvbnRleHQgPSBwc3Ry ZHVwKGVkYXRhLT5jb250ZXh0KTsKKwlpZiAoZWRhdGEtPmJhY2t0cmFjZSkKKwkJbmV3ZWRh dGEtPmJhY2t0cmFjZSA9IHBzdHJkdXAoZWRhdGEtPmJhY2t0cmFjZSk7CiAJLyogYXNzdW1l IG1lc3NhZ2VfaWQgaXMgbm90IGF2YWlsYWJsZSAqLwogCWlmIChlZGF0YS0+c2NoZW1hX25h bWUpCiAJCW5ld2VkYXRhLT5zY2hlbWFfbmFtZSA9IHBzdHJkdXAoZWRhdGEtPnNjaGVtYV9u YW1lKTsKQEAgLTE2ODksNiArMTc5NSw4IEBAIFJlVGhyb3dFcnJvcihFcnJvckRhdGEgKmVk YXRhKQogCQluZXdlZGF0YS0+aGludCA9IHBzdHJkdXAobmV3ZWRhdGEtPmhpbnQpOwogCWlm IChuZXdlZGF0YS0+Y29udGV4dCkKIAkJbmV3ZWRhdGEtPmNvbnRleHQgPSBwc3RyZHVwKG5l d2VkYXRhLT5jb250ZXh0KTsKKwlpZiAobmV3ZWRhdGEtPmJhY2t0cmFjZSkKKwkJbmV3ZWRh dGEtPmJhY2t0cmFjZSA9IHBzdHJkdXAobmV3ZWRhdGEtPmJhY2t0cmFjZSk7CiAJaWYgKG5l d2VkYXRhLT5zY2hlbWFfbmFtZSkKIAkJbmV3ZWRhdGEtPnNjaGVtYV9uYW1lID0gcHN0cmR1 cChuZXdlZGF0YS0+c2NoZW1hX25hbWUpOwogCWlmIChuZXdlZGF0YS0+dGFibGVfbmFtZSkK QEAgLTI5MTQsNiArMzAyMiwxMyBAQCBzZW5kX21lc3NhZ2VfdG9fc2VydmVyX2xvZyhFcnJv ckRhdGEgKmVkYXRhKQogCQkJYXBwZW5kX3dpdGhfdGFicygmYnVmLCBlZGF0YS0+Y29udGV4 dCk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnXG4nKTsKIAkJfQorCQlpZiAo ZWRhdGEtPmJhY2t0cmFjZSkKKwkJeworCQkJbG9nX2xpbmVfcHJlZml4KCZidWYsIGVkYXRh KTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgXygiQkFDS1RSQUNFOiAgIikp OworCQkJYXBwZW5kX3dpdGhfdGFicygmYnVmLCBlZGF0YS0+YmFja3RyYWNlKTsKKwkJCWFw cGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICdcbicpOworCQl9CiAJCWlmIChMb2dfZXJyb3Jf dmVyYm9zaXR5ID49IFBHRVJST1JfVkVSQk9TRSkKIAkJewogCQkJLyogYXNzdW1lIG5vIG5l d2xpbmVzIGluIGZ1bmNuYW1lIG9yIGZpbGVuYW1lLi4uICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YwppbmRleCAxMjA4ZWI5YTY4Li4zMjhlNWI2Njk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMK QEAgLTUxNCw2ICs1MTQsNyBAQCBpbnQJCQlsb2dfdGVtcF9maWxlcyA9IC0xOwogZG91Ymxl CQlsb2dfc3RhdGVtZW50X3NhbXBsZV9yYXRlID0gMS4wOwogZG91YmxlCQlsb2dfeGFjdF9z YW1wbGVfcmF0ZSA9IDA7CiBpbnQJCQl0cmFjZV9yZWNvdmVyeV9tZXNzYWdlcyA9IExPRzsK K2NoYXIJICAgKmJhY2t0cmFjZV9mdW5jdGlvbjsKIAogaW50CQkJdGVtcF9maWxlX2xpbWl0 ID0gLTE7CiAKQEAgLTQyMTMsNiArNDIxNCwxNSBAQCBzdGF0aWMgc3RydWN0IGNvbmZpZ19z dHJpbmcgQ29uZmlndXJlTmFtZXNTdHJpbmdbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9 LAogCisJeworCQl7ImJhY2t0cmFjZV9mdW5jdGlvbiIsIFBHQ19TVVNFVCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkxvZyBiYWNrdHJhY2UgZm9yIGVycm9ycyBp biB0aGlzIGZ1bmN0aW9uLiIpLAorCQl9LAorCQkmYmFja3RyYWNlX2Z1bmN0aW9uLAorCQki IiwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIg Ki8KIAl7CiAJCXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9z cmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgppbmRleCA2Y2Q0Y2ZlZDBhLi42OTU5Y2U2YzYx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgorKysgYi9zcmMvaW5j bHVkZS9wZ19jb25maWcuaC5pbgpAQCAtOTYsNiArOTYsOSBAQAogLyogRGVmaW5lIHRvIDEg aWYgeW91IGhhdmUgdGhlIDxhdG9taWMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFW RV9BVE9NSUNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJhY2t0cmFj ZV9zeW1ib2xzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0JBQ0tUUkFDRV9TWU1CT0xT CisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgQklPX2dldF9kYXRhJyBmdW5j dGlvbi4gKi8KICN1bmRlZiBIQVZFX0JJT19HRVRfREFUQQogCkBAIC0yMDEsNiArMjA0LDkg QEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZWRpdGxpbmUvcmVhZGxpbmUu aD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9FRElUTElORV9SRUFETElORV9ICiAK Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXhlY2luZm8uaD4gaGVhZGVyIGZp bGUuICovCisjdW5kZWYgSEFWRV9FWEVDSU5GT19ICisKIC8qIERlZmluZSB0byAxIGlmIHlv dSBoYXZlIHRoZSBgZmRhdGFzeW5jJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZEQVRB U1lOQwogCkBAIC05MjIsNiArOTI4LDkgQEAKIC8qIERlZmluZSB0byAxIHRvIGJ1aWxkIHdp dGggTERBUCBzdXBwb3J0LiAoLS13aXRoLWxkYXApICovCiAjdW5kZWYgVVNFX0xEQVAKIAor LyogRGVmaW5lIHRvIDEgdG8gYnVpbGQgd2l0aCBsaWJ1bndpbmQgc3VwcG9ydC4gKC0td2l0 aC1saWJ1bndpbmQpICovCisjdW5kZWYgVVNFX0xJQlVOV0lORAorCiAvKiBEZWZpbmUgdG8g MSB0byBidWlsZCB3aXRoIFhNTCBzdXBwb3J0LiAoLS13aXRoLWxpYnhtbCkgKi8KICN1bmRl ZiBVU0VfTElCWE1MCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaAppbmRleCBkYmZkOGVmZDI2Li5iNThhZWU3OTJh IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvZWxvZy5oCkBAIC0xODksNiArMTg5LDggQEAgZXh0ZXJuIGludAllcnJjb250 ZXh0X21zZyhjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIp OwogZXh0ZXJuIGludAllcnJoaWRlc3RtdChib29sIGhpZGVfc3RtdCk7CiBleHRlcm4gaW50 CWVycmhpZGVjb250ZXh0KGJvb2wgaGlkZV9jdHgpOwogCitleHRlcm4gaW50CWVycmJhY2t0 cmFjZSh2b2lkKTsKKwogZXh0ZXJuIGludAllcnJmdW5jdGlvbihjb25zdCBjaGFyICpmdW5j bmFtZSk7CiBleHRlcm4gaW50CWVycnBvc2l0aW9uKGludCBjdXJzb3Jwb3MpOwogCkBAIC0z NjIsNiArMzY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXJyb3JEYXRhCiAJY2hhcgkgICAqZGV0 YWlsX2xvZzsJCS8qIGRldGFpbCBlcnJvciBtZXNzYWdlIGZvciBzZXJ2ZXIgbG9nIG9ubHkg Ki8KIAljaGFyCSAgICpoaW50OwkJCS8qIGhpbnQgbWVzc2FnZSAqLwogCWNoYXIJICAgKmNv bnRleHQ7CQkvKiBjb250ZXh0IG1lc3NhZ2UgKi8KKwljaGFyCSAgICpiYWNrdHJhY2U7CQkv KiBiYWNrdHJhY2UgKi8KIAljb25zdCBjaGFyICptZXNzYWdlX2lkOwkJLyogcHJpbWFyeSBt ZXNzYWdlJ3MgaWQgKG9yaWdpbmFsIHN0cmluZykgKi8KIAljaGFyCSAgICpzY2hlbWFfbmFt ZTsJLyogbmFtZSBvZiBzY2hlbWEgKi8KIAljaGFyCSAgICp0YWJsZV9uYW1lOwkJLyogbmFt ZSBvZiB0YWJsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjLmggYi9z cmMvaW5jbHVkZS91dGlscy9ndWMuaAppbmRleCBlNzA5MTc3YzM3Li4wMzJmNGYxNmFiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9ndWMuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9ndWMuaApAQCAtMjU1LDYgKzI1NSw3IEBAIGV4dGVybiBpbnQJbG9nX21pbl9kdXJh dGlvbl9zdGF0ZW1lbnQ7CiBleHRlcm4gaW50CWxvZ190ZW1wX2ZpbGVzOwogZXh0ZXJuIGRv dWJsZSBsb2dfc3RhdGVtZW50X3NhbXBsZV9yYXRlOwogZXh0ZXJuIGRvdWJsZSBsb2dfeGFj dF9zYW1wbGVfcmF0ZTsKK2V4dGVybiBjaGFyICpiYWNrdHJhY2VfZnVuY3Rpb247CiAKIGV4 dGVybiBpbnQJdGVtcF9maWxlX2xpbWl0OwogCi0tIAoyLjIyLjAKCg== --------------582EAF314A02612769E89A0F--