X-Authentication-Warning: delorie.com: mail set sender to djgpp-workers-bounces using -f X-Recipient: djgpp-workers AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=ywT+dEwuRTcveDhfKgwlQLcQwGUQzTKESn3HCp3wGdY=; b=hdrSel3ZnsfzC6iQ8hjpUW6iyyglkkQpYy/eenrrMoRT3720zAJSWymbo0nhoy2O/j hDGkHGIXBqeDbFobmzD1SyWQpQEZjyBIt4q8TZZYy746uzzTsCy51RVoFC9Q7MiRLpE5 wWUH2umBu/wbf/xUcVAgD3qOwtMxFTH0fW3I4= MIME-Version: 1.0 In-Reply-To: <83wrf0chf4.fsf@gnu.org> References: <83zkjwcknb DOT fsf AT gnu DOT org> <83wrf0chf4 DOT fsf AT gnu DOT org> Date: Sat, 30 Jul 2011 14:34:00 +0300 Message-ID: Subject: Re: [PATCH] allow 64 bit host tools when cross compiling From: Ozkan Sezer To: djgpp-workers AT delorie DOT com Content-Type: multipart/mixed; boundary=002215b033ae42478d04a947c6f7 Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --002215b033ae42478d04a947c6f7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Sat, Jul 30, 2011 at 11:16 AM, Eli Zaretskii wrote: >> Date: Sat, 30 Jul 2011 10:17:43 +0300 >> From: Ozkan Sezer >> >> > =A0=A0IOW, what is the purpose of this compilation? >> >> To compile the djgpp runtime library > > Is dxegen required to be compiled and run natively for that? =A0(Sorry, Yes, it is. > I have long forgotten the details of the DJGPP build process.) =A0If it > needs to be compiled and run natively, then I understand the need for > the changes; otherwise I do not. > Why do you think I cared and posted a patch here anyway??! (Can someone who actually does compile his own stuff confirm this to him?) >> > It is mostly okay, but I don't understand why you went so far and >> > deep, and changed also the types that don't need to be changed at all. >> > For example, neither `short' nor `int' have different size on any >> > known machine that can be ever supported by DJGPP, so why change them >> > at all? >> >> For consistency, > > We don't need such a consistency in this case. =A0Please understand that > if you want to be consistent, you will have to make these changes all > the way through all the DJGPP library and the headers, because GCC > will complain about type mismatches if you use intNN_t where the > prototype says `int' or `long'. =A0(Right now, these complaints are only > emitted under certain non-default compiler switches, but with the > apparent attitude of the GCC developers that brings more and more of > such warnings into the default behavior, a day will come when the > switches we use in compiling the DJGPP library will emit these > warnings, and will then be an annoyance.) > > Therefore, any use of a different type has potentially bad and > far-reaching effects, and we should strive to limit that to the > absolute minimum. =A0This minimum is currently only the `long' and > `unsigned long' types, so please limit the changes to these two only. > I would even use a macro instead of a stdint.h type, like this: > > =A0#if _LP64 > =A0# define LONG int > =A0# define ULONG unsigned int > =A0#else > =A0# define LONG long > =A0# define ULONG unsigned long > =A0#endf > > This will keep the x86_64 compiler happy, but OTOH will not change > what the 32-bit compiler sees at all, thus avoiding various warnings > about type mismatch. I dislike such hacks when we have a legitimate solution of stdint.h, but won't argue much about it. Did a similar change in the attached patch. > >> >> - =A0 =A0 =A0 =A0fwrite(&relocs[i].r_vaddr, 1, sizeof(long), outf); >> >> + =A0 =A0 =A0 =A0fwrite(&relocs[i].r_vaddr, 1, sizeof(int32_t), outf)= ; >> > >> > This (and other similar) issue are better solved by using the variable >> > in question, not its type. =A0Like this: >> > >> > =A0 =A0fwrite(&relocs[i].r_vaddr, 1, sizeof(relocs[i].r_vaddr), outf); >> >> That particular one (and its similars) I can do, if the changes >> are acceptable > > They are acceptable, with the above comments taken care of. > > Thanks for working on this. New patch attached. There are other hostbin/*.exe which would need caring but they don't stop the important parts of the build process. -- O.S. --002215b033ae42478d04a947c6f7 Content-Type: application/octet-stream; name="64b.patch" Content-Disposition: attachment; filename="64b.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqqi5ggi0 SW5kZXg6IGluY2x1ZGUvY29mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpn cHAvaW5jbHVkZS9jb2ZmLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC11IC1wIC1y MS4yIGNvZmYuaAotLS0gaW5jbHVkZS9jb2ZmLmgJNCBGZWIgMjAwMyAyMDoyMjo1NSAtMDAwMAkx LjIKKysrIGluY2x1ZGUvY29mZi5oCTMwIEp1bCAyMDExIDExOjMwOjMyIC0wMDAwCkBAIC0zLDYg KzMsMTggQEAKICNpZm5kZWYgX19kal9pbmNsdWRlX2NvZmZfaF8KICNkZWZpbmUgX19kal9pbmNs dWRlX2NvZmZfaF8KIAorLyogdGhlIGZvbGxvd2luZyBhcmUgbmVlZGVkIHdoZW4gY3Jvc3MgY29t cGlsaW5nIGhvc3RiaW4gZXhlcyAqLworI2lmbmRlZiBfREpfREVGSU5FRF9OQVRJVkVfVFlQRVMK KyNkZWZpbmUgX0RKX0RFRklORURfTkFUSVZFX1RZUEVTCisjaWZkZWYgIF9MUDY0CQkJLyogTm90 ZTogd2luNjQgaXMgTExQNjQgKi8KKyMgZGVmaW5lIExPTkczMiAgaW50CisjIGRlZmluZSBVTE9O RzMyIHVuc2lnbmVkIGludAorI2Vsc2UKKyMgZGVmaW5lIExPTkczMiAgbG9uZworIyBkZWZpbmUg VUxPTkczMiB1bnNpZ25lZCBsb25nCisjZW5kaWYKKyNlbmRpZiAvKiBfREVGSU5FRF9OQVRJVkVf VFlQRVMgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAt MjUsOSArMzcsOSBAQCBleHRlcm4gIkMiIHsKIHN0cnVjdCBleHRlcm5hbF9maWxlaGRyIHsKIAl1 bnNpZ25lZCBzaG9ydCBmX21hZ2ljOwkJLyogbWFnaWMgbnVtYmVyCQkJKi8KIAl1bnNpZ25lZCBz aG9ydCBmX25zY25zOwkJLyogbnVtYmVyIG9mIHNlY3Rpb25zCQkqLwotCXVuc2lnbmVkIGxvbmcg Zl90aW1kYXQ7CS8qIHRpbWUgJiBkYXRlIHN0YW1wCQkqLwotCXVuc2lnbmVkIGxvbmcgZl9zeW1w dHI7CS8qIGZpbGUgcG9pbnRlciB0byBzeW10YWIJKi8KLQl1bnNpZ25lZCBsb25nIGZfbnN5bXM7 CQkvKiBudW1iZXIgb2Ygc3ltdGFiIGVudHJpZXMJKi8KKwlVTE9ORzMyICAgICAgICBmX3RpbWRh dDsJLyogdGltZSAmIGRhdGUgc3RhbXAJCSovCisJVUxPTkczMiAgICAgICAgZl9zeW1wdHI7CS8q IGZpbGUgcG9pbnRlciB0byBzeW10YWIJKi8KKwlVTE9ORzMyICAgICAgICBmX25zeW1zOwkJLyog bnVtYmVyIG9mIHN5bXRhYiBlbnRyaWVzCSovCiAJdW5zaWduZWQgc2hvcnQgZl9vcHRoZHI7CS8q IHNpemVvZihvcHRpb25hbCBoZHIpCQkqLwogCXVuc2lnbmVkIHNob3J0IGZfZmxhZ3M7CQkvKiBm bGFncwkJCSovCiB9OwpAQCAtNjIsMjcgKzc0LDI3IEBAIHN0cnVjdCBleHRlcm5hbF9maWxlaGRy IHsKIAogdHlwZWRlZiBzdHJ1Y3QgCiB7Ci0gIHVuc2lnbmVkIHNob3J0IAltYWdpYzsJCS8qIHR5 cGUgb2YgZmlsZQkJCQkqLworICB1bnNpZ25lZCBzaG9ydAltYWdpYzsJCS8qIHR5cGUgb2YgZmls ZQkJCQkqLwogICB1bnNpZ25lZCBzaG9ydAl2c3RhbXA7CQkvKiB2ZXJzaW9uIHN0YW1wCQkJKi8K LSAgdW5zaWduZWQgbG9uZwl0c2l6ZTsJCS8qIHRleHQgc2l6ZSBpbiBieXRlcywgcGFkZGVkIHRv IEZXIGJkcnkqLwotICB1bnNpZ25lZCBsb25nCWRzaXplOwkJLyogaW5pdGlhbGl6ZWQgZGF0YSAi ICAiCQkqLwotICB1bnNpZ25lZCBsb25nCWJzaXplOwkJLyogdW5pbml0aWFsaXplZCBkYXRhICIg ICAiCQkqLwotICB1bnNpZ25lZCBsb25nCWVudHJ5OwkJLyogZW50cnkgcHQuCQkJCSovCi0gIHVu c2lnbmVkIGxvbmcgCXRleHRfc3RhcnQ7CS8qIGJhc2Ugb2YgdGV4dCB1c2VkIGZvciB0aGlzIGZp bGUgKi8KLSAgdW5zaWduZWQgbG9uZyAJZGF0YV9zdGFydDsJLyogYmFzZSBvZiBkYXRhIHVzZWQg Zm9yIHRoaXMgZmlsZSAqLworICBVTE9ORzMyCQl0c2l6ZTsJCS8qIHRleHQgc2l6ZSBpbiBieXRl cywgcGFkZGVkIHRvIEZXIGJkcnkqLworICBVTE9ORzMyCQlkc2l6ZTsJCS8qIGluaXRpYWxpemVk IGRhdGEgIiAgIgkJKi8KKyAgVUxPTkczMgkJYnNpemU7CQkvKiB1bmluaXRpYWxpemVkIGRhdGEg IiAgICIJCSovCisgIFVMT05HMzIJCWVudHJ5OwkJLyogZW50cnkgcHQuCQkJCSovCisgIFVMT05H MzIJCXRleHRfc3RhcnQ7CS8qIGJhc2Ugb2YgdGV4dCB1c2VkIGZvciB0aGlzIGZpbGUgKi8KKyAg VUxPTkczMgkJZGF0YV9zdGFydDsJLyogYmFzZSBvZiBkYXRhIHVzZWQgZm9yIHRoaXMgZmlsZSAq LwogfQogQU9VVEhEUjsKIAogCiB0eXBlZGVmIHN0cnVjdCBnbnVfYW91dCB7Ci0JdW5zaWduZWQg bG9uZyBpbmZvOwotCXVuc2lnbmVkIGxvbmcgdHNpemU7Ci0JdW5zaWduZWQgbG9uZyBkc2l6ZTsK LQl1bnNpZ25lZCBsb25nIGJzaXplOwotCXVuc2lnbmVkIGxvbmcgc3ltc2l6ZTsKLQl1bnNpZ25l ZCBsb25nIGVudHJ5OwotCXVuc2lnbmVkIGxvbmcgdHhyZWw7Ci0JdW5zaWduZWQgbG9uZyBkdHJl bDsKKwlVTE9ORzMyIGluZm87CisJVUxPTkczMiB0c2l6ZTsKKwlVTE9ORzMyIGRzaXplOworCVVM T05HMzIgYnNpemU7CisJVUxPTkczMiBzeW1zaXplOworCVVMT05HMzIgZW50cnk7CisJVUxPTkcz MiB0eHJlbDsKKwlVTE9ORzMyIGR0cmVsOwogCX0gR05VX0FPVVQ7CiAKICNkZWZpbmUgQU9VVFNa IChzaXplb2YoQU9VVEhEUikpCkBAIC05OCwxNSArMTEwLDE1IEBAIHR5cGVkZWYgc3RydWN0IGdu dV9hb3V0IHsKIAogc3RydWN0IGV4dGVybmFsX3NjbmhkciB7CiAJY2hhcgkJc19uYW1lWzhdOwkv KiBzZWN0aW9uIG5hbWUJCQkqLwotCXVuc2lnbmVkIGxvbmcJCXNfcGFkZHI7CS8qIHBoeXNpY2Fs IGFkZHJlc3MsIGFsaWFzZWQgc19ubGliICovCi0JdW5zaWduZWQgbG9uZwkJc192YWRkcjsJLyog dmlydHVhbCBhZGRyZXNzCQkqLwotCXVuc2lnbmVkIGxvbmcJCXNfc2l6ZTsJCS8qIHNlY3Rpb24g c2l6ZQkJCSovCi0JdW5zaWduZWQgbG9uZwkJc19zY25wdHI7CS8qIGZpbGUgcHRyIHRvIHJhdyBk YXRhIGZvciBzZWN0aW9uICovCi0JdW5zaWduZWQgbG9uZwkJc19yZWxwdHI7CS8qIGZpbGUgcHRy IHRvIHJlbG9jYXRpb24JKi8KLQl1bnNpZ25lZCBsb25nCQlzX2xubm9wdHI7CS8qIGZpbGUgcHRy IHRvIGxpbmUgbnVtYmVycwkqLworCVVMT05HMzIJCQlzX3BhZGRyOwkvKiBwaHlzaWNhbCBhZGRy ZXNzLCBhbGlhc2VkIHNfbmxpYiAqLworCVVMT05HMzIJCQlzX3ZhZGRyOwkvKiB2aXJ0dWFsIGFk ZHJlc3MJCSovCisJVUxPTkczMgkJCXNfc2l6ZTsJCS8qIHNlY3Rpb24gc2l6ZQkJCSovCisJVUxP TkczMgkJCXNfc2NucHRyOwkvKiBmaWxlIHB0ciB0byByYXcgZGF0YSBmb3Igc2VjdGlvbiAqLwor CVVMT05HMzIJCQlzX3JlbHB0cjsJLyogZmlsZSBwdHIgdG8gcmVsb2NhdGlvbgkqLworCVVMT05H MzIJCQlzX2xubm9wdHI7CS8qIGZpbGUgcHRyIHRvIGxpbmUgbnVtYmVycwkqLwogCXVuc2lnbmVk IHNob3J0CQlzX25yZWxvYzsJLyogbnVtYmVyIG9mIHJlbG9jYXRpb24gZW50cmllcwkqLwogCXVu c2lnbmVkIHNob3J0CQlzX25sbm5vOwkvKiBudW1iZXIgb2YgbGluZSBudW1iZXIgZW50cmllcyov Ci0JdW5zaWduZWQgbG9uZwkJc19mbGFnczsJLyogZmxhZ3MJCQkqLworCVVMT05HMzIJCQlzX2Zs YWdzOwkvKiBmbGFncwkJCSovCiB9OwogCiAjZGVmaW5lCVNDTkhEUglzdHJ1Y3QgZXh0ZXJuYWxf c2NuaGRyCkBAIC0xMzcsMTEgKzE0OSwxMSBAQCBzdHJ1Y3QgZXh0ZXJuYWxfc2NuaGRyIHsKICAq Lwogc3RydWN0IGV4dGVybmFsX2xpbmVubyB7CiAJdW5pb24gewotCQl1bnNpZ25lZCBsb25nIGxf c3ltbmR4IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwkvKiBmdW5jdGlvbiBuYW1lIHN5bWJvbCBp bmRleCwgaWZmIGxfbG5ubyA9PSAwICovCi0JCXVuc2lnbmVkIGxvbmcgbF9wYWRkciBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsJCS8qIChwaHlzaWNhbCkgYWRkcmVzcyBvZiBsaW5lIG51bWJlciAq LworCQlVTE9ORzMyIGxfc3ltbmR4OwkvKiBmdW5jdGlvbiBuYW1lIHN5bWJvbCBpbmRleCwgaWZm IGxfbG5ubyA9PSAwICovCisJCVVMT05HMzIgbF9wYWRkcjsJCS8qIChwaHlzaWNhbCkgYWRkcmVz cyBvZiBsaW5lIG51bWJlciAqLwogCX0gbF9hZGRyOwogCXVuc2lnbmVkIHNob3J0IGxfbG5ubzsJ CQkJCQkvKiBsaW5lIG51bWJlciAqLwotfTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAK IAogI2RlZmluZQlMSU5FTk8Jc3RydWN0IGV4dGVybmFsX2xpbmVubwpAQCAtMTU0LDIxICsxNjYs MjEgQEAgc3RydWN0IGV4dGVybmFsX2xpbmVubyB7CiAjZGVmaW5lIEVfRklMTk1MRU4JMTQJLyog IyBjaGFyYWN0ZXJzIGluIGEgZmlsZSBuYW1lCQkqLwogI2RlZmluZSBFX0RJTU5VTQk0CS8qICMg YXJyYXkgZGltZW5zaW9ucyBpbiBhdXhpbGlhcnkgZW50cnkgKi8KIAotc3RydWN0IGV4dGVybmFs X3N5bWVudCAKK3N0cnVjdCBleHRlcm5hbF9zeW1lbnQKIHsKICAgdW5pb24gewogICAgIGNoYXIg ZV9uYW1lW0VfU1lNTk1MRU5dOwogICAgIHN0cnVjdCB7Ci0gICAgICB1bnNpZ25lZCBsb25nIGVf emVyb2VzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwotICAgICAgdW5zaWduZWQgbG9uZyBlX29m ZnNldCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKyAgICAgIFVMT05HMzIgZV96ZXJvZXM7Cisg ICAgICBVTE9ORzMyIGVfb2Zmc2V0OwogICAgIH0gZTsKICAgfSBlOwotICB1bnNpZ25lZCBsb25n IGVfdmFsdWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisgIFVMT05HMzIgZV92YWx1ZTsKICAg c2hvcnQgZV9zY251bTsKICAgdW5zaWduZWQgc2hvcnQgZV90eXBlOwogICB1bnNpZ25lZCBjaGFy IGVfc2NsYXNzOwogICB1bnNpZ25lZCBjaGFyIGVfbnVtYXV4OwotfTsKK30gX19hdHRyaWJ1dGVf XygocGFja2VkKSk7CiAKICNkZWZpbmUgTl9CVE1BU0sJKDB4ZikKICNkZWZpbmUgTl9UTUFTSwkJ KDB4MzApCkBAIC0xNzcsMTggKzE4OSwxOCBAQCBzdHJ1Y3QgZXh0ZXJuYWxfc3ltZW50IAogICAK IHVuaW9uIGV4dGVybmFsX2F1eGVudCB7CiAJc3RydWN0IHsKLQkJdW5zaWduZWQgbG9uZyB4X3Rh Z25keCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsJCS8qIHN0ciwgdW4sIG9yIGVudW0gdGFnIGlu ZHggKi8KKwkJVUxPTkczMiB4X3RhZ25keDsJCQkJCS8qIHN0ciwgdW4sIG9yIGVudW0gdGFnIGlu ZHggKi8KIAkJdW5pb24gewogCQkJc3RydWN0IHsKIAkJCSAgICB1bnNpZ25lZCBzaG9ydCAgeF9s bm5vOwkJCQkvKiBkZWNsYXJhdGlvbiBsaW5lIG51bWJlciAqLwotCQkJICAgIHVuc2lnbmVkIHNo b3J0ICB4X3NpemU7IAkJCQkvKiBzdHIvdW5pb24vYXJyYXkgc2l6ZSAqLworCQkJICAgIHVuc2ln bmVkIHNob3J0ICB4X3NpemU7CQkJCS8qIHN0ci91bmlvbi9hcnJheSBzaXplICovCiAJCQl9IHhf bG5zejsKLQkJCXVuc2lnbmVkIGxvbmcgeF9mc2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsJ CS8qIHNpemUgb2YgZnVuY3Rpb24gKi8KKwkJCVVMT05HMzIgeF9mc2l6ZTsJCQkJCS8qIHNpemUg b2YgZnVuY3Rpb24gKi8KIAkJfSB4X21pc2M7CiAJCXVuaW9uIHsKIAkJCXN0cnVjdCB7CQkJCQkv KiBpZiBJU0ZDTiwgdGFnLCBvciAuYmIgKi8KLQkJCSAgICB1bnNpZ25lZCBsb25nIHhfbG5ub3B0 ciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsJLyogcHRyIHRvIGZjbiBsaW5lICMgKi8KLQkJCSAg ICB1bnNpZ25lZCBsb25nIHhfZW5kbmR4IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwkvKiBlbnRy eSBuZHggcGFzdCBibG9jayBlbmQgKi8KKwkJCSAgICBVTE9ORzMyIHhfbG5ub3B0cjsJCQkJCS8q IHB0ciB0byBmY24gbGluZSAjICovCisJCQkgICAgVUxPTkczMiB4X2VuZG5keDsJCQkJCS8qIGVu dHJ5IG5keCBwYXN0IGJsb2NrIGVuZCAqLwogCQkJfSB4X2ZjbjsKIAkJCXN0cnVjdCB7CQkJCQkv KiBpZiBJU0FSWSwgdXAgdG8gNCBkaW1lbi4gKi8KIAkJCSAgICB1bnNpZ25lZCBzaG9ydCB4X2Rp bWVuW0VfRElNTlVNXTsKQEAgLTIwMCwyNSArMjEyLDI0IEBAIHVuaW9uIGV4dGVybmFsX2F1eGVu dCB7CiAJdW5pb24gewogCQljaGFyIHhfZm5hbWVbRV9GSUxOTUxFTl07CiAJCXN0cnVjdCB7Ci0J CQl1bnNpZ25lZCBsb25nIHhfemVyb2VzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwotCQkJdW5z aWduZWQgbG9uZyB4X29mZnNldCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKwkJCVVMT05HMzIg eF96ZXJvZXM7CisJCQlVTE9ORzMyIHhfb2Zmc2V0OwogCQl9IHhfbjsKIAl9IHhfZmlsZTsKIAog CXN0cnVjdCB7Ci0JCXVuc2lnbmVkIGxvbmcgeF9zY25sZW4gX19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CQkvKiBzZWN0aW9uIGxlbmd0aCAqLworCQlVTE9ORzMyIHhfc2NubGVuOwkJCQkJLyogc2Vj dGlvbiBsZW5ndGggKi8KIAkJdW5zaWduZWQgc2hvcnQgeF9ucmVsb2M7CQkJCQkvKiAjIHJlbG9j YXRpb24gZW50cmllcyAqLwogCQl1bnNpZ25lZCBzaG9ydCB4X25saW5ubzsJCQkJCS8qICMgbGlu ZSBudW1iZXJzICovCiAJfSB4X3NjbjsKIAotICAgICAgICBzdHJ1Y3QgewotCQl1bnNpZ25lZCBs b25nIHhfdHZmaWxsIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwkJLyogdHYgZmlsbCB2YWx1ZSAq LworCXN0cnVjdCB7CisJCVVMT05HMzIgeF90dmZpbGw7CQkJCQkvKiB0diBmaWxsIHZhbHVlICov CiAJCXVuc2lnbmVkIHNob3J0IHhfdHZsZW47CQkJCQkJLyogbGVuZ3RoIG9mIC50diAqLwogCQl1 bnNpZ25lZCBzaG9ydCB4X3R2cmFuWzJdOwkJCQkJLyogdHYgcmFuZ2UgKi8KIAl9IHhfdHY7CQkv KiBpbmZvIGFib3V0IC50diBzZWN0aW9uIChpbiBhdXhlbnQgb2Ygc3ltYm9sIC50dikpICovCiAK LQotfTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKICNkZWZpbmUJU1lNRU5UCXN0cnVj dCBleHRlcm5hbF9zeW1lbnQKICNkZWZpbmUJU1lNRVNaCXNpemVvZihTWU1FTlQpCkBAIC0zMTMs MTAgKzMyNCwxMCBAQCB1bmlvbiBleHRlcm5hbF9hdXhlbnQgewogCiAKIHN0cnVjdCBleHRlcm5h bF9yZWxvYyB7Ci0gIHVuc2lnbmVkIGxvbmcgcl92YWRkciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKLSAgdW5zaWduZWQgbG9uZyByX3N5bW5keCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKyAg VUxPTkczMiAgICAgICByX3ZhZGRyOworICBVTE9ORzMyICAgICAgcl9zeW1uZHg7CiAgIHVuc2ln bmVkIHNob3J0IHJfdHlwZTsKLX07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogCiAKICNk ZWZpbmUgUkVMT0Mgc3RydWN0IGV4dGVybmFsX3JlbG9jCkluZGV4OiBpbmNsdWRlL3N5cy9keGUu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2RqZ3BwL2RqZ3BwL2luY2x1ZGUvc3lzL2R4ZS5o LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtdSAtcCAtcjEuNiBkeGUuaAotLS0gaW5j bHVkZS9zeXMvZHhlLmgJOSBBcHIgMjAwOSAxODoyNjo0NiAtMDAwMAkxLjYKKysrIGluY2x1ZGUv c3lzL2R4ZS5oCTMwIEp1bCAyMDExIDExOjMwOjMyIC0wMDAwCkBAIC05LDExICs5LDI0IEBACiAj aWZuZGVmIF9fZGpfaW5jbHVkZV9keGVfaF8KICNkZWZpbmUgX19kal9pbmNsdWRlX2R4ZV9oXwog CisvKiB0aGUgZm9sbG93aW5nIGFyZSBuZWVkZWQgd2hlbiBjcm9zcyBjb21waWxpbmcgaG9zdGJp biBleGVzICovCisjaWZuZGVmIF9ESl9ERUZJTkVEX05BVElWRV9UWVBFUworI2RlZmluZSBfREpf REVGSU5FRF9OQVRJVkVfVFlQRVMKKyNpZmRlZiAgX0xQNjQJCQkvKiBOb3RlOiB3aW42NCBpcyBM TFA2NCAqLworIyBkZWZpbmUgTE9ORzMyICBpbnQKKyMgZGVmaW5lIFVMT05HMzIgdW5zaWduZWQg aW50CisjZWxzZQorIyBkZWZpbmUgTE9ORzMyICBsb25nCisjIGRlZmluZSBVTE9ORzMyIHVuc2ln bmVkIGxvbmcKKyNlbmRpZgorI2VuZGlmIC8qIF9ERUZJTkVEX05BVElWRV9UWVBFUyAqLworCisK IHR5cGVkZWYgc3RydWN0IHsKLSAgbG9uZyBtYWdpYzsKLSAgbG9uZyBzeW1ib2xfb2Zmc2V0Owot ICBsb25nIGVsZW1lbnRfc2l6ZTsKLSAgbG9uZyBucmVsb2NzOworICBMT05HMzIgbWFnaWM7Cisg IExPTkczMiBzeW1ib2xfb2Zmc2V0OworICBMT05HMzIgZWxlbWVudF9zaXplOworICBMT05HMzIg bnJlbG9jczsKIH0gZHhlX2hlYWRlcjsKIAogI2RlZmluZSBEWEVfTUFHSUMgMHgzMTQ1NTg0NApA QCAtODAsMzggKzkzLDM4IEBAIHZvaWQgKl9keGVfbG9hZCAoY2hhciAqZmlsZW5hbWUpOwogdHlw ZWRlZiBzdHJ1Y3QgewogICAgICAgICAvKiBEWEUxIGhlYWRlciAqLwogCi0gICAgICAgIGxvbmcg bWFnaWM7Ci0gICAgICAgIGxvbmcgc3ltYm9sX29mZnNldDsKLSAgICAgICAgbG9uZyBlbGVtZW50 X3NpemU7Ci0gICAgICAgIGxvbmcgbnJlbG9jczsKKyAgICAgICAgTE9ORzMyIG1hZ2ljOworICAg ICAgICBMT05HMzIgc3ltYm9sX29mZnNldDsKKyAgICAgICAgTE9ORzMyIGVsZW1lbnRfc2l6ZTsK KyAgICAgICAgTE9ORzMyIG5yZWxvY3M7CiAKICAgICAgICAgLyogZXh0ZW5kZWQgaGVhZGVyICov CiAKLSAgICAgICAgbG9uZyBoZHJfc2l6ZTsJCS8qIEhlYWRlciBzaXplIGluIGJ5dGVzICovCisg ICAgICAgIExPTkczMiBoZHJfc2l6ZTsJLyogSGVhZGVyIHNpemUgaW4gYnl0ZXMgKi8KIAogICAg ICAgICBjaGFyIG1ham9yOwogICAgICAgICBjaGFyIG1pbm9yOwogICAgICAgICBzaG9ydCBmbGFn czsJCS8qIENhcGFiaWxpdGllcyAqLwogCi0gICAgICAgIGxvbmcgcmVsb2NfdGFibGU7CS8qIEZp bGUgb2Zmc2V0IHRvIHJlbG9jYXRpb24gdGFibGUgKi8KKyAgICAgICAgTE9ORzMyIHJlbG9jX3Rh YmxlOwkvKiBGaWxlIG9mZnNldCB0byByZWxvY2F0aW9uIHRhYmxlICovCiAKLSAgICAgICAgbG9u ZyBuX2V4cF9zeW1zOwkvKiBOdW1iZXIgb2YgZXhwb3J0ZWQgc3ltYm9scyAqLwotICAgICAgICBs b25nIGV4cF90YWJsZTsJCS8qIEZpbGUgb2Zmc2V0IHRvIGV4cG9ydGVkIHN5bWJvbHMgdGFibGUg Ki8KLSAgICAgICAgbG9uZyBleHBfc2l6ZTsKKyAgICAgICAgTE9ORzMyIG5fZXhwX3N5bXM7CS8q IE51bWJlciBvZiBleHBvcnRlZCBzeW1ib2xzICovCisgICAgICAgIExPTkczMiBleHBfdGFibGU7 CS8qIEZpbGUgb2Zmc2V0IHRvIGV4cG9ydGVkIHN5bWJvbHMgdGFibGUgKi8KKyAgICAgICAgTE9O RzMyIGV4cF9zaXplOwogCi0gICAgICAgIGxvbmcgbl9kZXBzOwkJLyogTnVtYmVyIG9mIGRlcGVu ZGVuY2llcyAqLwotICAgICAgICBsb25nIGRlcF90YWJsZTsJCS8qIEZpbGUgb2Zmc2V0IHRvIGRl cGVuZGVuY3kgdGFibGUgKi8KLSAgICAgICAgbG9uZyBkZXBfc2l6ZTsKKyAgICAgICAgTE9ORzMy IG5fZGVwczsJCS8qIE51bWJlciBvZiBkZXBlbmRlbmNpZXMgKi8KKyAgICAgICAgTE9ORzMyIGRl cF90YWJsZTsJLyogRmlsZSBvZmZzZXQgdG8gZGVwZW5kZW5jeSB0YWJsZSAqLworICAgICAgICBM T05HMzIgZGVwX3NpemU7CiAKLSAgICAgICAgbG9uZyBuX3VucmVzX3N5bXM7CS8qIE51bWJlciBv ZiB1bnJlc29sdmVkIHN5bWJvbHMgKi8KLSAgICAgICAgbG9uZyB1bnJlc190YWJsZTsJLyogRmls ZSBvZmZzZXQgdG8gdW5yZXNvbHZlZCB0YWJsZSAqLwotICAgICAgICBsb25nIHVucmVzX3NpemU7 CisgICAgICAgIExPTkczMiBuX3VucmVzX3N5bXM7CS8qIE51bWJlciBvZiB1bnJlc29sdmVkIHN5 bWJvbHMgKi8KKyAgICAgICAgTE9ORzMyIHVucmVzX3RhYmxlOwkvKiBGaWxlIG9mZnNldCB0byB1 bnJlc29sdmVkIHRhYmxlICovCisgICAgICAgIExPTkczMiB1bnJlc19zaXplOwogCi0gICAgICAg IGxvbmcgc2VjX3NpemU7CQkvKiBTaXplIG9mIGNvbWJpbmVkIGNvZGUrZGF0YStic3Mgc2VjdGlv biAqLwotICAgICAgICBsb25nIHNlY19mX3NpemU7CS8qIFBoeXNpY2FsIHNlY3Rpb24gc2l6ZSAo dGhlIHJlc3QgaXMgemVyb2VkKSAqLworICAgICAgICBMT05HMzIgc2VjX3NpemU7CS8qIFNpemUg b2YgY29tYmluZWQgY29kZStkYXRhK2JzcyBzZWN0aW9uICovCisgICAgICAgIExPTkczMiBzZWNf Zl9zaXplOwkvKiBQaHlzaWNhbCBzZWN0aW9uIHNpemUgKHRoZSByZXN0IGlzIHplcm9lZCkgKi8K IAotICAgICAgICBsb25nIF9pbml0OwotICAgICAgICBsb25nIF9maW5pOworICAgICAgICBMT05H MzIgX2luaXQ7CisgICAgICAgIExPTkczMiBfZmluaTsKIH0gX19hdHRyaWJ1dGVfXygocGFja2Vk KSkgZHhlM19oZWFkZXI7CiAKIHR5cGVkZWYgc3RydWN0CkluZGV4OiBzcmMvZGphc20vZGphc20u eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2RqZ3BwL2RqZ3BwL3NyYy9kamFzbS9kamFzbS55 LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlmZiAtdSAtcCAtcjEuOCBkamFzbS55Ci0tLSBz cmMvZGphc20vZGphc20ueQkyOSBBdWcgMjAwOCAwODozMzo0NSAtMDAwMAkxLjgKKysrIHNyYy9k amFzbS9kamFzbS55CTMwIEp1bCAyMDExIDExOjMwOjM0IC0wMDAwCkBAIC0xNzEsNyArMTcxLDcg QEAgaW50IHl5bGV4MSh2b2lkKTsKIHZvaWQgZW1pdCh2b2lkICp2LCBpbnQgbGVuKTsKIHZvaWQg ZW1pdGIoaW50IGIpOwogdm9pZCBlbWl0dyhpbnQgdyk7Ci12b2lkIGVtaXRkKGxvbmcgZCk7Cit2 b2lkIGVtaXRkKExPTkczMiBkKTsKIHZvaWQgZW1pdHMoU3ltYm9sICpzLCBpbnQgb2Zmc2V0LCBp bnQgcmVsKTsKIHZvaWQgbW9kcm0oaW50IG1vZCwgaW50IHJlZywgaW50IHJtKTsKIHZvaWQgcmVn KGludCByZWcpOwpAQCAtMTkwMSw3ICsxOTAxLDcgQEAgU3ltYm9sICpzZXRfc3ltYm9sKFN5bWJv bCAqcywgaW50IHZhbHVlKQogICAgIHN3aXRjaCAocC0+cmVsKQogICAgIHsKICAgICBjYXNlIFJF TF9hYnMzMjoKLSAgICAgIG8gPSAoc2lnbmVkIGxvbmcpKGNwWzBdIHwgKGNwWzFdIDw8IDgpIHwg KGNwWzJdIDw8IDE2KSB8IChjcFszXSA8PCAyNCkpOworICAgICAgbyA9IChMT05HMzIpKGNwWzBd IHwgKGNwWzFdIDw8IDgpIHwgKGNwWzJdIDw8IDE2KSB8IChjcFszXSA8PCAyNCkpOwogICAgICAg YnJlYWs7CiAgICAgY2FzZSBSRUxfYWJzOgogICAgIGNhc2UgUkVMXzE2OgpAQCAtMjA0NSw3ICsy MDQ1LDcgQEAgdm9pZCBlbWl0dyhpbnQgdykKICAgZW1pdGIodz4+OCk7CiB9CiAKLXZvaWQgZW1p dGQobG9uZyBkKQordm9pZCBlbWl0ZChMT05HMzIgZCkKIHsKICAgZW1pdHcoZCk7CiAgIGVtaXR3 KGQ+PjE2KTsKSW5kZXg6IHNyYy9keGUvZHhlM2dlbi5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j dnMvZGpncHAvZGpncHAvc3JjL2R4ZS9keGUzZ2VuLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu NwpkaWZmIC11IC1wIC1yMS43IGR4ZTNnZW4uYwotLS0gc3JjL2R4ZS9keGUzZ2VuLmMJNCBOb3Yg MjAwMyAxNzo0MTo0NiAtMDAwMAkxLjcKKysrIHNyYy9keGUvZHhlM2dlbi5jCTMwIEp1bCAyMDEx IDExOjMwOjM1IC0wMDAwCkBAIC0yMiwxNCArMjIsMTUgQEAKIAogI2lmbmRlZiBEWEVfTEQJCQkv KiBDcm9zcyBjb21waWxlIGxkIG5hbWUvbG9jYXRpb24gKi8KICNkZWZpbmUgRFhFX0xEICJsZCIK LSNpbmNsdWRlIDxzeXMvZHhlLmg+Ci0jaW5jbHVkZSA8Y29mZi5oPgogI2Vsc2UKIC8qIExpbnV4 IHZpb2xhdGVzIFBPU0lYLjEgYW5kIGRlZmluZXMgdGhpcywgYnV0IGl0IHNob3VsZG4ndC4gIFdl IGZpeCBpdC4gKi8KICN1bmRlZiBfUE9TSVhfU09VUkNFCisjZW5kaWYKKworLyogQWx3YXlzIGlu Y2x1ZGUgbG9jYWwgY29waWVzIG9mIHN5cy9keGUuaCBhbmQgY29mZi5oIGJlY2F1c2Ugb2YKKyAq IE5BVElWRV9UWVBFUyBzdHVmZi4gKi8KICNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL3N5cy9keGUu aCIKICNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL2NvZmYuaCIKLSNlbmRpZgogCiAjZGVmaW5lIFZF UlNJT04gIjEuMCIKIApAQCAtMzcsNyArMzgsNyBAQAogI2RlZmluZSBURU1QX09fRklMRQlURU1Q X0JBU0UiLm8iCiAjZGVmaW5lIFRFTVBfU19GSUxFCVRFTVBfQkFTRSIucyIKIAotI2RlZmluZSBW QUxJRF9SRUxPQyhyKSAoKHIucl90eXBlICE9IFJFTE9DX1JFTDMyKSAmJiAoci5yX3N5bW5keCAh PSAtMVVMKSkKKyNkZWZpbmUgVkFMSURfUkVMT0MocikgKChyLnJfdHlwZSAhPSBSRUxPQ19SRUwz MikgJiYgKHIucl9zeW1uZHggIT0gMHhGRkZGRkZGRikpCiAKIHR5cGVkZWYgZW51bSB7CiAgICAg ICAgIEZBTFNFID0gMCwKQEAgLTM5NCw3ICszOTUsNyBAQCBzdGF0aWMgRklMRSAqcnVuX2xkIChj b25zdCBjaGFyICphcmd2W10sCiAKICBpZiAoIW9wdC5sZWdhY3kpIHsKICAgICB1bnNpZ25lZCBp OwotICAgIHNpemVfdCBzdHN6OworICAgIFVMT05HMzIgc3RzejsKICAgICBTWU1FTlQgKnN5bTsK ICAgICBjaGFyICpzdHJpbmdzOwogICAgIGxvbmcgZnJhbWVfYmVnaW4gPSAtMSwgZnJhbWVfZW5k ID0gLTE7CkBAIC01MTIsNyArNTEzLDcgQEAgc3RhdGljIGludCB3cml0ZV9keGUgKEZJTEUgKmlu ZiwgRklMRSAqbwogIHVuc2lnbmVkIGludCBzdGFydGJzczsKICBjaGFyICpkYXRhOwogIFNZTUVO VCAqc3ltOwotIHNpemVfdCBzdHN6OworIFVMT05HMzIgc3RzejsKICBjaGFyICpzdHJpbmdzOwog IFJFTE9DICpyZWxvY3M7CiAgdW5zaWduZWQgaSwgaiwgZXJyY291bnQ7CkBAIC02MTIsNyArNjEz LDcgQEAgc3RhdGljIGludCB3cml0ZV9keGUgKEZJTEUgKmluZiwgRklMRSAqbwogCiAgICAgIGlm IChzeW1baV0uZV9zY251bSA9PSAwKSB7CiAgICAgICAgIHNob3J0ICpjb3VudDsKLSAgICAgICAg bG9uZyAqcmVsX3JlbG9jcywgKmFic19yZWxvY3M7CisgICAgICAgIExPTkczMiAqcmVsX3JlbG9j cywgKmFic19yZWxvY3M7CiAgICAgICAgIGludCBuX2Fic19yZWxvY3MgPSAwLCBuX3JlbF9yZWxv Y3MgPSAwOwogCiAgICAgICAgIC8qIHVucmVzb2x2ZWQgc3ltYm9sICovCkBAIC02NDgsNyArNjQ5 LDcgQEAgc3RhdGljIGludCB3cml0ZV9keGUgKEZJTEUgKmluZiwgRklMRSAqbwogICAgICAgICAg ICBleGl0KC00KTsKICAgICAgICAgfQogCi0gICAgICAgIG5ld3NpemUgPSB1bnJlc19zaXplICsg MiAqIHNpemVvZihzaG9ydCkgKyBuYW1lbGVuICsgKG5fcmVsX3JlbG9jcyArIG5fYWJzX3JlbG9j cykgKiBzaXplb2YobG9uZyk7CisgICAgICAgIG5ld3NpemUgPSB1bnJlc19zaXplICsgMiAqIHNp emVvZihzaG9ydCkgKyBuYW1lbGVuICsgKG5fcmVsX3JlbG9jcyArIG5fYWJzX3JlbG9jcykgKiBz aXplb2YoTE9ORzMyKTsKICAgICAgICAgaWYgKG5ld3NpemUgPiB1bnJlc19tYXhzaXplKSB7CiAg ICAgICAgICAgIGludCBhZGRsZW49bmV3c2l6ZSAtIHVucmVzX21heHNpemUgKyAzMTc7CiAgICAg ICAgICAgIGlmICghKChhZGRsZW4rdW5yZXNfbWF4c2l6ZSkgJiAxKSkgewpAQCAtNjY3LDE1ICs2 NjgsMTUgQEAgc3RhdGljIGludCB3cml0ZV9keGUgKEZJTEUgKmluZiwgRklMRSAqbwogICAgICAg ICBjb3VudFswXSA9IG5fcmVsX3JlbG9jczsKICAgICAgICAgY291bnRbMV0gPSBuX2Fic19yZWxv Y3M7CiAKLSAgICAgICAgcmVsX3JlbG9jcyA9IChsb25nICopKHVucmVzX3RhYmxlICsgdW5yZXNf c2l6ZSArIDIgKiBzaXplb2Yoc2hvcnQpICsgbmFtZWxlbik7Ci0gICAgICAgIGFic19yZWxvY3Mg PSAobG9uZyAqKSh1bnJlc190YWJsZSArIG5ld3NpemUpOworICAgICAgICByZWxfcmVsb2NzID0g KExPTkczMiAqKSh1bnJlc190YWJsZSArIHVucmVzX3NpemUgKyAyICogc2l6ZW9mKHNob3J0KSAr IG5hbWVsZW4pOworICAgICAgICBhYnNfcmVsb2NzID0gKExPTkczMiAqKSh1bnJlc190YWJsZSAr IG5ld3NpemUpOwogCiAgICAgICAgIHVucmVzX3NpemUgPSBuZXdzaXplOwogCiAgICAgICAgIGZv ciAoaiA9IDA7IGogPCBzYy5zX25yZWxvYzsgaisrKSB7CiAgICAgICAgICAgICBpZiAocmVsb2Nz W2pdLnJfc3ltbmR4ID09IGkpIHsKICAgICAgICAgICAgICAgIC8qIG1hcmsgdGhlIHJlbG9jYXRp b24gYXMgcHJvY2Vzc2VkICovCi0gICAgICAgICAgICAgICByZWxvY3Nbal0ucl9zeW1uZHggPSAt MVVMOworICAgICAgICAgICAgICAgcmVsb2NzW2pdLnJfc3ltbmR4ID0gMHhGRkZGRkZGRjsKIAog ICAgICAgICAgICAgICAgaWYgKHJlbG9jc1tqXS5yX3R5cGUgPT0gUkVMT0NfUkVMMzIpIHsKICAg ICAgICAgICAgICAgICAgICpyZWxfcmVsb2NzKysgPSByZWxvY3Nbal0ucl92YWRkcjsKQEAgLTc0 MiwxMyArNzQzLDEzIEBAIHN0YXRpYyBpbnQgd3JpdGVfZHhlIChGSUxFICppbmYsIEZJTEUgKm8K ICAgICAgICAgICAgZXJyY291bnQrKzsKICAgICAgICAgfQogCi0gICAgICAgIG5ld3NpemUgPSBl eHBzeW1fc2l6ZSArIHNpemVvZihsb25nKSArIG5hbWVsZW47CisgICAgICAgIG5ld3NpemUgPSBl eHBzeW1fc2l6ZSArIHNpemVvZihMT05HMzIpICsgbmFtZWxlbjsKICAgICAgICAgaWYgKG5ld3Np emUgPiBleHBzeW1fbWF4c2l6ZSkgewogICAgICAgICAgICBleHBzeW1fdGFibGUgPSAoY2hhciAq KXJlYWxsb2MoZXhwc3ltX3RhYmxlLCBleHBzeW1fbWF4c2l6ZSArPSAxMDI0KTsKICAgICAgICAg fQogCi0gICAgICAgICoobG9uZyAqKShleHBzeW1fdGFibGUgKyBleHBzeW1fc2l6ZSkgPSBzeW1b aV0uZV92YWx1ZTsKLSAgICAgICAgbWVtY3B5KGV4cHN5bV90YWJsZSArIGV4cHN5bV9zaXplICsg c2l6ZW9mKGxvbmcpLCBuYW1lLCBuYW1lbGVuKTsKKyAgICAgICAgKihMT05HMzIgKikoZXhwc3lt X3RhYmxlICsgZXhwc3ltX3NpemUpID0gc3ltW2ldLmVfdmFsdWU7CisgICAgICAgIG1lbWNweShl eHBzeW1fdGFibGUgKyBleHBzeW1fc2l6ZSArIHNpemVvZihMT05HMzIpLCBuYW1lLCBuYW1lbGVu KTsKICAgICAgICAgZXhwc3ltX3NpemUgPSBuZXdzaXplOwogICAgICAgICBpZiAob3B0LnZlcmJv c2UpIHsKICAgICAgICAgICAgcHJpbnRmKCJleHBvcnQ6IGAlcydcbiIsIG5hbWUpOwpAQCAtNzg0 LDcgKzc4NSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfZHhlIChGSUxFICppbmYsIEZJTEUgKm8KICAg ICAgICBleGl0KC00KTsKICAgICB9CiAgICAgZGguZWxlbWVudF9zaXplID0gZGguc2VjX3NpemU7 Ci0gICAgZGguc3ltYm9sX29mZnNldCA9ICoobG9uZyAqKWV4cHN5bV90YWJsZTsKKyAgICBkaC5z eW1ib2xfb2Zmc2V0ID0gKihMT05HMzIgKilleHBzeW1fdGFibGU7CiAgICAgbWVtc2V0KGRhdGEg KyBzdGFydGJzcywgMCwgZGguc2VjX3NpemUgLSBzdGFydGJzcyk7CiAgICAgZndyaXRlKCZkaCwg MSwgc2l6ZW9mKGR4ZV9oZWFkZXIpLCBvdXRmKTsKICAgICAvKiBXcml0ZSB0aGUgYWN0dWFsIGNv ZGUrZGF0YStic3Mgc2VjdGlvbiAqLwpAQCAtODQzLDcgKzg0NCw3IEBAIHN0YXRpYyBpbnQgd3Jp dGVfZHhlIChGSUxFICppbmYsIEZJTEUgKm8KICAvKiBPdXRwdXQgdGhlIHJlbG9jYXRpb25zICov CiAgZm9yIChpID0gMDsgaSA8IHNjLnNfbnJlbG9jOyBpKyspIHsKICAgICAgaWYgKFZBTElEX1JF TE9DKHJlbG9jc1tpXSkpIHsKLSAgICAgICAgZndyaXRlKCZyZWxvY3NbaV0ucl92YWRkciwgMSwg c2l6ZW9mKGxvbmcpLCBvdXRmKTsKKyAgICAgICAgZndyaXRlKCZyZWxvY3NbaV0ucl92YWRkciwg MSwgc2l6ZW9mKHJlbG9jc1swXS5yX3ZhZGRyKSwgb3V0Zik7CiAgICAgIH0KICB9CiAKQEAgLTk5 Niw3ICs5OTcsNyBAQCBzdGF0aWMgaW50IG1ha2VfaW1wbGliICh2b2lkKQogIC8qIEVtaXQgdGhl IG5hbWVzIG9mIGFsbCBpbXBvcnRlZCBmdW5jdGlvbnMgKi8KICBmcHJpbnRmKGltcGxpYiwgIkxz eW1zOlxuIik7CiAgZm9yIChpID0gMCwgc2NhbiA9IHN5bXRhYjsgaSA8IGRoLm5fZXhwX3N5bXM7 IGkrKykgewotICAgICBzY2FuICs9IHNpemVvZihsb25nKTsKKyAgICAgc2NhbiArPSBzaXplb2Yo TE9ORzMyKTsKICAgICAgZnByaW50ZihpbXBsaWIsICJcdC5hc2NpaVx0XCIlc1xcMFwiXG4iLCBz Y2FuKTsKICAgICAgc2NhbiA9IHN0cmNocihzY2FuLCAwKSArIDE7CiAgfQpAQCAtMTAwNCw3ICsx MDA1LDcgQEAgc3RhdGljIGludCBtYWtlX2ltcGxpYiAodm9pZCkKIAogIC8qIEFuZCBub3cgZW1p dCB0aGUgc3R1YnMgKi8KICBmb3IgKGkgPSAwLCBzY2FuID0gc3ltdGFiOyBpIDwgZGgubl9leHBf c3ltczsgaSsrKSB7Ci0gICAgIHNjYW4gKz0gc2l6ZW9mKGxvbmcpOworICAgICBzY2FuICs9IHNp emVvZihMT05HMzIpOwogICAgICBmcHJpbnRmKGltcGxpYiwgIlx0LmFsaWduXHQyLDB4Y2NcbiIp OwogICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgIGZwcmludGYoaW1wbGliLCAiTHN0dWJzOlxu Iik7CkBAIC0xMDY2LDcgKzEwNjcsNyBAQCBzdGF0aWMgaW50IHNob3dfc3ltYm9scyAoY29uc3Qg Y2hhciAqZm5hCiAgZmNsb3NlKGYpOwogCiAgZm9yIChpID0gMDsgaSA8IGRoLm5fZXhwX3N5bXM7 IGkrKykgewotICAgICBzY2FuICs9IHNpemVvZihsb25nKTsKKyAgICAgc2NhbiArPSBzaXplb2Yo TE9ORzMyKTsKICAgICAgaWYgKG9wdC5zaG93ZXhwKSB7CiAgICAgICAgIHB1dHMoc2Nhbik7CiAg ICAgIH0KQEAgLTEwODAsNyArMTA4MSw3IEBAIHN0YXRpYyBpbnQgc2hvd19zeW1ib2xzIChjb25z dCBjaGFyICpmbmEKICAgICAgaWYgKG9wdC5zaG93dW5yZXMpIHsKICAgICAgICAgcHV0cyhzY2Fu KTsKICAgICAgfQotICAgICBzY2FuID0gc3RyY2hyKHNjYW4sIDApICsgMSArIChuMSArIG4yKSAq IHNpemVvZihsb25nKTsKKyAgICAgc2NhbiA9IHN0cmNocihzY2FuLCAwKSArIDEgKyAobjEgKyBu MikgKiBzaXplb2YoTE9ORzMyKTsKICB9CiAKICBmb3IgKGkgPSAwOyBpIDwgZGgubl9kZXBzOyBp KyspIHsKSW5kZXg6IHNyYy9keGUvZHhlZ2VuLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9k amdwcC9kamdwcC9zcmMvZHhlL2R4ZWdlbi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlm ZiAtdSAtcCAtcjEuNyBkeGVnZW4uYwotLS0gc3JjL2R4ZS9keGVnZW4uYwkyMCBEZWMgMjAwMSAw NToxMjoxMCAtMDAwMAkxLjcKKysrIHNyYy9keGUvZHhlZ2VuLmMJMzAgSnVsIDIwMTEgMTE6MzA6 MzUgLTAwMDAKQEAgLTI1NCw3ICsyNTQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAgIGZ3cml0ZShkYXRhLCAxLCBzYy5zX3NpemUsIG91dHB1dF9mKTsKICAgZm9yIChpPTA7 IGk8c2Muc19ucmVsb2M7IGkrKykKICAgICBpZigqKGNoYXIgKikoJnJlbG9jc1tpXS5yX3R5cGUp ICE9IDB4MTQpCS8qIERvbid0IGRvIHRoZXNlLCB0aGV5IGFyZSByZWxhdGl2ZSAqLwotICAgICAg ZndyaXRlKCYocmVsb2NzW2ldLnJfdmFkZHIpLCAxLCBzaXplb2YobG9uZyksIG91dHB1dF9mKTsK KyAgICAgIGZ3cml0ZSgmKHJlbG9jc1tpXS5yX3ZhZGRyKSwgMSwgc2l6ZW9mKHJlbG9jc1swXS5y X3ZhZGRyKSwgb3V0cHV0X2YpOwogCiAgIGZjbG9zZShvdXRwdXRfZik7CiAgIHJldHVybiAwOwpJ bmRleDogc3JjL2xpYm0vbWF0aC9jaGV3LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9kamdw cC9kamdwcC9zcmMvbGlibS9tYXRoL2NoZXcuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRp ZmYgLXUgLXAgLXIxLjIgY2hldy5jCi0tLSBzcmMvbGlibS9tYXRoL2NoZXcuYwkxMSBBcHIgMjAw OCAwMTo0Njo0OCAtMDAwMAkxLjIKKysrIHNyYy9saWJtL21hdGgvY2hldy5jCTMwIEp1bCAyMDEx IDExOjMwOjM3IC0wMDAwCkBAIC0yMjEsOCArMjIxLDEzIEBAIHR5cGVkZWYgdm9pZCAoKnN0aW5z dF90eXBlKSgpOwogc3RpbnN0X3R5cGUgKnBjOwogc3RpbnN0X3R5cGUgc3N0YWNrW1NUQUNLXTsK IHN0aW5zdF90eXBlICpzc3AgPSAmc3N0YWNrWzBdOwotaW50IGlzdGFja1tTVEFDS107Ci1pbnQg KmlzcCA9ICZpc3RhY2tbMF07CisjaWZkZWYgX1dJTjY0Cit0eXBlZGVmIGxvbmcgbG9uZwlpbnRw OworI2Vsc2UKK3R5cGVkZWYgbG9uZwkJaW50cDsKKyNlbmRpZgoraW50cCBpc3RhY2tbU1RBQ0td OworaW50cCAqaXNwID0gJmlzdGFja1swXTsKIAogdHlwZWRlZiBpbnQgKndvcmRfdHlwZTsKIApA QCAtMjcyLDcgKzI3Nyw3IEBAIFdPUkQocHVzaF9udW1iZXIpCiB7CiAgICAgaXNwKys7CiAgICAg cGMrKzsKLSAgICAqaXNwID0gKGludCkoKnBjKTsKKyAgICAqaXNwID0gKGludHApKCpwYyk7CiAg ICAgcGMrKzsKICAgICAKIH0KQEAgLTEzNDUsNyArMTM1MCw3IEBAIGVsc2UJCiAgCiBzdGF0aWMg dm9pZCBERUZVTl9WT0lEKGJhbmcpCiB7Ci0qKGludCAqKSgoaXNwWzBdKSkgPSBpc3BbLTFdOwor KihpbnRwICopKChpc3BbMF0pKSA9IGlzcFstMV07CiBpc3AtPTI7CiBwYysrOwogCkBAIC0xMzUz LDcgKzEzNTgsNyBAQCBwYysrOwogCiBXT1JEKGF0c2lnbikKIHsKLSAgICBpc3BbMF0gPSAqKGlu dCAqKShpc3BbMF0pOworICAgIGlzcFswXSA9ICooaW50cCAqKShpc3BbMF0pOwogICAgIHBjKys7 CiB9CiAK --002215b033ae42478d04a947c6f7--