From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jonas Hahnfeld via "Developers list for Guile, the GNU extensibility library" Newsgroups: gmane.lisp.guile.devel Subject: Re: Guile 64-bit Windows support, redux Date: Sun, 29 Oct 2023 22:34:58 +0100 Message-ID: References: <1629803116.370682.1686084646758.ref@mail.yahoo.com> <1629803116.370682.1686084646758@mail.yahoo.com> Reply-To: Jonas Hahnfeld Mime-Version: 1.0 Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-dwh58N6PR9EnquGGxaQH" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="16760"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Evolution 3.50.0 To: Mike Gran , "guile-devel@gnu.org" Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Sun Oct 29 22:35:37 2023 Return-path: Envelope-to: guile-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qxDRZ-00047r-3P for guile-devel@m.gmane-mx.org; Sun, 29 Oct 2023 22:35:37 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qxDRD-0005yG-Nz; Sun, 29 Oct 2023 17:35:15 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qxDR8-0005xp-7W for guile-devel@gnu.org; Sun, 29 Oct 2023 17:35:11 -0400 Original-Received: from backus.hahnjo.de ([2a03:4000:2a:2c1::1] helo=mail.hahnjo.de) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qxDR3-0001Vz-Ou for guile-devel@gnu.org; Sun, 29 Oct 2023 17:35:09 -0400 Original-Received: from [IPv6:2a01:cb15:302:b500:478b:73c7:fdf0:1e6f] (unknown [IPv6:2a01:cb15:302:b500:478b:73c7:fdf0:1e6f]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.hahnjo.de (Postfix) with ESMTPSA id 5FE747583F69; Sun, 29 Oct 2023 22:35:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hahnjo.de; s=default; t=1698615303; bh=E9ikwxOCJkr337nSA02Danpd3vs7pJK18n9ji8TBt8s=; h=Subject:From:To:Date:In-Reply-To:References; b=qTQH4sZZSCTgwBEY3jZhTzaVxrumFS+gC5d656V//+poNX8cKg3ZydBHIFl/eZ8ka q8eQ2JD10d8EAjQrJkh5hTOWtloBZSsVw59FEFtvO2rj1c0aCdUwxLaZFVOYaUABlP t7ZJXUXG0yBCSiHijDoPuY5TkQdXhuzAMZFY2BPfJ+MD1CdnBfz72b9GTTYgeU3T5A uQ35JAYcWy9D0F3FzwvCOgupdWnxNikvqSZJWI0iDWtspErf3jVA/6vY0RuXUA1jq0 uT3lGY8g+DSyLInraVDs4UfNhfwbOjJvGYY3dbKQ9Sf1bfSyneGrX3Z6gLhkOQMFWz eTQ7zPlhPWrjA== In-Reply-To: <1629803116.370682.1686084646758@mail.yahoo.com> Autocrypt: addr=hahnjo@hahnjo.de; prefer-encrypt=mutual; keydata=mQENBFIIleUBCAC94iH8XbAOTIPKPTRiMFcYyWaERWsRS1u3Cu6h3tlvTgLj02j9byL4uChGHhb0p6kuIqP89OlS/PGONDyMaMDvV4DL0woqbw87Y0qNLGHYiFtIXLqyhutHsNgsKObWKb2U7rhfmRbr5JUXFB3D5AWjKL1EBaYWlzH+wjJM3l3gqO9zmt5Q+4IhZkZHkb22SYsaAw4sdNtQ+SN3KUc1OYIZcJcooeQyQiddmiHCXQocMxQMGAbOSxuQhHaujsGWfwoqkAOAry0xt9Ry0FLKCGmj5F0YUlO3trSKuuWQ0xmJdXUMXCEFZ3odZ7t2pN0kGsKFhWN5ZyMqQF9E7igSOfdTABEBAAG0KUpvbmFzIEhhaG5mZWxkIDxqb25hcy5oYWhuZmVsZEBvbmxpbmUuZGU+iQE5BBMBAgAjBQJSKg3hAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQkcnDPSxhrNs1lAgAjEpy/TTOPTLEmdjXJDWgDom7y1+jTBHk37r3zjwWDJCkwr3WmVAnhY9muwo/8gkltvYk6CqzrIuUNxO7pTCfduEE04S19xUxd5IXVSxQoBG+AgzqvDqBmRCwMbDRXQ1EMu7qmX4FtZfjUmCZumQTf8unHzgGE5TgmYPM+UAS528AAWjT526lkLRhoSJHQlSBdaWGjiexCSyF76SedsXboCs9cS47mBWDwZOEin3eyycQlM0xBBPtEABF+Tq7Bt5/W9jc+wIe1f0QaUedsga75UY9wRYWu7Sjs90 1WSpEpdF+beU48rqaxEWLmLWkQy/3Vl571F21U+XP Received-SPF: pass client-ip=2a03:4000:2a:2c1::1; envelope-from=hahnjo@hahnjo.de; helo=mail.hahnjo.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.devel:22052 Archived-At: --=-dwh58N6PR9EnquGGxaQH Content-Type: multipart/mixed; boundary="=-U26wHuqRy7CXOhDCXYIa" --=-U26wHuqRy7CXOhDCXYIa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2023-06-06 at 20:50 +0000, Mike Gran wrote: > Hello Guile, Hi Mike, I'm sorry for "necrobumping" this thread; I wanted to reply back in June but didn't have enough time to work through what I will explain further below. In any case, I would very much like to see good Windows 64-bit support in Guile to make use of it in LilyPond. > [...] >=20 > I'd be willing [1] to update the patches for MinGW support for > review and inclusion into the main branch > for 3.0.10 or 3.2 but, only if maintainers are open, in principle, > to committing the most disruptive patch: the one where all > long integers become intptr_t to deal with Window's stupid > 4-byte longs on 64-bit OSs.=C2=A0 Without agreeing on that as a > possibility, 64-bit Windows support is DOA. For a long time, I wasn't really convinced by this argument until I realized that the alternative would complicate cross-compilation and move away from the simple {32-bit, 64-bit} x {little-endian, big- endian} matrix for the bytecode. > There are a couple of slightly outdated versions of janekke's 64-bit patc= h. > Here, for example: >=20 > https://git.savannah.gnu.org/cgit/guile.git/commit/?h=3Dwip-mingw&id=3D76= 950b4281c7dfff78b9ead6d3d62c070bbc1f13 If I understand correctly, one of the contentious points of this commit (apart from being big and having many changes in one) is that it moves GMP away from long. IIRC there was a statement somewhere that GMP will not change their APIs, which basically means that Guile on Windows would forever be stuck with a quite significantly patched mini-gmp. I would like to propose a different approach: It turns out to be possible to just define scm_t_inum as intptr_t, while leaving GMP interfaces alone (be that mini-gmp or a full GMP). Instead, the mismatch in type widths can be handled during the conversion to mpz. For a practical implementation, see the fourth patch attached to this message. Afterwards, the fifth patch takes care of the hashes, which are expected to have the same width as pointers. This is required because (at least) hashes of symbols are stored into the bytecode. Taken together, this seems to enable enough functionality to run LilyPond with Guile 3 on Windows. What do you and others think of this approach, would this be "more" acceptable to land in main? Jonas --=-U26wHuqRy7CXOhDCXYIa Content-Disposition: attachment; filename="0001-scm_i_divide2double-Refactor-to-use-scm_to_mpz.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-scm_i_divide2double-Refactor-to-use-scm_to_mpz.patch"; charset="UTF-8" RnJvbSA5OTZkZGZhMjg2NDM0YjI0MmY4OWZhZTc3NjI0MWMxOTYxNjlhNGExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hcyBIYWhuZmVsZCA8aGFobmpvQGhhaG5qby5kZT4KRGF0 ZTogV2VkLCAzMCBBdWcgMjAyMyAxNzowNzoxMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS81XSBz Y21faV9kaXZpZGUyZG91YmxlOiBSZWZhY3RvciB0byB1c2Ugc2NtX3RvX21wegoKKiBsaWJndWls ZS9udW1iZXJzLmMgKHNjbV9pX2RpdmlkZTJkb3VibGUpOiBSZWZhY3RvciB0byB1c2Ugc2NtX3Rv X21wei4KLS0tCiBsaWJndWlsZS9udW1iZXJzLmMgfCAxMiArKystLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGli Z3VpbGUvbnVtYmVycy5jIGIvbGliZ3VpbGUvbnVtYmVycy5jCmluZGV4IDMwYTgyNmYxMy4uMThm YTIxYjZkIDEwMDY0NAotLS0gYS9saWJndWlsZS9udW1iZXJzLmMKKysrIGIvbGliZ3VpbGUvbnVt YmVycy5jCkBAIC0yOTQsMTYgKzI5NCwxMSBAQCBzY21faV9kaXZpZGUyZG91YmxlIChTQ00gbiwg U0NNIGQpCiAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIDAuMCAvIDAuMDsKICAg ICAgICAgfQotCi0gICAgICBtcHpfaW5pdF9zZXRfc2kgKGRkLCBTQ01fSV9JTlVNIChkKSk7CiAg ICAgfQotICBlbHNlCi0gICAgc2NtX2ludGVnZXJfaW5pdF9zZXRfbXB6X3ogKHNjbV9iaWdudW0g KGQpLCBkZCk7CiAKLSAgaWYgKFNDTV9JX0lOVU1QIChuKSkKLSAgICBtcHpfaW5pdF9zZXRfc2kg KG5uLCBTQ01fSV9JTlVNIChuKSk7Ci0gIGVsc2UKLSAgICBzY21faW50ZWdlcl9pbml0X3NldF9t cHpfeiAoc2NtX2JpZ251bSAobiksIG5uKTsKKyAgbXB6X2luaXRzIChubiwgZGQsIGxvLCBoaSwg eCwgTlVMTCk7CisgIHNjbV90b19tcHogKGQsIGRkKTsKKyAgc2NtX3RvX21weiAobiwgbm4pOwog CiAgIG5lZyA9IChtcHpfc2duIChubikgPCAwKSBeIChtcHpfc2duIChkZCkgPCAwKTsKICAgbXB6 X2FicyAobm4sIG5uKTsKQEAgLTM1MSw3ICszNDYsNiBAQCBzY21faV9kaXZpZGUyZG91YmxlIChT Q00gbiwgU0NNIGQpCiAKICAgLyogQ29tcHV0ZSB0aGUgaW5pdGlhbCB2YWx1ZXMgb2YgbG8sIHgs IGFuZCBoaQogICAgICBiYXNlZCBvbiB0aGUgaW5pdGlhbCBndWVzcyBvZiBlICovCi0gIG1wel9p bml0cyAobG8sIGhpLCB4LCBOVUxMKTsKICAgbXB6X211bF8yZXhwICh4LCBubiwgMiArICgoZSA8 IDApID8gLWUgOiAwKSk7CiAgIG1wel9tdWwgKGxvLCBkZCwgc2NtX2lfZGl2aWRlMmRvdWJsZV9s bzJiKTsKICAgaWYgKGUgPiAwKQotLSAKMi40Mi4wCgo= --=-U26wHuqRy7CXOhDCXYIa Content-Disposition: attachment; filename*0=0002-scm_integer_modulo_expt_nnn-Refactor-to-use-scm_to_m.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0002-scm_integer_modulo_expt_nnn-Refactor-to-use-scm_to_m.patch"; charset="UTF-8" RnJvbSAzYjk0MDk3YzZjZTBkMmM5MmExNTZkYWQ1YTBjN2M0MzA3MWYyM2Q1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hcyBIYWhuZmVsZCA8aGFobmpvQGhhaG5qby5kZT4KRGF0 ZTogV2VkLCAzMCBBdWcgMjAyMyAxNzozNjozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi81XSBz Y21faW50ZWdlcl9tb2R1bG9fZXhwdF9ubm46IFJlZmFjdG9yIHRvIHVzZSBzY21fdG9fbXB6Cgoq IGxpYmd1aWxlL2ludGVnZXJzLmMgKHNjbV9pbnRlZ2VyX21vZHVsb19leHB0X25ubik6IFJlZmFj dG9yIHRvIHVzZQpzY21fdG9fbXB6LgooaW50ZWdlcl9pbml0X21weik6IFJlbW92ZSBoZWxwZXIg ZnVuY3Rpb24uCi0tLQogbGliZ3VpbGUvaW50ZWdlcnMuYyB8IDI4ICsrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9saWJndWlsZS9pbnRlZ2Vycy5jIGIvbGliZ3VpbGUvaW50ZWdl cnMuYwppbmRleCBjYzYyZDFjNzguLjgxZWUwNjIwNiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvaW50 ZWdlcnMuYworKysgYi9saWJndWlsZS9pbnRlZ2Vycy5jCkBAIC0yMzE4LDIxICsyMzE4LDYgQEAg c2NtX2ludGVnZXJfZXhwdF96aSAoc3RydWN0IHNjbV9iaWdudW0gKm4sIHNjbV90X2ludW0gaykK ICAgcmV0dXJuIHRha2VfbXB6IChyZXMpOwogfQogCi1zdGF0aWMgdm9pZAotaW50ZWdlcl9pbml0 X21weiAobXB6X3B0ciB6LCBTQ00gbikKLXsKLSAgaWYgKFNDTV9JX0lOVU1QIChuKSkKLSAgICBt cHpfaW5pdF9zZXRfc2kgKHosIFNDTV9JX0lOVU0gKG4pKTsKLSAgZWxzZQotICAgIHsKLSAgICAg IEFTU0VSVCAoU0NNX0JJR1AgKG4pKTsKLSAgICAgIG1wel90IHpuOwotICAgICAgYWxpYXNfYmln bnVtX3RvX21weiAoc2NtX2JpZ251bSAobiksIHpuKTsKLSAgICAgIG1wel9pbml0X3NldCAoeiwg em4pOwotICAgICAgc2NtX3JlbWVtYmVyX3VwdG9faGVyZV8xIChuKTsKLSAgICB9Ci19Ci0KIFND TQogc2NtX2ludGVnZXJfbW9kdWxvX2V4cHRfbm5uIChTQ00gbiwgU0NNIGssIFNDTSBtKQogewpA QCAtMjM0MSw5ICsyMzI2LDE2IEBAIHNjbV9pbnRlZ2VyX21vZHVsb19leHB0X25ubiAoU0NNIG4s IFNDTSBrLCBTQ00gbSkKIAogICBtcHpfdCBuX3RtcCwga190bXAsIG1fdG1wOwogCi0gIGludGVn ZXJfaW5pdF9tcHogKG5fdG1wLCBuKTsKLSAgaW50ZWdlcl9pbml0X21weiAoa190bXAsIGspOwot ICBpbnRlZ2VyX2luaXRfbXB6IChtX3RtcCwgbSk7CisjaWYgKCEgSEFWRV9ERUNMX01QWl9JTklU UykgfHwgU0NNX0VOQUJMRV9NSU5JX0dNUAorICBtcHpfaW5pdCAobl90bXApOworICBtcHpfaW5p dCAoa190bXApOworICBtcHpfaW5pdCAobV90bXApOworI2Vsc2UKKyAgbXB6X2luaXRzIChuX3Rt cCwga190bXAsIG1fdG1wLCBOVUxMKTsKKyNlbmRpZgorICBzY21fdG9fbXB6IChuLCBuX3RtcCk7 CisgIHNjbV90b19tcHogKGssIGtfdG1wKTsKKyAgc2NtX3RvX21weiAobSwgbV90bXApOwogCiAg IC8qIGlmIHRoZSBleHBvbmVudCBLIGlzIG5lZ2F0aXZlLCBhbmQgd2Ugc2ltcGx5IGNhbGwgbXB6 X3Bvd20sIHdlCiAgICAgIHdpbGwgZ2V0IGEgZGl2aWRlLWJ5LXplcm8gZXhjZXB0aW9uIHdoZW4g YW4gaW52ZXJzZSAxL24gbW9kIG0KLS0gCjIuNDIuMAoK --=-U26wHuqRy7CXOhDCXYIa Content-Disposition: attachment; filename="0003-Rename-functions-that-should-accept-scm_t_inum.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0003-Rename-functions-that-should-accept-scm_t_inum.patch"; charset="UTF-8" RnJvbSA1YTZlNjVlMTY2YzRjMzJiY2MyNTUyNzVkZjJiODI3NmFjY2ExZTQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hcyBIYWhuZmVsZCA8aGFobmpvQGhhaG5qby5kZT4KRGF0 ZTogU2F0LCAyIFNlcCAyMDIzIDE2OjM4OjU5ICswMjAwClN1YmplY3Q6IFtQQVRDSCAzLzVdIFJl bmFtZSBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYWNjZXB0IHNjbV90X2ludW0KCiogbGliZ3VpbGUv aW50ZWdlcnMuYyAobG9uZ190b19iaWdudW0pOiBSZW5hbWUgdG8gaW51bV90b19iaWdudW0uCihs b25nX3RvX3NjbSk6IFJlbmFtZSB0byBzY21fZnJvbV9pbnVtLgotLS0KIGxpYmd1aWxlL2ludGVn ZXJzLmMgfCA1MiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWJndWlsZS9pbnRlZ2Vycy5jIGIvbGliZ3VpbGUvaW50ZWdlcnMuYwppbmRleCA4 MWVlMDYyMDYuLmI0MDkwZTViZiAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvaW50ZWdlcnMuYworKysg Yi9saWJndWlsZS9pbnRlZ2Vycy5jCkBAIC0yNDUsNyArMjQ1LDcgQEAgdWxvbmdfdG9fYmlnbnVt ICh1bnNpZ25lZCBsb25nIHUpCiB9OwogCiBzdGF0aWMgc3RydWN0IHNjbV9iaWdudW0gKgotbG9u Z190b19iaWdudW0gKGxvbmcgaSkKK2ludW1fdG9fYmlnbnVtIChzY21fdF9pbnVtIGkpCiB7CiAg IGlmIChpID4gMCkKICAgICByZXR1cm4gdWxvbmdfdG9fYmlnbnVtIChpKTsKQEAgLTI2MCwxMSAr MjYwLDExIEBAIHNjbV9mcm9tX2JpZ251bSAoc3RydWN0IHNjbV9iaWdudW0gKngpCiB9CiAKIHN0 YXRpYyBTQ00KLWxvbmdfdG9fc2NtIChsb25nIGkpCitzY21fZnJvbV9pbnVtIChzY21fdF9pbnVt IGkpCiB7CiAgIGlmIChTQ01fRklYQUJMRSAoaSkpCiAgICAgcmV0dXJuIFNDTV9JX01BS0lOVU0g KGkpOwotICByZXR1cm4gc2NtX2Zyb21fYmlnbnVtIChsb25nX3RvX2JpZ251bSAoaSkpOworICBy ZXR1cm4gc2NtX2Zyb21fYmlnbnVtIChpbnVtX3RvX2JpZ251bSAoaSkpOwogfQogCiBzdGF0aWMg U0NNCkBAIC0zMjgsNyArMzI4LDcgQEAgdGFrZV9tcHogKG1wel9wdHIgbXB6KQogewogICBTQ00g cmV0OwogICBpZiAobXB6X2ZpdHNfc2xvbmdfcCAobXB6KSkKLSAgICByZXQgPSBsb25nX3RvX3Nj bSAobXB6X2dldF9zaSAobXB6KSk7CisgICAgcmV0ID0gc2NtX2Zyb21faW51bSAobXB6X2dldF9z aSAobXB6KSk7CiAgIGVsc2UKICAgICByZXQgPSBzY21fZnJvbV9iaWdudW0gKG1ha2VfYmlnbnVt X2Zyb21fbXB6IChtcHopKTsKICAgbXB6X2NsZWFyIChtcHopOwpAQCAtNTE2LDcgKzUxNiw3IEBA IHNjbV9pbnRlZ2VyX2Fic19pIChzY21fdF9pbnVtIGkpCiAgIGlmIChpID49IDApCiAgICAgcmV0 dXJuIFNDTV9JX01BS0lOVU0gKGkpOwogCi0gIHJldHVybiB1bG9uZ190b19zY20gKGxvbmdfbWFn bml0dWRlIChpKSk7CisgIHJldHVybiBzY21fZnJvbV9pbnVtICgtaSk7CiB9CiAKIFNDTQpAQCAt NTQxLDcgKzU0MSw3IEBAIHNjbV9pbnRlZ2VyX2Zsb29yX3F1b3RpZW50X2lpIChzY21fdF9pbnVt IHgsIHNjbV90X2ludW0geSkKICAgZWxzZSBpZiAoeCA+IDApCiAgICAgeCA9IHggLSB5IC0gMTsK ICAgc2NtX3RfaW51bSBxID0geCAvIHk7Ci0gIHJldHVybiBsb25nX3RvX3NjbSAocSk7CisgIHJl dHVybiBzY21fZnJvbV9pbnVtIChxKTsKIH0KIAogU0NNCkBAIC02NzUsNyArNjc1LDcgQEAgc2Nt X2ludGVnZXJfZmxvb3JfZGl2aWRlX2lpIChzY21fdF9pbnVtIHgsIHNjbV90X2ludW0geSwgU0NN ICpxcCwgU0NNICpycCkKICAgICAgIHEtLTsKICAgICB9CiAKLSAgKnFwID0gbG9uZ190b19zY20g KHEpOworICAqcXAgPSBzY21fZnJvbV9pbnVtIChxKTsKICAgKnJwID0gU0NNX0lfTUFLSU5VTSAo cik7CiB9CiAKQEAgLTc2OCw3ICs3NjgsNyBAQCBzY21faW50ZWdlcl9jZWlsaW5nX3F1b3RpZW50 X2lpIChzY21fdF9pbnVtIHgsIHNjbV90X2ludW0geSkKICAgICB4ID0geCArIHkgKyAxOwogICBz Y21fdF9pbnVtIHEgPSB4IC8geTsKIAotICByZXR1cm4gbG9uZ190b19zY20gKHEpOworICByZXR1 cm4gc2NtX2Zyb21faW51bSAocSk7CiB9CiAKIFNDTQpAQCAtOTM1LDcgKzkzNSw3IEBAIHNjbV9p bnRlZ2VyX2NlaWxpbmdfZGl2aWRlX2lpIChzY21fdF9pbnVtIHgsIHNjbV90X2ludW0geSwgU0NN ICpxcCwgU0NNICpycCkKICAgICAgICAgICByIC09IHk7CiAgICAgICAgICAgcSsrOwogICAgICAg ICB9Ci0gICAgICAqcXAgPSBsb25nX3RvX3NjbSAocSk7CisgICAgICAqcXAgPSBzY21fZnJvbV9p bnVtIChxKTsKICAgICAgICpycCA9IFNDTV9JX01BS0lOVU0gKHIpOwogICAgIH0KIH0KQEAgLTEw MzQsNyArMTAzNCw3IEBAIHNjbV9pbnRlZ2VyX3RydW5jYXRlX3F1b3RpZW50X2lpIChzY21fdF9p bnVtIHgsIHNjbV90X2ludW0geSkKICAgZWxzZQogICAgIHsKICAgICAgIHNjbV90X2ludW0gcSA9 IHggLyB5OwotICAgICAgcmV0dXJuIGxvbmdfdG9fc2NtIChxKTsKKyAgICAgIHJldHVybiBzY21f ZnJvbV9pbnVtIChxKTsKICAgICB9CiB9CiAKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHNjbV9pbnRl Z2VyX3RydW5jYXRlX3JlbWFpbmRlcl9paSAoc2NtX3RfaW51bSB4LCBzY21fdF9pbnVtIHkpCiAg IGVsc2UKICAgICB7CiAgICAgICBzY21fdF9pbnVtIHEgPSB4ICUgeTsKLSAgICAgIHJldHVybiBs b25nX3RvX3NjbSAocSk7CisgICAgICByZXR1cm4gc2NtX2Zyb21faW51bSAocSk7CiAgICAgfQog fQogCkBAIC0xMTUwLDcgKzExNTAsNyBAQCBzY21faW50ZWdlcl90cnVuY2F0ZV9kaXZpZGVfaWkg KHNjbV90X2ludW0geCwgc2NtX3RfaW51bSB5LCBTQ00gKnFwLCBTQ00gKnJwKQogICAgIHsKICAg ICAgIHNjbV90X2ludW0gcSA9IHggLyB5OwogICAgICAgc2NtX3RfaW51bSByID0geCAlIHk7Ci0g ICAgICAqcXAgPSBsb25nX3RvX3NjbSAocSk7CisgICAgICAqcXAgPSBzY21fZnJvbV9pbnVtIChx KTsKICAgICAgICpycCA9IFNDTV9JX01BS0lOVU0gKHIpOwogICAgIH0KIH0KQEAgLTEyODQsMTMg KzEyODQsMTMgQEAgc2NtX2ludGVnZXJfY2VudGVyZWRfcXVvdGllbnRfaWkgKHNjbV90X2ludW0g eCwgc2NtX3RfaW51bSB5KQogICAgICAgICAgICAgcSsrOwogICAgICAgICB9CiAgICAgfQotICBy ZXR1cm4gbG9uZ190b19zY20gKHEpOworICByZXR1cm4gc2NtX2Zyb21faW51bSAocSk7CiB9CiAK IFNDTQogc2NtX2ludGVnZXJfY2VudGVyZWRfcXVvdGllbnRfaXogKHNjbV90X2ludW0geCwgc3Ry dWN0IHNjbV9iaWdudW0gKnkpCiB7Ci0gIHJldHVybiBpbnRlZ2VyX2NlbnRlcmVkX3F1b3RpZW50 X3p6IChsb25nX3RvX2JpZ251bSAoeCksCisgIHJldHVybiBpbnRlZ2VyX2NlbnRlcmVkX3F1b3Rp ZW50X3p6IChpbnVtX3RvX2JpZ251bSAoeCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB5KTsKIH0KIApAQCAtMTQwOSw3ICsxNDA5LDcgQEAgc2NtX2ludGVnZXJfY2Vu dGVyZWRfcmVtYWluZGVyX2lpIChzY21fdF9pbnVtIHgsIHNjbV90X2ludW0geSkKIFNDTQogc2Nt X2ludGVnZXJfY2VudGVyZWRfcmVtYWluZGVyX2l6IChzY21fdF9pbnVtIHgsIHN0cnVjdCBzY21f YmlnbnVtICp5KQogewotICByZXR1cm4gaW50ZWdlcl9jZW50ZXJlZF9yZW1haW5kZXJfenogKGxv bmdfdG9fYmlnbnVtICh4KSwKKyAgcmV0dXJuIGludGVnZXJfY2VudGVyZWRfcmVtYWluZGVyX3p6 IChpbnVtX3RvX2JpZ251bSAoeCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeSk7CiB9CiAKQEAgLTE1MjUsMTQgKzE1MjUsMTQgQEAgc2NtX2ludGVnZXJfY2VudGVy ZWRfZGl2aWRlX2lpIChzY21fdF9pbnVtIHgsIHNjbV90X2ludW0geSwgU0NNICpxcCwgU0NNICpy cCkKICAgICAgICAgICAgIHsgcSsrOyByIC09IHk7IH0KICAgICAgICAgfQogICAgIH0KLSAgKnFw ID0gbG9uZ190b19zY20gKHEpOworICAqcXAgPSBzY21fZnJvbV9pbnVtIChxKTsKICAgKnJwID0g U0NNX0lfTUFLSU5VTSAocik7CiB9CiAKIHZvaWQKIHNjbV9pbnRlZ2VyX2NlbnRlcmVkX2Rpdmlk ZV9peiAoc2NtX3RfaW51bSB4LCBzdHJ1Y3Qgc2NtX2JpZ251bSAqeSwgU0NNICpxcCwgU0NNICpy cCkKIHsKLSAgaW50ZWdlcl9jZW50ZXJlZF9kaXZpZGVfenogKGxvbmdfdG9fYmlnbnVtICh4KSwg eSwgcXAsIHJwKTsKKyAgaW50ZWdlcl9jZW50ZXJlZF9kaXZpZGVfenogKGludW1fdG9fYmlnbnVt ICh4KSwgeSwgcXAsIHJwKTsKIH0KIAogdm9pZApAQCAtMTY0MywxMyArMTY0MywxMyBAQCBzY21f aW50ZWdlcl9yb3VuZF9xdW90aWVudF9paSAoc2NtX3RfaW51bSB4LCBzY21fdF9pbnVtIHkpCiAg ICAgICBlbHNlIGlmIChyMiA8IC1heSkKICAgICAgICAgcS0tOwogICAgIH0KLSAgcmV0dXJuIGxv bmdfdG9fc2NtIChxKTsKKyAgcmV0dXJuIHNjbV9mcm9tX2ludW0gKHEpOwogfQogCiBTQ00KIHNj bV9pbnRlZ2VyX3JvdW5kX3F1b3RpZW50X2l6IChzY21fdF9pbnVtIHgsIHN0cnVjdCBzY21fYmln bnVtICp5KQogewotICByZXR1cm4gaW50ZWdlcl9yb3VuZF9xdW90aWVudF96eiAobG9uZ190b19i aWdudW0gKHgpLCB5KTsKKyAgcmV0dXJuIGludGVnZXJfcm91bmRfcXVvdGllbnRfenogKGludW1f dG9fYmlnbnVtICh4KSwgeSk7CiB9CiAKIFNDTQpAQCAtMTc4OSw3ICsxNzg5LDcgQEAgc2NtX2lu dGVnZXJfcm91bmRfcmVtYWluZGVyX2lpIChzY21fdF9pbnVtIHgsIHNjbV90X2ludW0geSkKIFND TQogc2NtX2ludGVnZXJfcm91bmRfcmVtYWluZGVyX2l6IChzY21fdF9pbnVtIHgsIHN0cnVjdCBz Y21fYmlnbnVtICp5KQogewotICByZXR1cm4gaW50ZWdlcl9yb3VuZF9yZW1haW5kZXJfenogKGxv bmdfdG9fYmlnbnVtICh4KSwgeSk7CisgIHJldHVybiBpbnRlZ2VyX3JvdW5kX3JlbWFpbmRlcl96 eiAoaW51bV90b19iaWdudW0gKHgpLCB5KTsKIH0KIAogU0NNCkBAIC0xOTAyLDE0ICsxOTAyLDE0 IEBAIHNjbV9pbnRlZ2VyX3JvdW5kX2RpdmlkZV9paSAoc2NtX3RfaW51bSB4LCBzY21fdF9pbnVt IHksIFNDTSAqcXAsIFNDTSAqcnApCiAgICAgICBlbHNlIGlmIChyMiA8IC1heSkKICAgICAgICAg eyBxLS07IHIgKz0geTsgfQogICAgIH0KLSAgKnFwID0gbG9uZ190b19zY20gKHEpOworICAqcXAg PSBzY21fZnJvbV9pbnVtIChxKTsKICAgKnJwID0gU0NNX0lfTUFLSU5VTSAocik7CiB9CiAKIHZv aWQKIHNjbV9pbnRlZ2VyX3JvdW5kX2RpdmlkZV9peiAoc2NtX3RfaW51bSB4LCBzdHJ1Y3Qgc2Nt X2JpZ251bSAqeSwgU0NNICpxcCwgU0NNICpycCkKIHsKLSAgaW50ZWdlcl9yb3VuZF9kaXZpZGVf enogKGxvbmdfdG9fYmlnbnVtICh4KSwgeSwgcXAsIHJwKTsKKyAgaW50ZWdlcl9yb3VuZF9kaXZp ZGVfenogKGludW1fdG9fYmlnbnVtICh4KSwgeSwgcXAsIHJwKTsKIH0KIAogdm9pZApAQCAtMjAw NCw3ICsyMDA0LDcgQEAgc2NtX2ludGVnZXJfZ2NkX2lpIChzY21fdF9pbnVtIHgsIHNjbV90X2lu dW0geSkKICAgICAgICAgfQogICAgICAgcmVzdWx0ID0gdSA8PCBrOwogICAgIH0KLSAgcmV0dXJu IHVsb25nX3RvX3NjbSAocmVzdWx0KTsKKyAgcmV0dXJuIHNjbV9mcm9tX2ludW0gKHJlc3VsdCk7 CiB9CiAKIFNDTQpAQCAtMjgzMSw3ICsyODMxLDcgQEAgc2NtX2ludGVnZXJfZnJvbV9kb3VibGUg KGRvdWJsZSB2YWwpCiBTQ00KIHNjbV9pbnRlZ2VyX2FkZF9paSAoc2NtX3RfaW51bSB4LCBzY21f dF9pbnVtIHkpCiB7Ci0gIHJldHVybiBsb25nX3RvX3NjbSAoeCArIHkpOworICByZXR1cm4gc2Nt X2Zyb21faW51bSAoeCArIHkpOwogfQogCiBzdGF0aWMgU0NNCkBAIC0yOTQ5LDcgKzI5NDksNyBA QCBzY21faW50ZWdlcl9hZGRfenogKHN0cnVjdCBzY21fYmlnbnVtICp4LCBzdHJ1Y3Qgc2NtX2Jp Z251bSAqeSkKIFNDTQogc2NtX2ludGVnZXJfbmVnYXRlX2kgKHNjbV90X2ludW0geCkKIHsKLSAg cmV0dXJuIGxvbmdfdG9fc2NtICgteCk7CisgIHJldHVybiBzY21fZnJvbV9pbnVtICgteCk7CiB9 CiAKIFNDTQpAQCAtMzIyOSw3ICszMjI5LDcgQEAgc2NtX2ludGVnZXJfZnJvbV9pbnQzMiAoaW50 MzJfdCBuKQogewogICBpZiAoU0NNX0ZJWEFCTEUgKG4pKQogICAgIHJldHVybiBTQ01fSV9NQUtJ TlVNIChuKTsKLSAgcmV0dXJuIHNjbV9mcm9tX2JpZ251bSAobG9uZ190b19iaWdudW0gKG4pKTsK KyAgcmV0dXJuIHNjbV9mcm9tX2JpZ251bSAoaW51bV90b19iaWdudW0gKG4pKTsKIH0KIAogU0NN Ci0tIAoyLjQyLjAKCg== --=-U26wHuqRy7CXOhDCXYIa Content-Disposition: attachment; filename="0004-Decouple-scm_t_inum-from-long-datatype.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0004-Decouple-scm_t_inum-from-long-datatype.patch"; charset="UTF-8" RnJvbSA1NGU0N2E1YzYzYjdlNmE4NTUyMmIxNThlZDUxNGRkZjkzMWE1NTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hcyBIYWhuZmVsZCA8aGFobmpvQGhhaG5qby5kZT4KRGF0 ZTogU2F0LCAyIFNlcCAyMDIzIDE2OjE1OjM3ICswMjAwClN1YmplY3Q6IFtQQVRDSCA0LzVdIERl Y291cGxlIHNjbV90X2ludW0gZnJvbSBsb25nIGRhdGF0eXBlCgpHdWlsZSBleHBlY3RzIHRoYXQg c2NtX3RfaW51bSAoYSB0eXBlZGVmIHRvIGxvbmcgYmVmb3JlIHRoaXMgcGF0Y2gpCmhhcyB0aGUg c2FtZSBzaXplIGFzIHBvaW50ZXJzIHRvIGdldCBjb21wYXRpYmxlIGJ5dGVjb2RlIG9uIGRpZmZl cmVudApwbGF0Zm9ybXMuIFRoaXMgYXNzdW1wdGlvbiBicmVha3Mgb24gNjQtYml0IFdpbmRvd3Mg d2hlcmUgbG9uZ3MgYXJlCnN0aWxsIDMyIGJpdC4gSW5zdGVhZCB1c2UgaW50cHRyX3QgYXMgdGhl IHVuZGVybHlpbmcgZGF0YXR5cGUuCgpVbmZvcnR1bmF0ZWx5LCB0aGlzIGNvbWVzIHdpdGggYW4g YWRkaXRpb25hbCBjaGFsbGVuZ2UgYmVjYXVzZSBHTVAKZnVuY3Rpb25zIGFjY2VwdCB1bnNpZ25l ZCBsb25ncyBhcyBhcmd1bWVudHMuIFNvIGluc3RlYWQsIGluIHN1Y2gKY29uZmlndXJhdGlvbnMg d2hlcmUgbG9uZyA8IHNjbV90X2ludW0sIHNwbGl0IHRoZSB2YWx1ZXMgaW50byB0d28KbG9uZ3Mg dG8gY29udmVydCB0byBtcHouCgoqIGxpYmd1aWxlL3NjbS5oOiBEZWZpbmUgU0NNX0lOVFBUUl9U X0JJVC4KKiBsaWJndWlsZS9udW1iZXJzLmggKHNjbV90X2ludW0pOiBUeXBlZGVmIHRvIGludHB0 cl90LiBVcGRhdGUgdGhlCmRlZmluaXRpb25zIG9mIFNDTV9JX0ZJWE5VTV9CSVQgYW5kIFNDTV9N T1NUX05FR0FUSVZFX0ZJWE5VTS4KKiBsaWJndWlsZS9udW1iZXJzLmM6IFVwZGF0ZSB2ZXJpZnku CihzY21fdG9fbXB6KTogSW1wbGVtZW50IGlmIFNDTV9MT05HX0JJVCA8IFNDTV9JX0ZJWE5VTV9C SVQuCiogbGliZ3VpbGUvaW50ZWdlcnMuYyAoaW51bV90b19iaWdudW0sIHNjbV9pbnRlZ2VyX2dj ZF96aSk6IEltcGxlbWVudAppZiBTQ01fTE9OR19CSVQgPCBTQ01fSV9GSVhOVU1fQklULgotLS0K IGxpYmd1aWxlL2ludGVnZXJzLmMgfCAxMiArKysrKysrKysrKysKIGxpYmd1aWxlL251bWJlcnMu YyAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrLS0tCiBsaWJndWlsZS9udW1iZXJzLmggIHwg MTAgKysrKy0tLS0tLQogbGliZ3VpbGUvc2NtLmggICAgICB8ICAyICsrCiA0IGZpbGVzIGNoYW5n ZWQsIDQwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliZ3Vp bGUvaW50ZWdlcnMuYyBiL2xpYmd1aWxlL2ludGVnZXJzLmMKaW5kZXggYjQwOTBlNWJmLi4yM2Jk MmMwZDUgMTAwNjQ0Ci0tLSBhL2xpYmd1aWxlL2ludGVnZXJzLmMKKysrIGIvbGliZ3VpbGUvaW50 ZWdlcnMuYwpAQCAtMjQ3LDEwICsyNDcsMTQgQEAgdWxvbmdfdG9fYmlnbnVtICh1bnNpZ25lZCBs b25nIHUpCiBzdGF0aWMgc3RydWN0IHNjbV9iaWdudW0gKgogaW51bV90b19iaWdudW0gKHNjbV90 X2ludW0gaSkKIHsKKyNpZiBTQ01fTE9OR19CSVQgPj0gU0NNX0lfRklYTlVNX0JJVAogICBpZiAo aSA+IDApCiAgICAgcmV0dXJuIHVsb25nX3RvX2JpZ251bSAoaSk7CiAKICAgcmV0dXJuIGkgPT0g MCA/IG1ha2VfYmlnbnVtXzAgKCkgOiBtYWtlX2JpZ251bV8xICgxLCBsb25nX21hZ25pdHVkZSAo aSkpOworI2Vsc2UKKyAgcmV0dXJuIG1ha2VfYmlnbnVtX2Zyb21faW50NjQgKGkpOworI2VuZGlm CiB9OwogCiBzdGF0aWMgaW5saW5lIFNDTQpAQCAtMjAxNSw2ICsyMDE5LDE0IEBAIHNjbV9pbnRl Z2VyX2djZF96aSAoc3RydWN0IHNjbV9iaWdudW0gKngsIHNjbV90X2ludW0geSkKICAgICByZXR1 cm4gc2NtX2ludGVnZXJfYWJzX3ogKHgpOwogICBpZiAoeSA8IDApCiAgICAgeSA9IC15OworI2lm IFNDTV9JX0ZJWE5VTV9CSVQgPiBTQ01fTE9OR19CSVQKKyAgaWYgKHkgPiBVTE9OR19NQVgpCisg ICAgeworICAgICAgc3RydWN0IHNjbV9iaWdudW0gKnlfYmlnbnVtID0gaW51bV90b19iaWdudW0g KHkpOworICAgICAgcmV0dXJuIHNjbV9pbnRlZ2VyX2djZF96eiAoeCwgeV9iaWdudW0pOworICAg IH0KKyNlbmRpZgorCiAgIG1wel90IHp4OwogICBhbGlhc19iaWdudW1fdG9fbXB6ICh4LCB6eCk7 CiAgIHJlc3VsdCA9IG1wel9nY2RfdWkgKE5VTEwsIHp4LCB5KTsKZGlmZiAtLWdpdCBhL2xpYmd1 aWxlL251bWJlcnMuYyBiL2xpYmd1aWxlL251bWJlcnMuYwppbmRleCAxOGZhMjFiNmQuLjkyYzIw MmM4MyAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvbnVtYmVycy5jCisrKyBiL2xpYmd1aWxlL251bWJl cnMuYwpAQCAtOTQsMTAgKzk0LDEwIEBAIHZlcmlmeSAoRkxUX1JBRElYID09IDIpOwogLyogTWFr ZSBzdXJlIHRoYXQgc2NtX3RfaW51bSBmaXRzIHdpdGhpbiBhIFNDTSB2YWx1ZS4gICovCiB2ZXJp ZnkgKHNpemVvZiAoc2NtX3RfaW51bSkgPD0gc2l6ZW9mIChzY21fdF9iaXRzKSk7CiAKLS8qIFNl dmVyYWwgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGF0IGZpeG51bXMgZml0IHdpdGhpbiBhIGxv bmcsIGFuZAorLyogU2V2ZXJhbCBmdW5jdGlvbnMgYmVsb3cgYXNzdW1lIHRoYXQgZml4bnVtcyBm aXQgd2l0aGluIGFuIGludHB0cl90LCBhbmQKICAgIGZ1cnRoZXJtb3JlIHRoYXQgdGhlcmUgaXMg c29tZSBoZWFkcm9vbSB0byBzcGFyZSBmb3Igb3RoZXIgb3BlcmF0aW9ucwogICAgd2l0aG91dCBv dmVyZmxvd2luZy4gKi8KLXZlcmlmeSAoU0NNX0lfRklYTlVNX0JJVCA8PSBTQ01fTE9OR19CSVQg LSAyKTsKK3ZlcmlmeSAoU0NNX0lfRklYTlVNX0JJVCA8PSBTQ01fSU5UUFRSX1RfQklUIC0gMik7 CiAKIC8qIFNvbWUgZnVuY3Rpb25zIHRoYXQgdXNlIEdNUCdzIG1wbiBmdW5jdGlvbnMgYXNzdW1l IHRoYXQgYQogICAgbm9uLW5lZ2F0aXZlIGZpeG51bSB3aWxsIGFsd2F5cyBmaXQgaW4gYSAnbXBf bGltYl90Jy4gICovCkBAIC02ODU3LDcgKzY4NTcsMjYgQEAgdm9pZAogc2NtX3RvX21weiAoU0NN IHZhbCwgbXB6X3Qgcm9wKQogewogICBpZiAoU0NNX0lfSU5VTVAgKHZhbCkpCi0gICAgbXB6X3Nl dF9zaSAocm9wLCBTQ01fSV9JTlVNICh2YWwpKTsKKyAgICB7CisgICAgICBzY21fdF9pbnVtIGlu dW0gPSBTQ01fSV9JTlVNICh2YWwpOworI2lmIFNDTV9MT05HX0JJVCA+PSBTQ01fSV9GSVhOVU1f QklUCisgICAgICAvLyBDYXN0IHRvIGxvbmcgYW5kIGRpcmVjdGx5IHBhc3MgdG8gR01QLgorICAg ICAgbXB6X3NldF9zaSAocm9wLCAobG9uZylpbnVtKTsKKyNlbGlmICgyICogU0NNX0xPTkdfQklU KSA+IFNDTV9JX0ZJWE5VTV9CSVQKKyAgICAgIHNjbV90X2ludW0gaW51bV9hYnMgPSBpbnVtOwor ICAgICAgaWYgKGludW0gPCAwKQorICAgICAgICBpbnVtX2FicyAqPSAtMTsKKyAgICAgIGxvbmcg aGlnaCA9IGludW1fYWJzID4+IChTQ01fTE9OR19CSVQgLSAxKTsKKyAgICAgIGxvbmcgbG93ID0g KGxvbmcpKGludW1fYWJzICYgKCgoKHNjbV90X2ludW0pMSkgPDwgKFNDTV9MT05HX0JJVCAtIDEp KSAtIDEpKTsKKyAgICAgIG1wel9zZXRfc2kgKHJvcCwgaGlnaCk7CisgICAgICBtcHpfbXVsXzJl eHAgKHJvcCwgcm9wLCBTQ01fTE9OR19CSVQgLSAxKTsKKyAgICAgIG1wel9hZGRfdWkgKHJvcCwg cm9wLCBsb3cpOworICAgICAgaWYgKGludW0gPCAwKQorICAgICAgICBtcHpfbmVnIChyb3AsIHJv cCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gY29uZmlndXJhdGlvbgorI2VuZGlmCisgICAgfQog ICBlbHNlIGlmIChTQ01fQklHUCAodmFsKSkKICAgICBzY21faW50ZWdlcl9zZXRfbXB6X3ogKHNj bV9iaWdudW0gKHZhbCksIHJvcCk7CiAgIGVsc2UKZGlmZiAtLWdpdCBhL2xpYmd1aWxlL251bWJl cnMuaCBiL2xpYmd1aWxlL251bWJlcnMuaAppbmRleCA4NGFkNTQ2NmYuLjhiYzg3ODI5YSAxMDA2 NDQKLS0tIGEvbGliZ3VpbGUvbnVtYmVycy5oCisrKyBiL2xpYmd1aWxlL251bWJlcnMuaApAQCAt NTIsMTIgKzUyLDEwIEBAIGV4dGVybiAiQysrIiB7CiAgKgogICogSW51bXMgYXJlIGV4YWN0IGlu dGVnZXJzIHRoYXQgZml0IHdpdGhpbiBhbiBTQ00gd29yZAogICogKGFsb25nIHdpdGggdHdvIHRh Z2dpbmcgYml0cykuCi0gKgotICogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIEludW1z IG11c3QgYWxzbyBmaXQgd2l0aGluIGEgbG9uZwotICogYmVjYXVzZSB0aGF0J3Mgd2hhdCBHTVAn cyBtcHpfKl9zaSBmdW5jdGlvbnMgYWNjZXB0LiAgKi8KLXR5cGVkZWYgbG9uZyBzY21fdF9pbnVt OwotI2RlZmluZSBTQ01fSV9GSVhOVU1fQklUICAgICAgICAgKFNDTV9MT05HX0JJVCAtIDIpCi0j ZGVmaW5lIFNDTV9NT1NUX05FR0FUSVZFX0ZJWE5VTSAoLTFMIDw8IChTQ01fSV9GSVhOVU1fQklU IC0gMSkpCisgKi8KK3R5cGVkZWYgaW50cHRyX3Qgc2NtX3RfaW51bTsKKyNkZWZpbmUgU0NNX0lf RklYTlVNX0JJVCAgICAgICAgIChTQ01fSU5UUFRSX1RfQklUIC0gMikKKyNkZWZpbmUgU0NNX01P U1RfTkVHQVRJVkVfRklYTlVNICgoKHNjbV90X2ludW0pIC0xKSA8PCAoU0NNX0lfRklYTlVNX0JJ VCAtIDEpKQogI2RlZmluZSBTQ01fTU9TVF9QT1NJVElWRV9GSVhOVU0gKC0gKFNDTV9NT1NUX05F R0FUSVZFX0ZJWE5VTSArIDEpKQogCiAvKiBTQ01fU1JTIChYLCBZKSBpcyBzaWduZWQgcmlnaHQg c2hpZnQsIGRlZmluZWQgYXMgZmxvb3IgKFggLyAyXlkpLApkaWZmIC0tZ2l0IGEvbGliZ3VpbGUv c2NtLmggYi9saWJndWlsZS9zY20uaAppbmRleCA0ZDA3OWIxYTguLmUwNTNjOTg4MyAxMDA2NDQK LS0tIGEvbGliZ3VpbGUvc2NtLmgKKysrIGIvbGliZ3VpbGUvc2NtLmgKQEAgLTg0Myw2ICs4NDMs OCBAQCB0eXBlZGVmIHN0cnVjdCBzY21fdGhyZWFkIHNjbV90aHJlYWQ7CiAjIGRlZmluZSBTQ01f TE9OR19CSVQgKFNDTV9TSVpFT0ZfTE9ORyAqIDgpCiAjZW5kaWYKIAorI2RlZmluZSBTQ01fSU5U UFRSX1RfQklUIChTQ01fU0laRU9GX0lOVFBUUl9UICogOCkKKwogDAogCiAvKiBDYXN0IHBvaW50 ZXIgdGhyb3VnaCAodm9pZCAqKSBpbiBvcmRlciB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncwot LSAKMi40Mi4wCgo= --=-U26wHuqRy7CXOhDCXYIa Content-Disposition: attachment; filename="0005-Store-hashes-as-uintptr_t.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0005-Store-hashes-as-uintptr_t.patch"; charset="UTF-8" RnJvbSA2MzlkOWE1M2M4ODNlYzMxMDc4M2JhOGVkOWI0M2E0ODVjMGU1YjYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hcyBIYWhuZmVsZCA8aGFobmpvQGhhaG5qby5kZT4KRGF0 ZTogVHVlLCAyNCBPY3QgMjAyMyAyMzo0Nzo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggNS81XSBT dG9yZSBoYXNoZXMgYXMgdWludHB0cl90CgpBcyBmb3Igc2NtX3RfaW51bSwgR3VpbGUgZXhwZWN0 cyB0aGF0IGhhc2hlcyBoYXZlIHRoZSBzYW1lIHNpemUgYXMKcG9pbnRlcnMgdG8gZ2V0IGNvbXBh dGlibGUgYnl0ZWNvZGUgKHdpdGggcmVzcGVjdCB0byBpbnRlcm5lZCBzeW1ib2xzKQpvbiBkaWZm ZXJlbnQgcGxhdGZvcm1zLiBUaGlzIGFzc3VtcHRpb24gYnJlYWtzIG9uIDY0LWJpdCBXaW5kb3dz IHdoZXJlCmxvbmdzIGFyZSBzdGlsbCAzMiBiaXQuIEluc3RlYWQgdXNlIHVpbnRwdHJfdCBhcyB0 aGUgZGF0YXR5cGUuCgpCYXNlZCBvbiBjaGFuZ2VzIGJ5IEphbiBOaWV1d2VuaHVpemVuLCBNaWtl IEdyYW4sIGFuZCBBbmR5IFdpbmdvLgoKKiBsaWJndWlsZS9oYXNoLmM6CiogbGliZ3VpbGUvaGFz aC5oOgoqIGxpYmd1aWxlL3N0cmluZ3MuYzoKKiBsaWJndWlsZS9zdHJpbmdzLmg6CiogbGliZ3Vp bGUvc3ltYm9scy5jOgoqIGxpYmd1aWxlL3N5bWJvbHMuaDogVXNlIHVpbnRwdHJfdCB0byBzdG9y ZSBoYXNoZXMuCi0tLQogbGliZ3VpbGUvaGFzaC5jICAgIHwgNjggKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliZ3VpbGUvaGFzaC5oICAgIHwgMjIgKysr KysrKy0tLS0tLS0tCiBsaWJndWlsZS9zdHJpbmdzLmMgfCAgMiArLQogbGliZ3VpbGUvc3RyaW5n cy5oIHwgIDIgKy0KIGxpYmd1aWxlL3N5bWJvbHMuYyB8IDI0ICsrKysrKysrLS0tLS0tLS0KIGxp Ymd1aWxlL3N5bWJvbHMuaCB8ICA2ICsrLS0KIDYgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9u cygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliZ3VpbGUvaGFzaC5jIGIvbGli Z3VpbGUvaGFzaC5jCmluZGV4IDVhYmRmZTM5Ny4uY2ZlMTRiZjFkIDEwMDY0NAotLS0gYS9saWJn dWlsZS9oYXNoLmMKKysrIGIvbGliZ3VpbGUvaGFzaC5jCkBAIC0xMTIsMzEgKzExMiwzMSBAQCBl eHRlcm4gZG91YmxlIGZsb29yKCk7CiAgICAgICAgdGhlIGhhc2ggb24gYSA2NC1iaXQgc3lzdGVt IGFyZSBlcXVhbCB0byB0aGUgaGFzaCBvbiBhIDMyLWJpdCAgICBcCiAgICAgICAgc3lzdGVtLiAg VGhlIGxvdyAzMiBiaXRzIGp1c3QgYWRkIG1vcmUgZW50cm9weS4gICovICAgICAgICAgICAgICBc CiAgICAgaWYgKHNpemVvZiAocmV0KSA9PSA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICByZXQgPSAoKCh1bnNpZ25lZCBsb25nKSBjKSA8PCAz MikgfCBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICByZXQgPSAoKCh1aW50 cHRyX3QpIGMpIDw8IDMyKSB8IGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg ICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgICAgICByZXQgPSBjOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIH0gd2hpbGUgKDApCiAKIAotc3Rh dGljIHVuc2lnbmVkIGxvbmcKK3N0YXRpYyB1aW50cHRyX3QKIG5hcnJvd19zdHJpbmdfaGFzaCAo Y29uc3QgdWludDhfdCAqc3RyLCBzaXplX3QgbGVuKQogewotICB1bnNpZ25lZCBsb25nIHJldDsK KyAgdWludHB0cl90IHJldDsKICAgSkVOS0lOU19MT09LVVAzX0hBU0hXT1JEMiAoc3RyLCBsZW4s IHJldCk7CiAgIHJldCA+Pj0gMjsgLyogRW5zdXJlIHRoYXQgaXQgZml0cyBpbiBhIGZpeG51bS4g ICovCiAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nCitzdGF0aWMgdWlu dHB0cl90CiB3aWRlX3N0cmluZ19oYXNoIChjb25zdCBzY21fdF93Y2hhciAqc3RyLCBzaXplX3Qg bGVuKQogewotICB1bnNpZ25lZCBsb25nIHJldDsKKyAgdWludHB0cl90IHJldDsKICAgSkVOS0lO U19MT09LVVAzX0hBU0hXT1JEMiAoc3RyLCBsZW4sIHJldCk7CiAgIHJldCA+Pj0gMjsgLyogRW5z dXJlIHRoYXQgaXQgZml0cyBpbiBhIGZpeG51bS4gICovCiAgIHJldHVybiByZXQ7CiB9CiAKLXVu c2lnbmVkIGxvbmcKK3VpbnRwdHJfdAogc2NtX2lfc3RyaW5nX2hhc2ggKFNDTSBzdHIpCiB7CiAg IHNpemVfdCBsZW4gPSBzY21faV9zdHJpbmdfbGVuZ3RoIChzdHIpOwpAQCAtMTQ4LDEzICsxNDgs MTMgQEAgc2NtX2lfc3RyaW5nX2hhc2ggKFNDTSBzdHIpCiAgICAgcmV0dXJuIHdpZGVfc3RyaW5n X2hhc2ggKHNjbV9pX3N0cmluZ193aWRlX2NoYXJzIChzdHIpLCBsZW4pOwogfQogCi11bnNpZ25l ZCBsb25nIAordWludHB0cl90CiBzY21faV9sb2NhbGVfc3RyaW5nX2hhc2ggKGNvbnN0IGNoYXIg KnN0ciwgc2l6ZV90IGxlbikKIHsKICAgcmV0dXJuIHNjbV9pX3N0cmluZ19oYXNoIChzY21fZnJv bV9sb2NhbGVfc3RyaW5nbiAoc3RyLCBsZW4pKTsKIH0KIAotdW5zaWduZWQgbG9uZyAKK3VpbnRw dHJfdAogc2NtX2lfbGF0aW4xX3N0cmluZ19oYXNoIChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBs ZW4pCiB7CiAgIGlmIChsZW4gPT0gKHNpemVfdCkgLTEpCkBAIC0xNjQsMTEgKzE2NCwxMSBAQCBz Y21faV9sYXRpbjFfc3RyaW5nX2hhc2ggKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IGxlbikKIH0K IAogLyogQSB0cmlja3kgb3B0aW1pemF0aW9uLCBidXQgcHJvYmFibHkgd29ydGggaXQuICAqLwot dW5zaWduZWQgbG9uZyAKK3VpbnRwdHJfdAogc2NtX2lfdXRmOF9zdHJpbmdfaGFzaCAoY29uc3Qg Y2hhciAqc3RyLCBzaXplX3QgbGVuKQogewogICBjb25zdCB1aW50OF90ICplbmQsICp1c3RyID0g KGNvbnN0IHVpbnQ4X3QgKikgc3RyOwotICB1bnNpZ25lZCBsb25nIHJldDsKKyAgdWludHB0cl90 IHJldDsKIAogICAvKiBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgaW4gY2hhcmFjdGVycy4gIFRo aXMgbmFtZSBjb3JyZXNwb25kcyB0bwogICAgICBKZW5raW5zJyBvcmlnaW5hbCBuYW1lLiAgKi8K QEAgLTIxOSw4ICsyMTksOCBAQCBzY21faV91dGY4X3N0cmluZ19oYXNoIChjb25zdCBjaGFyICpz dHIsIHNpemVfdCBsZW4pCiAKICAgZmluYWwgKGEsIGIsIGMpOwogCi0gIGlmIChzaXplb2YgKHVu c2lnbmVkIGxvbmcpID09IDgpCi0gICAgcmV0ID0gKCgodW5zaWduZWQgbG9uZykgYykgPDwgMzIp IHwgYjsKKyAgaWYgKHNpemVvZiAodWludHB0cl90KSA9PSA4KQorICAgIHJldCA9ICgoKHVpbnRw dHJfdCkgYykgPDwgMzIpIHwgYjsKICAgZWxzZQogICAgIHJldCA9IGM7CiAKQEAgLTIyOCwxNiAr MjI4LDE2IEBAIHNjbV9pX3V0Zjhfc3RyaW5nX2hhc2ggKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90 IGxlbikKICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgc2NtX3Jhd19p aGFzaHEgKHNjbV90X2JpdHMga2V5KTsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIHNjbV9yYXdfaWhh c2ggKFNDTSBvYmosIHNpemVfdCBkZXB0aCk7CitzdGF0aWMgdWludHB0cl90IHNjbV9yYXdfaWhh c2hxIChzY21fdF9iaXRzIGtleSk7CitzdGF0aWMgdWludHB0cl90IHNjbV9yYXdfaWhhc2ggKFND TSBvYmosIHNpemVfdCBkZXB0aCk7CiAKIC8qIFJldHVybiB0aGUgaGFzaCBvZiBzdHJ1Y3QgT0JK LiAgVHJhdmVyc2UgT0JKJ3MgZmllbGRzIHRvIGNvbXB1dGUgdGhlCiAgICByZXN1bHQsIHVubGVz cyBERVBUSCBpcyB6ZXJvLiAgQXNzdW1lcyB0aGF0IE9CSiBpcyBhIHN0cnVjdC4gICovCi1zdGF0 aWMgdW5zaWduZWQgbG9uZworc3RhdGljIHVpbnRwdHJfdAogc2NtX2lfc3RydWN0X2hhc2ggKFND TSBvYmosIHNpemVfdCBkZXB0aCkKIHsKICAgc2l6ZV90IHN0cnVjdF9zaXplLCBmaWVsZF9udW07 Ci0gIHVuc2lnbmVkIGxvbmcgaGFzaDsKKyAgdWludHB0cl90IGhhc2g7CiAKICAgc3RydWN0X3Np emUgPSBTQ01fU1RSVUNUX1NJWkUgKG9iaik7CiAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzY21faV9z dHJ1Y3RfaGFzaCAoU0NNIG9iaiwgc2l6ZV90IGRlcHRoKQogCiAvKiBUaG9tYXMgV2FuZydzIGlu dGVnZXIgaGFzaGVyLCBmcm9tCiAgICBodHRwOi8vd3d3LmNyaXMuY29tL35UdHdhbmcvdGVjaC9p bnRoYXNoLmh0bS4gICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZworc3RhdGljIHVpbnRwdHJfdAog c2NtX3Jhd19paGFzaHEgKHNjbV90X2JpdHMga2V5KQogewogICBpZiAoc2l6ZW9mIChrZXkpIDwg OCkKQEAgLTI4Myw3ICsyODMsNyBAQCBzY21fcmF3X2loYXNocSAoc2NtX3RfYml0cyBrZXkpCiB9 CiAKIC8qIGBkZXB0aCcgaXMgdXNlZCB0byBsaW1pdCByZWN1cnNpb24uICovCi1zdGF0aWMgdW5z aWduZWQgbG9uZworc3RhdGljIHVpbnRwdHJfdAogc2NtX3Jhd19paGFzaCAoU0NNIG9iaiwgc2l6 ZV90IGRlcHRoKQogewogICBpZiAoU0NNX0lNUCAob2JqKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBz Y21fcmF3X2loYXNoIChTQ00gb2JqLCBzaXplX3QgZGVwdGgpCiAgICAgICAgICAgU0NNIG4gPSBT Q01fSV9NQUtJTlVNIChTQ01fTU9TVF9QT1NJVElWRV9GSVhOVU0pOwogICAgICAgICAgIGlmIChz Y21faXNfaW5leGFjdCAob2JqKSkKICAgICAgICAgICAgIG9iaiA9IHNjbV9pbmV4YWN0X3RvX2V4 YWN0IChvYmopOwotICAgICAgICAgIHJldHVybiBzY21fcmF3X2loYXNocSAoc2NtX3RvX3Vsb25n IChzY21fbW9kdWxvIChvYmosIG4pKSk7CisgICAgICAgICAgcmV0dXJuIHNjbV9yYXdfaWhhc2hx IChzY21fdG9fdWludHB0cl90IChzY21fbW9kdWxvIChvYmosIG4pKSk7CiAgICAgICAgIH0KICAg ICAgIGVsc2UKICAgICAgICAgcmV0dXJuIHNjbV9pX3N0cmluZ19oYXNoIChzY21fbnVtYmVyX3Rv X3N0cmluZyAob2JqLCBzY21fZnJvbV9pbnQgKDEwKSkpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHNj bV9yYXdfaWhhc2ggKFNDTSBvYmosIHNpemVfdCBkZXB0aCkKICAgICAgIHsKIAlzaXplX3QgbGVu ID0gU0NNX1NJTVBMRV9WRUNUT1JfTEVOR1RIIChvYmopOwogICAgICAgICBzaXplX3QgaSA9IGRl cHRoIC8gMjsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBoID0gc2NtX3Jhd19paGFzaHEgKFNDTV9D RUxMX1dPUkRfMCAob2JqKSk7CisgICAgICAgIHVpbnRwdHJfdCBoID0gc2NtX3Jhd19paGFzaHEg KFNDTV9DRUxMX1dPUkRfMCAob2JqKSk7CiAgICAgICAgIGlmIChsZW4pCiAgICAgICAgICAgd2hp bGUgKGktLSkKICAgICAgICAgICAgIGggXj0gc2NtX3Jhd19paGFzaCAoc2NtX2NfdmVjdG9yX3Jl ZiAob2JqLCBoICUgbGVuKSwgaSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgc2NtX3Jhd19paGFzaCAo U0NNIG9iaiwgc2l6ZV90IGRlcHRoKQogICAgICAgfQogICAgIGNhc2Ugc2NtX3RjN19zeW50YXg6 CiAgICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgaDsKKyAgICAgICAgdWludHB0cl90IGg7 CiAgICAgICAgIGggPSBzY21fcmF3X2loYXNoIChzY21fc3ludGF4X2V4cHJlc3Npb24gKG9iaiks IGRlcHRoKTsKICAgICAgICAgaCBePSBzY21fcmF3X2loYXNoIChzY21fc3ludGF4X3dyYXAgKG9i aiksIGRlcHRoKTsKICAgICAgICAgaCBePSBzY21fcmF3X2loYXNoIChzY21fc3ludGF4X21vZHVs ZSAob2JqKSwgZGVwdGgpOwpAQCAtMzY1LDggKzM2NSw4IEBAIHNjbV9yYXdfaWhhc2ggKFNDTSBv YmosIHNpemVfdCBkZXB0aCkKIAogDAogCi11bnNpZ25lZCBsb25nCi1zY21faWhhc2hxIChTQ00g b2JqLCB1bnNpZ25lZCBsb25nIG4pCit1aW50cHRyX3QKK3NjbV9paGFzaHEgKFNDTSBvYmosIHVp bnRwdHJfdCBuKQogewogICByZXR1cm4gc2NtX3Jhd19paGFzaHEgKFNDTV9VTlBBQ0sgKG9iaikp ICUgbjsKIH0KQEAgLTM4Niw4ICszODYsOCBAQCBTQ01fREVGSU5FIChzY21faGFzaHEsICJoYXNo cSIsIDIsIDAsIDAsCiAJICAgICJkaWZmZXJlbnQgdmFsdWVzLCBzaW5jZSBAY29kZXtmb299IHdp bGwgYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuIikKICNkZWZpbmUgRlVOQ19OQU1FIHNfc2NtX2hhc2hx CiB7Ci0gIHVuc2lnbmVkIGxvbmcgc3ogPSBzY21fdG9fdW5zaWduZWRfaW50ZWdlciAoc2l6ZSwg MSwgVUxPTkdfTUFYKTsKLSAgcmV0dXJuIHNjbV9mcm9tX3Vsb25nIChzY21faWhhc2hxIChrZXks IHN6KSk7CisgIHVpbnRwdHJfdCBzeiA9IHNjbV90b191bnNpZ25lZF9pbnRlZ2VyIChzaXplLCAx LCBVSU5UUFRSX01BWCk7CisgIHJldHVybiBzY21fZnJvbV91bnNpZ25lZF9pbnRlZ2VyIChzY21f aWhhc2hxIChrZXksIHN6KSk7CiB9CiAjdW5kZWYgRlVOQ19OQU1FCiAKQEAgLTM5NSw4ICszOTUs OCBAQCBTQ01fREVGSU5FIChzY21faGFzaHEsICJoYXNocSIsIDIsIDAsIDAsCiAMCiAKIAotdW5z aWduZWQgbG9uZwotc2NtX2loYXNodiAoU0NNIG9iaiwgdW5zaWduZWQgbG9uZyBuKQordWludHB0 cl90CitzY21faWhhc2h2IChTQ00gb2JqLCB1aW50cHRyX3QgbikKIHsKICAgaWYgKFNDTV9OVU1Q KG9iaikpCiAgICAgcmV0dXJuIHNjbV9yYXdfaWhhc2ggKG9iaiwgMTApICUgbjsKQEAgLTQxOSw4 ICs0MTksOCBAQCBTQ01fREVGSU5FIChzY21faGFzaHYsICJoYXNodiIsIDIsIDAsIDAsCiAJICAg ICJkaWZmZXJlbnQgdmFsdWVzLCBzaW5jZSBAY29kZXtmb299IHdpbGwgYmUgZ2FyYmFnZSBjb2xs ZWN0ZWQuIikKICNkZWZpbmUgRlVOQ19OQU1FIHNfc2NtX2hhc2h2CiB7Ci0gIHVuc2lnbmVkIGxv bmcgc3ogPSBzY21fdG9fdW5zaWduZWRfaW50ZWdlciAoc2l6ZSwgMSwgVUxPTkdfTUFYKTsKLSAg cmV0dXJuIHNjbV9mcm9tX3Vsb25nIChzY21faWhhc2h2IChrZXksIHN6KSk7CisgIHVpbnRwdHJf dCBzeiA9IHNjbV90b191bnNpZ25lZF9pbnRlZ2VyIChzaXplLCAxLCBVSU5UUFRSX01BWCk7Cisg IHJldHVybiBzY21fZnJvbV91bnNpZ25lZF9pbnRlZ2VyIChzY21faWhhc2h2IChrZXksIHN6KSk7 CiB9CiAjdW5kZWYgRlVOQ19OQU1FCiAKQEAgLTQyOCwxMCArNDI4LDEwIEBAIFNDTV9ERUZJTkUg KHNjbV9oYXNodiwgImhhc2h2IiwgMiwgMCwgMCwKIAwKIAogCi11bnNpZ25lZCBsb25nCi1zY21f aWhhc2ggKFNDTSBvYmosIHVuc2lnbmVkIGxvbmcgbikKK3VpbnRwdHJfdAorc2NtX2loYXNoIChT Q00gb2JqLCB1aW50cHRyX3QgbikKIHsKLSAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSBzY21fcmF3 X2loYXNoIChvYmosIDEwKSAlIG47CisgIHJldHVybiBzY21fcmF3X2loYXNoIChvYmosIDEwKSAl IG47CiB9CiAKIFNDTV9ERUZJTkUgKHNjbV9oYXNoLCAiaGFzaCIsIDIsIDAsIDAsCkBAIC00NDIs OCArNDQyLDggQEAgU0NNX0RFRklORSAoc2NtX2hhc2gsICJoYXNoIiwgMiwgMCwgMCwKIAkgICAg ImludGVnZXIgaW4gdGhlIHJhbmdlIDAgdG8gQHZhcntzaXplfSAtIDEuIikKICNkZWZpbmUgRlVO Q19OQU1FIHNfc2NtX2hhc2gKIHsKLSAgdW5zaWduZWQgbG9uZyBzeiA9IHNjbV90b191bnNpZ25l ZF9pbnRlZ2VyIChzaXplLCAxLCBVTE9OR19NQVgpOwotICByZXR1cm4gc2NtX2Zyb21fdWxvbmcg KHNjbV9paGFzaCAoa2V5LCBzeikpOworICB1aW50cHRyX3Qgc3ogPSBzY21fdG9fdW5zaWduZWRf aW50ZWdlciAoc2l6ZSwgMSwgVUlOVFBUUl9NQVgpOworICByZXR1cm4gc2NtX2Zyb21fdW5zaWdu ZWRfaW50ZWdlciAoc2NtX2loYXNoIChrZXksIHN6KSk7CiB9CiAjdW5kZWYgRlVOQ19OQU1FCiAK ZGlmZiAtLWdpdCBhL2xpYmd1aWxlL2hhc2guaCBiL2xpYmd1aWxlL2hhc2guaAppbmRleCAwZTgy YjRhZmMuLjU4MGQyY2U5MyAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvaGFzaC5oCisrKyBiL2xpYmd1 aWxlL2hhc2guaApAQCAtMjYsMTkgKzI2LDE5IEBACiAKIAwKIAotU0NNX0lOVEVSTkFMIHVuc2ln bmVkIGxvbmcgc2NtX2lfbG9jYWxlX3N0cmluZ19oYXNoIChjb25zdCBjaGFyICpzdHIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBs ZW4pOwotU0NNX0lOVEVSTkFMIHVuc2lnbmVkIGxvbmcgc2NtX2lfbGF0aW4xX3N0cmluZ19oYXNo IChjb25zdCAgY2hhciAqc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKTsKLVNDTV9JTlRFUk5BTCB1bnNpZ25lZCBsb25n IHNjbV9pX3V0Zjhfc3RyaW5nX2hhc2ggKGNvbnN0IGNoYXIgKnN0ciwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwotCi1TQ01f SU5URVJOQUwgdW5zaWduZWQgbG9uZyBzY21faV9zdHJpbmdfaGFzaCAoU0NNIHN0cik7Ci1TQ01f QVBJIHVuc2lnbmVkIGxvbmcgc2NtX2loYXNocSAoU0NNIG9iaiwgdW5zaWduZWQgbG9uZyBuKTsK K1NDTV9JTlRFUk5BTCB1aW50cHRyX3Qgc2NtX2lfbG9jYWxlX3N0cmluZ19oYXNoIChjb25zdCBj aGFyICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZV90IGxlbik7CitTQ01fSU5URVJOQUwgdWludHB0cl90IHNjbV9pX2xhdGluMV9zdHJp bmdfaGFzaCAoY29uc3QgIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKTsKK1NDTV9JTlRFUk5BTCB1aW50cHRyX3Qg c2NtX2lfdXRmOF9zdHJpbmdfaGFzaCAoY29uc3QgY2hhciAqc3RyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKTsKKworU0NNX0lOVEVS TkFMIHVpbnRwdHJfdCBzY21faV9zdHJpbmdfaGFzaCAoU0NNIHN0cik7CitTQ01fQVBJIHVpbnRw dHJfdCBzY21faWhhc2hxIChTQ00gb2JqLCB1aW50cHRyX3Qgbik7CiBTQ01fQVBJIFNDTSBzY21f aGFzaHEgKFNDTSBvYmosIFNDTSBuKTsKLVNDTV9BUEkgdW5zaWduZWQgbG9uZyBzY21faWhhc2h2 IChTQ00gb2JqLCB1bnNpZ25lZCBsb25nIG4pOworU0NNX0FQSSB1aW50cHRyX3Qgc2NtX2loYXNo diAoU0NNIG9iaiwgdWludHB0cl90IG4pOwogU0NNX0FQSSBTQ00gc2NtX2hhc2h2IChTQ00gb2Jq LCBTQ00gbik7Ci1TQ01fQVBJIHVuc2lnbmVkIGxvbmcgc2NtX2loYXNoIChTQ00gb2JqLCB1bnNp Z25lZCBsb25nIG4pOworU0NNX0FQSSB1aW50cHRyX3Qgc2NtX2loYXNoIChTQ00gb2JqLCB1aW50 cHRyX3Qgbik7CiBTQ01fQVBJIFNDTSBzY21faGFzaCAoU0NNIG9iaiwgU0NNIG4pOwogU0NNX0lO VEVSTkFMIHZvaWQgc2NtX2luaXRfaGFzaCAodm9pZCk7CiAKZGlmZiAtLWdpdCBhL2xpYmd1aWxl L3N0cmluZ3MuYyBiL2xpYmd1aWxlL3N0cmluZ3MuYwppbmRleCA1ZWViYjMzMDAuLjU3MmM1NTRj MyAxMDA2NDQKLS0tIGEvbGliZ3VpbGUvc3RyaW5ncy5jCisrKyBiL2xpYmd1aWxlL3N0cmluZ3Mu YwpAQCAtNzYwLDcgKzc2MCw3IEBAIHNjbV9pX3N0cmluZ19zZXRfeCAoU0NNIHN0ciwgc2l6ZV90 IHAsIHNjbV90X3djaGFyIGNocikKICNkZWZpbmUgU1lNQk9MX1NUUklOR0JVRiBTQ01fQ0VMTF9P QkpFQ1RfMQogCiBTQ00KLXNjbV9pX21ha2Vfc3ltYm9sIChTQ00gbmFtZSwgc2NtX3RfYml0cyBm bGFncywgdW5zaWduZWQgbG9uZyBoYXNoKQorc2NtX2lfbWFrZV9zeW1ib2wgKFNDTSBuYW1lLCBz Y21fdF9iaXRzIGZsYWdzLCB1aW50cHRyX3QgaGFzaCkKIHsKICAgU0NNIGJ1Ziwgc3ltYm9sOwog ICBzaXplX3Qgc3RhcnQsIGxlbmd0aCA9IFNUUklOR19MRU5HVEggKG5hbWUpOwpkaWZmIC0tZ2l0 IGEvbGliZ3VpbGUvc3RyaW5ncy5oIGIvbGliZ3VpbGUvc3RyaW5ncy5oCmluZGV4IGYyOGVmMzI0 Ni4uYWE2YTYwMWJlIDEwMDY0NAotLS0gYS9saWJndWlsZS9zdHJpbmdzLmgKKysrIGIvbGliZ3Vp bGUvc3RyaW5ncy5oCkBAIC0yNTAsNyArMjUwLDcgQEAgU0NNX0lOVEVSTkFMIHZvaWQgc2NtX2lf c3RyaW5nX3NldF94IChTQ00gc3RyLCBzaXplX3QgcCwgc2NtX3Rfd2NoYXIgY2hyKTsKIC8qIGlu dGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHN5bWJvbHMuICovCiAKIFNDTV9JTlRFUk5BTCBT Q00gc2NtX2lfbWFrZV9zeW1ib2wgKFNDTSBuYW1lLCBzY21fdF9iaXRzIGZsYWdzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBoYXNoKTsKIFNDTV9JTlRF Uk5BTCBjb25zdCBjaGFyICpzY21faV9zeW1ib2xfY2hhcnMgKFNDTSBzeW0pOwogU0NNX0lOVEVS TkFMIGNvbnN0IHNjbV90X3djaGFyICpzY21faV9zeW1ib2xfd2lkZV9jaGFycyAoU0NNIHN5bSk7 CiBTQ01fSU5URVJOQUwgc2l6ZV90IHNjbV9pX3N5bWJvbF9sZW5ndGggKFNDTSBzeW0pOwpkaWZm IC0tZ2l0IGEvbGliZ3VpbGUvc3ltYm9scy5jIGIvbGliZ3VpbGUvc3ltYm9scy5jCmluZGV4IDI5 Mjk0MWU5ZC4uYjNkZGFiNjdkIDEwMDY0NAotLS0gYS9saWJndWlsZS9zeW1ib2xzLmMKKysrIGIv bGliZ3VpbGUvc3ltYm9scy5jCkBAIC03MSw4ICs3MSw4IEBAIFNDTV9ERUZJTkUgKHNjbV9zeXNf c3ltYm9scywgIiVzeW1ib2xzIiwgMCwgMCwgMCwKIC8qIHtTeW1ib2xzfQogICovCiAKLXVuc2ln bmVkIGxvbmcKLXNjbV9pX2hhc2hfc3ltYm9sIChTQ00gb2JqLCB1bnNpZ25lZCBsb25nIG4sIHZv aWQgKmNsb3N1cmUpCit1aW50cHRyX3QKK3NjbV9pX2hhc2hfc3ltYm9sIChTQ00gb2JqLCB1aW50 cHRyX3Qgbiwgdm9pZCAqY2xvc3VyZSkKIHsKICAgcmV0dXJuIHNjbV9pX3N5bWJvbF9oYXNoIChv YmopICUgbjsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgc2NtX2lfaGFzaF9zeW1ib2wgKFNDTSBvYmos IHVuc2lnbmVkIGxvbmcgbiwgdm9pZCAqY2xvc3VyZSkKIHN0cnVjdCBzdHJpbmdfbG9va3VwX2Rh dGEKIHsKICAgU0NNIHN0cmluZzsKLSAgdW5zaWduZWQgbG9uZyBzdHJpbmdfaGFzaDsKKyAgdWlu dHB0cl90IHN0cmluZ19oYXNoOwogfTsKIAogc3RhdGljIGludApAQCAtMTAyLDcgKzEwMiw3IEBA IHN0cmluZ19sb29rdXBfcHJlZGljYXRlX2ZuIChTQ00gc3ltLCB2b2lkICpjbG9zdXJlKQogfQog CiBzdGF0aWMgU0NNCi1sb29rdXBfaW50ZXJuZWRfc3ltYm9sIChTQ00gbmFtZSwgdW5zaWduZWQg bG9uZyByYXdfaGFzaCkKK2xvb2t1cF9pbnRlcm5lZF9zeW1ib2wgKFNDTSBuYW1lLCB1aW50cHRy X3QgcmF3X2hhc2gpCiB7CiAgIHN0cnVjdCBzdHJpbmdfbG9va3VwX2RhdGEgZGF0YTsKIApAQCAt MTE4LDcgKzExOCw3IEBAIHN0cnVjdCBsYXRpbjFfbG9va3VwX2RhdGEKIHsKICAgY29uc3QgY2hh ciAqc3RyOwogICBzaXplX3QgbGVuOwotICB1bnNpZ25lZCBsb25nIHN0cmluZ19oYXNoOworICB1 aW50cHRyX3Qgc3RyaW5nX2hhc2g7CiB9OwogCiBzdGF0aWMgaW50CkBAIC0xMzQsNyArMTM0LDcg QEAgbGF0aW4xX2xvb2t1cF9wcmVkaWNhdGVfZm4gKFNDTSBzeW0sIHZvaWQgKmNsb3N1cmUpCiAK IHN0YXRpYyBTQ00KIGxvb2t1cF9pbnRlcm5lZF9sYXRpbjFfc3ltYm9sIChjb25zdCBjaGFyICpz dHIsIHNpemVfdCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyByYXdfaGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50cHRyX3Qg cmF3X2hhc2gpCiB7CiAgIHN0cnVjdCBsYXRpbjFfbG9va3VwX2RhdGEgZGF0YTsKIApAQCAtMTUx LDcgKzE1MSw3IEBAIHN0cnVjdCB1dGY4X2xvb2t1cF9kYXRhCiB7CiAgIGNvbnN0IGNoYXIgKnN0 cjsKICAgc2l6ZV90IGxlbjsKLSAgdW5zaWduZWQgbG9uZyBzdHJpbmdfaGFzaDsKKyAgdWludHB0 cl90IHN0cmluZ19oYXNoOwogfTsKIAogc3RhdGljIGludApAQCAtMjAxLDcgKzIwMSw3IEBAIHV0 ZjhfbG9va3VwX3ByZWRpY2F0ZV9mbiAoU0NNIHN5bSwgdm9pZCAqY2xvc3VyZSkKIAogc3RhdGlj IFNDTQogbG9va3VwX2ludGVybmVkX3V0Zjhfc3ltYm9sIChjb25zdCBjaGFyICpzdHIsIHNpemVf dCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcmF3X2hh c2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCByYXdfaGFzaCkKIHsK ICAgc3RydWN0IHV0ZjhfbG9va3VwX2RhdGEgZGF0YTsKIApAQCAtMjM5LDcgKzIzOSw3IEBAIHN0 YXRpYyBTQ00KIHNjbV9pX3N0cjJzeW1ib2wgKFNDTSBzdHIpCiB7CiAgIFNDTSBzeW1ib2w7Ci0g IHVuc2lnbmVkIGxvbmcgcmF3X2hhc2ggPSBzY21faV9zdHJpbmdfaGFzaCAoc3RyKTsKKyAgdWlu dHB0cl90IHJhd19oYXNoID0gc2NtX2lfc3RyaW5nX2hhc2ggKHN0cik7CiAKICAgc3ltYm9sID0g bG9va3VwX2ludGVybmVkX3N5bWJvbCAoc3RyLCByYXdfaGFzaCk7CiAgIGlmIChzY21faXNfdHJ1 ZSAoc3ltYm9sKSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBzY21faV9zdHIyc3ltYm9sIChTQ00gc3Ry KQogc3RhdGljIFNDTQogc2NtX2lfc3RyMnVuaW50ZXJuZWRfc3ltYm9sIChTQ00gc3RyKQogewot ICB1bnNpZ25lZCBsb25nIHJhd19oYXNoID0gc2NtX2lfc3RyaW5nX2hhc2ggKHN0cik7CisgIHVp bnRwdHJfdCByYXdfaGFzaCA9IHNjbV9pX3N0cmluZ19oYXNoIChzdHIpOwogCiAgIHJldHVybiBz Y21faV9tYWtlX3N5bWJvbCAoc3RyLCBTQ01fSV9GX1NZTUJPTF9VTklOVEVSTkVELCByYXdfaGFz aCk7CiB9CkBAIC00MTYsNyArNDE2LDcgQEAgc2NtX2Zyb21fbGF0aW4xX3N5bWJvbCAoY29uc3Qg Y2hhciAqc3ltKQogU0NNCiBzY21fZnJvbV9sYXRpbjFfc3ltYm9sbiAoY29uc3QgY2hhciAqc3lt LCBzaXplX3QgbGVuKQogewotICB1bnNpZ25lZCBsb25nIGhhc2g7CisgIHVpbnRwdHJfdCBoYXNo OwogICBTQ00gcmV0OwogCiAgIGlmIChsZW4gPT0gKHNpemVfdCkgLTEpCkBAIC00NDIsNyArNDQy LDcgQEAgc2NtX2Zyb21fdXRmOF9zeW1ib2wgKGNvbnN0IGNoYXIgKnN5bSkKIFNDTQogc2NtX2Zy b21fdXRmOF9zeW1ib2xuIChjb25zdCBjaGFyICpzeW0sIHNpemVfdCBsZW4pCiB7Ci0gIHVuc2ln bmVkIGxvbmcgaGFzaDsKKyAgdWludHB0cl90IGhhc2g7CiAgIFNDTSByZXQ7CiAKICAgaWYgKGxl biA9PSAoc2l6ZV90KSAtMSkKZGlmZiAtLWdpdCBhL2xpYmd1aWxlL3N5bWJvbHMuaCBiL2xpYmd1 aWxlL3N5bWJvbHMuaAppbmRleCBlOGJjMzM0NmYuLmY1NDFmNTEyNiAxMDA2NDQKLS0tIGEvbGli Z3VpbGUvc3ltYm9scy5oCisrKyBiL2xpYmd1aWxlL3N5bWJvbHMuaApAQCAtMzEsNyArMzEsNyBA QAogDAogCiAjZGVmaW5lIHNjbV9pc19zeW1ib2woeCkgICAgICAgICAgICAoU0NNX0hBU19UWVA3 ICh4LCBzY21fdGM3X3N5bWJvbCkpCi0jZGVmaW5lIHNjbV9pX3N5bWJvbF9oYXNoKHgpICAgICAg ICAoKHVuc2lnbmVkIGxvbmcpIFNDTV9DRUxMX1dPUkRfMiAoeCkpCisjZGVmaW5lIHNjbV9pX3N5 bWJvbF9oYXNoKHgpICAgICAgICAoKHVpbnRwdHJfdCkgU0NNX0NFTExfV09SRF8yICh4KSkKICNk ZWZpbmUgc2NtX2lfc3ltYm9sX2lzX2ludGVybmVkKHgpIFwKICAgKCEoU0NNX0NFTExfV09SRF8w ICh4KSAmIFNDTV9JX0ZfU1lNQk9MX1VOSU5URVJORUQpKQogCkBAIC0xMjIsOCArMTIyLDggQEAg U0NNX0FQSSBTQ00gc2NtX3Rha2VfdXRmOF9zeW1ib2xuIChjaGFyICpzeW0sIHNpemVfdCBsZW4p OwogCiAvKiBpbnRlcm5hbCBmdW5jdGlvbnMuICovCiAKLVNDTV9JTlRFUk5BTCB1bnNpZ25lZCBs b25nIHNjbV9pX2hhc2hfc3ltYm9sIChTQ00gb2JqLCB1bnNpZ25lZCBsb25nIG4sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xvc3VyZSk7CitT Q01fSU5URVJOQUwgdWludHB0cl90IHNjbV9pX2hhc2hfc3ltYm9sIChTQ00gb2JqLCB1aW50cHRy X3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNs b3N1cmUpOwogCiBTQ01fSU5URVJOQUwgdm9pZCBzY21fc3ltYm9sc19wcmVoaXN0b3J5ICh2b2lk KTsKIFNDTV9JTlRFUk5BTCB2b2lkIHNjbV9pbml0X3N5bWJvbHMgKHZvaWQpOwotLSAKMi40Mi4w Cgo= --=-U26wHuqRy7CXOhDCXYIa-- --=-dwh58N6PR9EnquGGxaQH Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEXw/5YGpL6H9VOgO2kcnDPSxhrNsFAmU+0AIACgkQkcnDPSxh rNsnBQgAh5N/PhQEyH+DxF+IUQoRl2eagMWcC6MdypsJSoYT/cPkmFdUZcGnX2qu nfr116mQQTyR2GcLF8xshtwVezpshm9bFXkrqIuxtF8NgnoKDQkD+NTBGpQPshCK yt5Fm4eLgeXJ1vhIHb+RVVrl5SeLv+0YpUJGvdnNGIWpI2jai98pqoPw9ZAnmx57 Syvper/6YFx9FpjEbXnfdxNMB0IRWn7lA0c2KTWC3bcYRPE6mcPlLzWMRyAv9aei Ws8RMq5NsIJ85j0Ep86+UCUT5felNf/laUUrSFEdtExb091XbAWVCJF0ILp0XCPj wFb8umWVvOLlzg6YLtIURiVy2tgKOA== =sb1y -----END PGP SIGNATURE----- --=-dwh58N6PR9EnquGGxaQH--