From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 84070 invoked by alias); 24 Feb 2019 12:05:39 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 84039 invoked by uid 89); 24 Feb 2019 12:05:38 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=H*r:sk:mail-ed, college, significance, builtins.c X-HELO: mail-ed1-f49.google.com Received: from mail-ed1-f49.google.com (HELO mail-ed1-f49.google.com) (209.85.208.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 24 Feb 2019 12:05:36 +0000 Received: by mail-ed1-f49.google.com with SMTP id h58so5331630edb.5 for ; Sun, 24 Feb 2019 04:05:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=0DUUBKZRxAKtS6ciJh5ZeIeLWldtTg/mVCRp1lk7wi4=; b=I5bTpnRUFohZ61TzFpxG8XVOUJj4iKXzZHyFIZ15yT/eqUPvUlcGqtgLmfpMZhMnIP GSV360lHWNWdSNwSQGTCV1IHWCTMA7RE0wfzaUj5abBbguCSgZFxuSrEDfKq7CPhi8oo mz5H1vnLgNBD1Aty1bR2b8xEv+IluqyXaWiUUXt91mbmB2btwqIchcMWLff5wSHxN31x GcKpLLo8f247Sa110JLF33WZpnMeeWJZY6vTgp0CPjo8//XIvnDdc6zJjYyyoZr4QYYk yXD6a4uKykQqOit37H8iwIK5ElDwXoWcG+4IltZHR6g5MOHmZOPJMqm/dYNfj1J8rGuR tZqA== MIME-Version: 1.0 References: In-Reply-To: From: Tejas Joshi Date: Sun, 24 Feb 2019 12:05:00 -0000 Message-ID: Subject: Re: About GSOC. To: gcc@gcc.gnu.org Cc: joseph@codesourcery.com, Martin Jambor Content-Type: multipart/mixed; boundary="0000000000001dc27c0582a2a435" X-IsSubscribed: yes X-SW-Source: 2019-02/txt/msg00132.txt.bz2 --0000000000001dc27c0582a2a435 Content-Type: text/plain; charset="UTF-8" Content-length: 6245 Hello. I had a little pause on roundeven due to seminars in my college. I've tried to implement roundeven but can not figure out what are just minimal needs to roundeven be called for a test program like __builtin_roundeven(); Also, build exited returning status as: DEF_INTERNAL_FLT_FN (ROUNDEVEN) has no associated built-in functions Here is the .diff flie. Thanks, -Tejas On Mon, 4 Feb 2019 at 22:55, Tejas Joshi wrote: > > Hi. > Although now, I am unable to build the compiler. > The build exited returning status as: > > DEF_INTERNAL_FLT_FN (ROUNDEVEN) has no associated built-in functions > > I have added the entry in fold_const_call_ss() and do not find any > other place to add the case. > Here is the latest patch. > > On Mon, 4 Feb 2019 at 22:14, Prathamesh Kulkarni > wrote: > > > > On Mon, 4 Feb 2019 at 21:27, Tejas Joshi wrote: > > > > > > Thanks. > > > > Did you add an entry for roundeven in builtins.def ? > > > Yes, I did. > > > > > > Find here the attached patch.diff for which I did the changes to > > > implement roundeven. There might be some unnecessary changes and some > > > necessary changes which have not been made. > > You haven't called roundeven() in the patch. You'll need to add an > > entry in fold_const_call_ss() > > similar to real_ceil, and probably in other places too. > > > > Thanks, > > Prathamesh > > > > > > Regards, > > > -Tejas > > > > > > On Mon, 4 Feb 2019 at 20:36, Prathamesh Kulkarni > > > wrote: > > > > > > > > On Mon, 4 Feb 2019 at 20:10, Tejas Joshi wrote: > > > > > > > > > > Hello. > > > > > I have implemented roundeven function in real.c as follows: (and > > > > > respective changes in real.h) > > > > It's a better idea to include all changes in patch instead of copy-pasting. > > > > Use the command: > > > > git diff > patch.diff > > > > which will create a file called "patch.diff" containing the changes > > > > and send it as an attachment. > > > > > > > > > > /* Round X to nearest even integer towards zero. */ > > > > > > > > > > void > > > > > real_roundeven (REAL_VALUE_TYPE *r, format_helper fmt, > > > > > const REAL_VALUE_TYPE *x) > > > > > { > > > > > REAL_VALUE_TYPE t; > > > > > > > > > > do_fix_trunc (&t, x); > > > > > HOST_WIDE_INT i = real_to_integer (&t); > > > > > if(i % 2) > > > > > do_add (r, &t, &dconstm1, 0); > > > > > else > > > > > *r = t; > > > > > } > > > > > > > > > > Although I cant get it to test like > > > > > > > > > > int foo() > > > > > { > > > > > double x = __builtin_roundeven (3.5); > > > > > printf("%f",x); > > > > > return (int) x; > > > > > } > > > > > Because I do not know its dependencies through other files. I tried to > > > > > track them down by inspecting real_ceil function, but it also includes > > > > > other optimization procedures like folding. How do I know enough > > > > > declarations to be made in respective files? > > > > Did you add an entry for roundeven in builtins.def ? > > > > > > > > Thanks, > > > > Prathamesh > > > > > > > > > > Thanks. > > > > > -Tejas > > > > > > > > > > On Mon, 28 Jan 2019 at 22:33, Tejas Joshi wrote: > > > > > > > > > > > > Hello. > > > > > > Representations of real numbers in real.c are a little complex to > > > > > > understand right now for me. I am still trying to understand them and > > > > > > figure them out using gdb and cscope. Though conventions are given in > > > > > > comments in real.c, I will still be trying to figure it out. The > > > > > > equation and its bitwise representation is not pretty elaborated in > > > > > > any documentation I could find. > > > > > > > > > > > > x = s * b^e * \sum_{k=1}^p f_k * b^{-k} > > > > > > > > > > > > where > > > > > > s = sign (+- 1) > > > > > > b = base or radix, here always 2 > > > > > > e = exponent > > > > > > p = precision (the number of base-b digits in the significand) > > > > > > f_k = the digits of the significand. > > > > > > > > > > > > In mean time, I've tried real_round function to work like roundeven. I > > > > > > will try to submit a clean patch along with roundeven implemented > > > > > > separately with changes like in builtins.def, adding cases, etc. > > > > > > > > > > > > void > > > > > > real_round (REAL_VALUE_TYPE *r, format_helper fmt, > > > > > > const REAL_VALUE_TYPE *x) > > > > > > { > > > > > > #if 0 > > > > > > do_add (r, x, &dconsthalf, x->sign); > > > > > > do_fix_trunc (r, r); > > > > > > if (fmt) > > > > > > real_convert (r, fmt, r); > > > > > > #endif > > > > > > fprintf (stderr, "\nhere\n"); > > > > > > real_value z; > > > > > > do_fix_trunc (&z, x); > > > > > > HOST_WIDE_INT i = real_to_integer (&z); > > > > > > fprintf (stderr, "\n i = %ld\n", i); > > > > > > if (i % 2) > > > > > > do_add (r, &z, &dconstm1, 0); > > > > > > else > > > > > > *r = z; > > > > > > } > > > > > > > > > > > > Thanks. > > > > > > -Tejas > > > > > > > > > > > > On Sat, 26 Jan 2019 at 03:02, Joseph Myers wrote: > > > > > > > > > > > > > > On Sat, 26 Jan 2019, Tejas Joshi wrote: > > > > > > > > > > > > > > > function with byte-byte comparison which also include mpfr. (Correct > > > > > > > > me if I am wrong.) What is the significance of mpfr related to these > > > > > > > > internal representations? > > > > > > > > > > > > > > real.c provides a fixed-size representation of floating-point numbers that > > > > > > > allows for various non-IEEE formats supported by GCC, and also allows > > > > > > > functions from dfp.c to be used for decimal floating-point formats. > > > > > > > > > > > > > > MPFR is used in GCC to provide operations that are nontrivial to > > > > > > > implement, especially those that are nontrivial to implement in such a > > > > > > > fixed-size context. real.c operations wrap around MPFR ones where > > > > > > > appropriate, doing whatever's needed in cases where there are non-IEEE > > > > > > > semantics or sets of values. > > > > > > > > > > > > > > -- > > > > > > > Joseph S. Myers > > > > > > > joseph@codesourcery.com --0000000000001dc27c0582a2a435 Content-Type: text/x-patch; charset="US-ASCII"; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jsiv9sw40 Content-length: 9126 ZGlmZiAtLWdpdCBhL2djYy9idWlsdGlucy5jIGIvZ2NjL2J1aWx0aW5zLmMK aW5kZXggMjVlMDFlNDA5MmIuLjI1MjgyZDIxMjJkIDEwMDY0NAotLS0gYS9n Y2MvYnVpbHRpbnMuYworKysgYi9nY2MvYnVpbHRpbnMuYwpAQCAtMjA2Nyw2 ICsyMDY3LDcgQEAgbWF0aGZuX2J1aWx0X2luXzIgKHRyZWUgdHlwZSwgY29t YmluZWRfZm4gZm4pCiAgICAgQ0FTRV9NQVRIRk4gKFJFTVFVTykKICAgICBD QVNFX01BVEhGTl9GTE9BVE4gKFJJTlQpCiAgICAgQ0FTRV9NQVRIRk5fRkxP QVROIChST1VORCkKKyAgICBDQVNFX01BVEhGTl9GTE9BVE4gKFJPVU5ERVZF TikKICAgICBDQVNFX01BVEhGTiAoU0NBTEIpCiAgICAgQ0FTRV9NQVRIRk4g KFNDQUxCTE4pCiAgICAgQ0FTRV9NQVRIRk4gKFNDQUxCTikKZGlmZiAtLWdp dCBhL2djYy9idWlsdGlucy5kZWYgYi9nY2MvYnVpbHRpbnMuZGVmCmluZGV4 IGVmODk3MjlmZDBjLi45YjU1NDMzM2Y1NyAxMDA2NDQKLS0tIGEvZ2NjL2J1 aWx0aW5zLmRlZgorKysgYi9nY2MvYnVpbHRpbnMuZGVmCkBAIC01NDIsOSAr NTQyLDEzIEBAIERFRl9DOTlfQlVJTFRJTiAgICAgICAgKEJVSUxUX0lOX1JJ TlRMLCAicmludGwiLCBCVF9GTl9MT05HRE9VQkxFX0xPTkdET1VCTEUsIEFU CiAjZGVmaW5lIFJJTlRfVFlQRShGKSBCVF9GTl8jI0YjI18jI0YKIERFRl9F WFRfTElCX0ZMT0FUTl9OWF9CVUlMVElOUyAoQlVJTFRfSU5fUklOVCwgInJp bnQiLCBSSU5UX1RZUEUsIEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJU1Qp CiAjdW5kZWYgUklOVF9UWVBFCitERUZfRVhUX0xJQl9CVUlMVElOICAgIChC VUlMVF9JTl9ST1VOREVWRU4sICJyb3VuZGV2ZW4iLCBCVF9GTl9ET1VCTEVf RE9VQkxFLCBBVFRSX0NPTlNUX05PVEhST1dfTEVBRl9MSVNUKQogREVGX0M5 OV9CVUlMVElOICAgICAgICAoQlVJTFRfSU5fUk9VTkQsICJyb3VuZCIsIEJU X0ZOX0RPVUJMRV9ET1VCTEUsIEFUVFJfQ09OU1RfTk9USFJPV19MRUFGX0xJ U1QpCiBERUZfQzk5X0JVSUxUSU4gICAgICAgIChCVUlMVF9JTl9ST1VOREYs ICJyb3VuZGYiLCBCVF9GTl9GTE9BVF9GTE9BVCwgQVRUUl9DT05TVF9OT1RI Uk9XX0xFQUZfTElTVCkKIERFRl9DOTlfQlVJTFRJTiAgICAgICAgKEJVSUxU X0lOX1JPVU5ETCwgInJvdW5kbCIsIEJUX0ZOX0xPTkdET1VCTEVfTE9OR0RP VUJMRSwgQVRUUl9DT05TVF9OT1RIUk9XX0xFQUZfTElTVCkKKyNkZWZpbmUg Uk9VTkRFVkVOX1RZUEUoRikgQlRfRk5fIyNGIyNfIyNGCitERUZfRVhUX0xJ Ql9GTE9BVE5fTlhfQlVJTFRJTlMgKEJVSUxUX0lOX1JPVU5ERVZFTiwgInJv dW5kZXZlbiIsIFJPVU5ERVZFTl9UWVBFLCBBVFRSX0NPTlNUX05PVEhST1df TEVBRl9MSVNUKQorI3VuZGVmIFJPVU5ERVZFTl9UWVBFCiAjZGVmaW5lIFJP VU5EX1RZUEUoRikgQlRfRk5fIyNGIyNfIyNGCiBERUZfRVhUX0xJQl9GTE9B VE5fTlhfQlVJTFRJTlMgKEJVSUxUX0lOX1JPVU5ELCAicm91bmQiLCBST1VO RF9UWVBFLCBBVFRSX0NPTlNUX05PVEhST1dfTEVBRl9MSVNUKQogI3VuZGVm IFJPVU5EX1RZUEUKZGlmZiAtLWdpdCBhL2djYy9mb2xkLWNvbnN0LWNhbGwu YyBiL2djYy9mb2xkLWNvbnN0LWNhbGwuYwppbmRleCAwNmE0MjA2MDFjMC4u NmY0ZmVhNjNiMGMgMTAwNjQ0Ci0tLSBhL2djYy9mb2xkLWNvbnN0LWNhbGwu YworKysgYi9nY2MvZm9sZC1jb25zdC1jYWxsLmMKQEAgLTc3Myw2ICs3NzMs MTYgQEAgZm9sZF9jb25zdF9jYWxsX3NzIChyZWFsX3ZhbHVlICpyZXN1bHQs IGNvbWJpbmVkX2ZuIGZuLAogICAgIENBU0VfQ0ZOX0NFSUxfRk46CiAgICAg ICBpZiAoIVJFQUxfVkFMVUVfSVNOQU4gKCphcmcpIHx8ICFmbGFnX2Vycm5v X21hdGgpCiAJeworCSAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKwkgIGZw cmludGYgKHN0ZGVyciwgImNsOiAldVxuIiwgYXJnLT5jbCk7CisJICBmcHJp bnRmIChzdGRlcnIsICJzaWduOiAldVxuIiwgYXJnLT5zaWduKTsKKwkgIGZw cmludGYgKHN0ZGVyciwgInNpZ25hbGxpbmc6ICV1XG4iLCBhcmctPnNpZ25h bGxpbmcpOworCSAgZnByaW50ZiAoc3RkZXJyLCAiY2Fub25pY2FsOiAldVxu IiwgYXJnLT5jYW5vbmljYWwpOworCSAgZnByaW50ZiAoc3RkZXJyLCAidWV4 cDogJXVcbiIsIGFyZy0+dWV4cCk7CisJICAKKwkgIGZwcmludGYgKHN0ZGVy ciwgInNpZzogIik7CisJICBmb3IgKGludCBpID0gMDsgaSA8IFNJR1NaOyBp KyspCisJICAgIGZwcmludGYgKHN0ZGVyciwgIiVseCAiLCBhcmctPnNpZ1tp XSk7CiAJICByZWFsX2NlaWwgKHJlc3VsdCwgZm9ybWF0LCBhcmcpOwogCSAg cmV0dXJuIHRydWU7CiAJfQpAQCAtNzkyLDYgKzgwMiwxNSBAQCBmb2xkX2Nv bnN0X2NhbGxfc3MgKHJlYWxfdmFsdWUgKnJlc3VsdCwgY29tYmluZWRfZm4g Zm4sCiAJfQogICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgQ0FTRV9DRk5f Uk9VTkRFVkVOOgorICAgIENBU0VfQ0ZOX1JPVU5ERVZFTl9GTjoKKyAgICAg IGlmICghUkVBTF9WQUxVRV9JU05BTiAoKmFyZykgfHwgIWZsYWdfZXJybm9f bWF0aCkKKyAgeworICAgIHJlYWxfcm91bmRldmVuIChyZXN1bHQsIGZvcm1h dCwgYXJnKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICAgICAgcmV0dXJu IGZhbHNlOworCiAgICAgQ0FTRV9DRk5fTE9HQjoKICAgICAgIHJldHVybiBm b2xkX2NvbnN0X2xvZ2IgKHJlc3VsdCwgYXJnLCBmb3JtYXQpOwogCmRpZmYg LS1naXQgYS9nY2MvZm9sZC1jb25zdC5jIGIvZ2NjL2ZvbGQtY29uc3QuYwpp bmRleCA1OWNlZGVhZmQ3MS4uMzBjNDA5ZTk1YmYgMTAwNjQ0Ci0tLSBhL2dj Yy9mb2xkLWNvbnN0LmMKKysrIGIvZ2NjL2ZvbGQtY29uc3QuYwpAQCAtMzI5 LDYgKzMyOSw3IEBAIG5lZ2F0ZV9tYXRoZm5fcCAoY29tYmluZWRfZm4gZm4p CiAgICAgQ0FTRV9DRk5fTExST1VORDoKICAgICBDQVNFX0NGTl9MUk9VTkQ6 CiAgICAgQ0FTRV9DRk5fUk9VTkQ6CisgICAgQ0FTRV9DRk5fUk9VTkRFVkVO OgogICAgIENBU0VfQ0ZOX1NJTjoKICAgICBDQVNFX0NGTl9TSU5IOgogICAg IENBU0VfQ0ZOX1RBTjoKQEAgLTEzMDYwLDYgKzEzMDYxLDggQEAgdHJlZV9j YWxsX25vbm5lZ2F0aXZlX3dhcm52X3AgKHRyZWUgdHlwZSwgY29tYmluZWRf Zm4gZm4sIHRyZWUgYXJnMCwgdHJlZSBhcmcxLAogICAgIENBU0VfQ0ZOX1JJ TlRfRk46CiAgICAgQ0FTRV9DRk5fUk9VTkQ6CiAgICAgQ0FTRV9DRk5fUk9V TkRfRk46CisgICAgQ0FTRV9DRk5fUk9VTkRFVkVOOgorICAgIENBU0VfQ0ZO X1JPVU5ERVZFTl9GTjoKICAgICBDQVNFX0NGTl9TQ0FMQjoKICAgICBDQVNF X0NGTl9TQ0FMQkxOOgogICAgIENBU0VfQ0ZOX1NDQUxCTjoKQEAgLTEzNTgz LDYgKzEzNTg2LDggQEAgaW50ZWdlcl92YWx1ZWRfcmVhbF9jYWxsX3AgKGNv bWJpbmVkX2ZuIGZuLCB0cmVlIGFyZzAsIHRyZWUgYXJnMSwgaW50IGRlcHRo KQogICAgIENBU0VfQ0ZOX1JJTlRfRk46CiAgICAgQ0FTRV9DRk5fUk9VTkQ6 CiAgICAgQ0FTRV9DRk5fUk9VTkRfRk46CisgICAgQ0FTRV9DRk5fUk9VTkRF VkVOOgorICAgIENBU0VfQ0ZOX1JPVU5ERVZFTl9GTjoKICAgICBDQVNFX0NG Tl9UUlVOQzoKICAgICBDQVNFX0NGTl9UUlVOQ19GTjoKICAgICAgIHJldHVy biB0cnVlOwpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2dj Yy9pbnRlcm5hbC1mbi5kZWYKaW5kZXggY2RhMzE0ZTExMjEuLmI4OTkxODgx NWY5IDEwMDY0NAotLS0gYS9nY2MvaW50ZXJuYWwtZm4uZGVmCisrKyBiL2dj Yy9pbnRlcm5hbC1mbi5kZWYKQEAgLTIyNCw2ICsyMjQsNyBAQCBERUZfSU5U RVJOQUxfRkxUX0ZMT0FUTl9GTiAoRkxPT1IsIEVDRl9DT05TVCwgZmxvb3Is IHVuYXJ5KQogREVGX0lOVEVSTkFMX0ZMVF9GTE9BVE5fRk4gKE5FQVJCWUlO VCwgRUNGX0NPTlNULCBuZWFyYnlpbnQsIHVuYXJ5KQogREVGX0lOVEVSTkFM X0ZMVF9GTE9BVE5fRk4gKFJJTlQsIEVDRl9DT05TVCwgcmludCwgdW5hcnkp CiBERUZfSU5URVJOQUxfRkxUX0ZMT0FUTl9GTiAoUk9VTkQsIEVDRl9DT05T VCwgcm91bmQsIHVuYXJ5KQorREVGX0lOVEVSTkFMX0ZMVF9GTE9BVE5fRk4g KFJPVU5ERVZFTiwgRUNGX0NPTlNULCByb3VuZGV2ZW4sIHVuYXJ5KQogREVG X0lOVEVSTkFMX0ZMVF9GTE9BVE5fRk4gKFRSVU5DLCBFQ0ZfQ09OU1QsIGJ0 cnVuYywgdW5hcnkpCiAKIC8qIEJpbmFyeSBtYXRoIGZ1bmN0aW9ucy4gICov CmRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVm CmluZGV4IDVhNjdmNWVlZDVlLi5lYjllMjJhY2Q4ZiAxMDA2NDQKLS0tIGEv Z2NjL29wdGFicy5kZWYKKysrIGIvZ2NjL29wdGFicy5kZWYKQEAgLTI2Nyw2 ICsyNjcsNyBAQCBPUFRBQl9EIChmbm1zX29wdGFiLCAiZm5tcyRhNCIpCiAK IE9QVEFCX0QgKHJpbnRfb3B0YWIsICJyaW50JGEyIikKIE9QVEFCX0QgKHJv dW5kX29wdGFiLCAicm91bmQkYTIiKQorT1BUQUJfRCAocm91bmRldmVuX29w dGFiLCAicm91bmRldmVuJGEyIikKIE9QVEFCX0QgKGZsb29yX29wdGFiLCAi Zmxvb3IkYTIiKQogT1BUQUJfRCAoY2VpbF9vcHRhYiwgImNlaWwkYTIiKQog T1BUQUJfRCAoYnRydW5jX29wdGFiLCAiYnRydW5jJGEyIikKZGlmZiAtLWdp dCBhL2djYy9yZWFsLmMgYi9nY2MvcmVhbC5jCmluZGV4IGY4MjJhZTgyZDYx Li45YzU3ZjUwZThmYyAxMDA2NDQKLS0tIGEvZ2NjL3JlYWwuYworKysgYi9n Y2MvcmVhbC5jCkBAIC0xOTU2LDYgKzE5NTYsOCBAQCByZWFsX3RvX2hleGFk ZWNpbWFsIChjaGFyICpzdHIsIGNvbnN0IFJFQUxfVkFMVUVfVFlQRSAqciwg c2l6ZV90IGJ1Zl9zaXplLAogaW50CiByZWFsX2Zyb21fc3RyaW5nIChSRUFM X1ZBTFVFX1RZUEUgKnIsIGNvbnN0IGNoYXIgKnN0cikKIHsKKyAgZnByaW50 ZiAoc3RkZXJyLCAiXG5yZWFsX2Zyb21fc3RyaW5nOiBzdHIgPSAlc1xuIiwg c3RyKTsKKyAgICAgIAogICBpbnQgZXhwID0gMDsKICAgYm9vbCBzaWduID0g ZmFsc2U7CiAKQEAgLTUwMDQsMTAgKzUwMDYsMzkgQEAgdm9pZAogcmVhbF9y b3VuZCAoUkVBTF9WQUxVRV9UWVBFICpyLCBmb3JtYXRfaGVscGVyIGZtdCwK IAkgICAgY29uc3QgUkVBTF9WQUxVRV9UWVBFICp4KQogeworI2lmIDAKICAg ZG9fYWRkIChyLCB4LCAmZGNvbnN0aGFsZiwgeC0+c2lnbik7CiAgIGRvX2Zp eF90cnVuYyAociwgcik7CiAgIGlmIChmbXQpCiAgICAgcmVhbF9jb252ZXJ0 IChyLCBmbXQsIHIpOworI2VuZGlmCisgIGZwcmludGYgKHN0ZGVyciwgIlxu aGVyZVxuIik7CisgIHJlYWxfdmFsdWUgejsKKyAgZG9fZml4X3RydW5jICgm eiwgeCk7CisgIEhPU1RfV0lERV9JTlQgaSA9IHJlYWxfdG9faW50ZWdlciAo JnopOworICBmcHJpbnRmIChzdGRlcnIsICJcbiBpID0gJWxkXG4iLCBpKTsK KyAgaWYgKGkgJSAyKQorICAgIGRvX2FkZCAociwgJnosICZkY29uc3RtMSwg MCk7CisgIGVsc2UKKyAgICAqciA9IHo7Cit9CisKKy8qIFJvdW5kIFggdG8g bmVhcmVzdCBldmVuIGludGVnZXIgdG93YXJkcyB6ZXJvLiAqLworCit2b2lk CityZWFsX3JvdW5kZXZlbiAoUkVBTF9WQUxVRV9UWVBFICpyLCBmb3JtYXRf aGVscGVyIGZtdCwKKwkJY29uc3QgUkVBTF9WQUxVRV9UWVBFICp4KQorewor ICBSRUFMX1ZBTFVFX1RZUEUgdDsKKworICBkb19maXhfdHJ1bmMgKCZ0LCB4 KTsKKyAgSE9TVF9XSURFX0lOVCBpID0gcmVhbF90b19pbnRlZ2VyICgmdCk7 CisgIGZwcmludGYgKHN0ZGVyciwgIlxuaGVyZVxuIik7CisgIGZwcmludGYg KHN0ZGVyciwgIlxuIGkgPSAlbGRcbiIsIGkpOworICBpZihpICUgMikKKyAg ICBkb19hZGQgKHIsICZ0LCAmZGNvbnN0bTEsIDApOworICBlbHNlCisgICAg KnIgPSB0OwogfQogCiAvKiBTZXQgdGhlIHNpZ24gb2YgUiB0byB0aGUgc2ln biBvZiBYLiAgKi8KZGlmZiAtLWdpdCBhL2djYy9yZWFsLmggYi9nY2MvcmVh bC5oCmluZGV4IDBjZTQyNTY1NzA4Li4xMDg5OGVhZTc5ZSAxMDA2NDQKLS0t IGEvZ2NjL3JlYWwuaAorKysgYi9nY2MvcmVhbC5oCkBAIC00OTksNiArNDk5 LDggQEAgZXh0ZXJuIHZvaWQgcmVhbF9jZWlsIChSRUFMX1ZBTFVFX1RZUEUg KiwgZm9ybWF0X2hlbHBlciwKIAkJICAgICAgIGNvbnN0IFJFQUxfVkFMVUVf VFlQRSAqKTsKIGV4dGVybiB2b2lkIHJlYWxfcm91bmQgKFJFQUxfVkFMVUVf VFlQRSAqLCBmb3JtYXRfaGVscGVyLAogCQkJY29uc3QgUkVBTF9WQUxVRV9U WVBFICopOworZXh0ZXJuIHZvaWQgcmVhbF9yb3VuZGV2ZW4gKFJFQUxfVkFM VUVfVFlQRSAqLCBmb3JtYXRfaGVscGVyLAorICAgICAgY29uc3QgUkVBTF9W QUxVRV9UWVBFICopOwogCiAvKiBTZXQgdGhlIHNpZ24gb2YgUiB0byB0aGUg c2lnbiBvZiBYLiAgKi8KIGV4dGVybiB2b2lkIHJlYWxfY29weXNpZ24gKFJF QUxfVkFMVUVfVFlQRSAqLCBjb25zdCBSRUFMX1ZBTFVFX1RZUEUgKik7CmRp ZmYgLS1naXQgYS9nY2MvcmVhbG1wZnIuYyBiL2djYy9yZWFsbXBmci5jCmlu ZGV4IDEwZjA1Y2FhYmEzLi40ODM0ZmQwMTdiMSAxMDA2NDQKLS0tIGEvZ2Nj L3JlYWxtcGZyLmMKKysrIGIvZ2NjL3JlYWxtcGZyLmMKQEAgLTk4LDYgKzk4 LDcgQEAgcmVhbF9mcm9tX21wZnIgKFJFQUxfVkFMVUVfVFlQRSAqciwgbXBm cl9zcmNwdHIgbSwgY29uc3QgcmVhbF9mb3JtYXQgKmZvcm1hdCwKIAogICBt cGZyX2ZyZWVfc3RyIChyc3RyKTsKIAorICBmcHJpbnRmIChzdGRlcnIsICJc bnJlYWxfZnJvbV9tcGZyOiBidWYgPSAlc1xuIiwgYnVmKTsKICAgcmVhbF9m cm9tX3N0cmluZyAociwgYnVmKTsKIH0KIAo= --0000000000001dc27c0582a2a435--