From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-4.3 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 825081F487 for ; Sun, 29 Mar 2020 10:27:56 +0000 (UTC) Received: from localhost ([::1]:36132 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIVAZ-0004kG-4j for normalperson@yhbt.net; Sun, 29 Mar 2020 06:27:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39904) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jIVAU-0004eP-Cp for bug-gnulib@gnu.org; Sun, 29 Mar 2020 06:27:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jIVAS-00029V-FY for bug-gnulib@gnu.org; Sun, 29 Mar 2020 06:27:50 -0400 Received: from mail-il1-x141.google.com ([2607:f8b0:4864:20::141]:37808) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jIVAS-00028u-7r for bug-gnulib@gnu.org; Sun, 29 Mar 2020 06:27:48 -0400 Received: by mail-il1-x141.google.com with SMTP id a6so12980222ilr.4 for ; Sun, 29 Mar 2020 03:27:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:reply-to:from:date:message-id :subject:to; bh=hkF7UEonx0VUYzlttAI+P5szoP8f0TUdBkhEdXqW2ZM=; b=gvnAoHeD0KMR59shLrfWT1SaL2IBjCC8A407Maxhju2HDXnVoAYQRtQ1rbRsWrGAYm O7nVT16Gcy/C1dFF0XAVIHldiqOv+HyCY7QkKro41oRVzn/DE7Dniu3DaTQxV3V1V2AV sLi5mKWZIK06+Fj/VYy7WnVfgWQ3vQh/kwsGS8lcTzOMY2yI81qHU0GFPX5+Tu84IWlU S9YG/62ZI5y314IjQ7P5Jg2nMyxc33l+b/wlEop2mCwOHn99bdriQaUNkf1B0aZ13Jwf kMhOtgPLxFJfm9y+1Tojw1r4Qu7TwyIAlFBni1x+v11xqCKQp3YXk+xfSyp3ELfbFwsl 3y7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:reply-to :from:date:message-id:subject:to; bh=hkF7UEonx0VUYzlttAI+P5szoP8f0TUdBkhEdXqW2ZM=; b=rZYDLm7kBUwnURFxEcPQoQT77svZTGgi2E7/i82e6cNvKI5x5Jd0qLn5kJ9EwM12JS UE2rqsJNJ1RZ5sWelc+1O+fQW8zUDPHqIvWnVs/VrKn8OeYuTZQcAiISNPfwl4cBCQGU VNVk3rTBz+Tkm2bKCIOZRukgyrgPzSiD7aJG/PRri0O5hWKhDO7rCGxyv7Pj3uNO58B/ raxznWHMFYRBiuHOj176CHvt2FPpWj2eo9LhDe+MSd5p/Z5S+9z0FODCbpTv6UY3v09i Vu+04QWqLGTRbSe2F9cKvdHoJIwhiiIbNbM+gJtdfgO7Um/l4e5JVSGiKaVh8UiUngD4 /9uA== X-Gm-Message-State: ANhLgQ33jV9DzhTrW0q+oTEWqglMLEO737rkLKxnKbuArIOUHzZ6tTq4 0j0w5ovud7hhj9aMRIEBrL5VNDiB9eow9U3rNiZu51flHC0= X-Google-Smtp-Source: ADFU+vvP7a54Lauzd50+4Z8T/1Kgzs/K+bxQE0+aBZZeNeyFC0JvVnaLIyhSVY6nGRBp/q5wqDhgVoSygeU5IQtd8go= X-Received: by 2002:a05:6e02:be7:: with SMTP id d7mr6927318ilu.238.1585477667266; Sun, 29 Mar 2020 03:27:47 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jeffrey Walton Date: Sun, 29 Mar 2020 06:27:36 -0400 Message-ID: Subject: Re: test-bitrotate.c missing test cases To: bug-gnulib@gnu.org Content-Type: multipart/mixed; boundary="00000000000028315605a1fbc976" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::141 X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: noloader@gmail.com Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" --00000000000028315605a1fbc976 Content-Type: text/plain; charset="UTF-8" On Sun, Mar 29, 2020 at 5:00 AM Jeffrey Walton wrote: > > It looks like test-bitrotate.c is missing test cases. It is missing > the 32-bit rotl and rotr of 0-bits. > > The 0-bit rotate should tickle undefined behavior. > > If you want to clear the undefined behavior, then use this code. It is > recognized by Clang, GCC, ICC. It will be compiled down to a single > instruction on platforms like IA-32. I can find the mailing list > messages for a citation, if needed. Cleared on the bit rotate branch at https://github.com/noloader/gnulib/tree/bitrotate. The patch is attached. Jeff --00000000000028315605a1fbc976 Content-Type: text/x-patch; charset="US-ASCII"; name="bitrotate.diff" Content-Disposition: attachment; filename="bitrotate.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8cwgde80 ZGlmZiAtLWdpdCBhL2xpYi9iaXRyb3RhdGUuaCBiL2xpYi9iaXRyb3RhdGUuaAppbmRleCA1OTgy N2UyNzQuLmNhZmExZDk5ZSAxMDA2NDQKLS0tIGEvbGliL2JpdHJvdGF0ZS5oCisrKyBiL2xpYi9i aXRyb3RhdGUuaApAQCAtMTUsNiArMTUsNyBAQAogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogLyog V3JpdHRlbiBieSBTaW1vbiBKb3NlZnNzb24gPHNpbW9uQGpvc2Vmc3Nvbi5vcmc+LCAyMDA4LiAq LworLyogVXBkYXRlZCBmb3IgMTI4LWJpdCB0eXBlcyBieSBKZWZmcmV5IFdhbHRvbiA8bm9sb2Fk ZXJAZ21haWwuY29tPiwgMjAyMCAqLwogCiAjaWZuZGVmIF9HTF9CSVRST1RBVEVfSAogI2RlZmlu ZSBfR0xfQklUUk9UQVRFX0gKQEAgLTMzLDQwICszNCw0MCBAQCBfR0xfSU5MSU5FX0hFQURFUl9C RUdJTgogCiAjaWZkZWYgVUlOVDY0X01BWAogLyogR2l2ZW4gYW4gdW5zaWduZWQgNjQtYml0IGFy Z3VtZW50IFgsIHJldHVybiB0aGUgdmFsdWUgY29ycmVzcG9uZGluZwotICAgdG8gcm90YXRpbmcg dGhlIGJpdHMgTiBzdGVwcyB0byB0aGUgbGVmdC4gIE4gbXVzdCBiZSBiZXR3ZWVuIDEgYW5kCisg ICB0byByb3RhdGluZyB0aGUgYml0cyBOIHN0ZXBzIHRvIHRoZSBsZWZ0LiAgTiBtdXN0IGJlIGJl dHdlZW4gMCBhbmQKICAgIDYzIGluY2x1c2l2ZS4gKi8KIEJJVFJPVEFURV9JTkxJTkUgdWludDY0 X3QKIHJvdGw2NCAodWludDY0X3QgeCwgaW50IG4pCiB7Ci0gIHJldHVybiAoKHggPDwgbikgfCAo eCA+PiAoNjQgLSBuKSkpICYgVUlOVDY0X01BWDsKKyAgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+ ICgtbiY2MykpKTsKIH0KIAogLyogR2l2ZW4gYW4gdW5zaWduZWQgNjQtYml0IGFyZ3VtZW50IFgs IHJldHVybiB0aGUgdmFsdWUgY29ycmVzcG9uZGluZwotICAgdG8gcm90YXRpbmcgdGhlIGJpdHMg TiBzdGVwcyB0byB0aGUgcmlnaHQuICBOIG11c3QgYmUgYmV0d2VlbiAxIHRvCisgICB0byByb3Rh dGluZyB0aGUgYml0cyBOIHN0ZXBzIHRvIHRoZSByaWdodC4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAg dG8KICAgIDYzIGluY2x1c2l2ZS4qLwogQklUUk9UQVRFX0lOTElORSB1aW50NjRfdAogcm90cjY0 ICh1aW50NjRfdCB4LCBpbnQgbikKIHsKLSAgcmV0dXJuICgoeCA+PiBuKSB8ICh4IDw8ICg2NCAt IG4pKSkgJiBVSU5UNjRfTUFYOworICByZXR1cm4gKCh4ID4+IG4pIHwgKHggPDwgKC1uJjYzKSkp OwogfQogI2VuZGlmCiAKIC8qIEdpdmVuIGFuIHVuc2lnbmVkIDMyLWJpdCBhcmd1bWVudCBYLCBy ZXR1cm4gdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcKLSAgIHRvIHJvdGF0aW5nIHRoZSBiaXRzIE4g c3RlcHMgdG8gdGhlIGxlZnQuICBOIG11c3QgYmUgYmV0d2VlbiAxIGFuZAorICAgdG8gcm90YXRp bmcgdGhlIGJpdHMgTiBzdGVwcyB0byB0aGUgbGVmdC4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAgYW5k CiAgICAzMSBpbmNsdXNpdmUuICovCiBCSVRST1RBVEVfSU5MSU5FIHVpbnQzMl90CiByb3RsMzIg KHVpbnQzMl90IHgsIGludCBuKQogewotICByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4gKDMyIC0g bikpKSAmIFVJTlQzMl9NQVg7CisgIHJldHVybiAoKHggPDwgbikgfCAoeCA+PiAoLW4mMzEpKSk7 CiB9CiAKIC8qIEdpdmVuIGFuIHVuc2lnbmVkIDMyLWJpdCBhcmd1bWVudCBYLCByZXR1cm4gdGhl IHZhbHVlIGNvcnJlc3BvbmRpbmcKLSAgIHRvIHJvdGF0aW5nIHRoZSBiaXRzIE4gc3RlcHMgdG8g dGhlIHJpZ2h0LiAgTiBtdXN0IGJlIGJldHdlZW4gMSB0bworICAgdG8gcm90YXRpbmcgdGhlIGJp dHMgTiBzdGVwcyB0byB0aGUgcmlnaHQuICBOIG11c3QgYmUgYmV0d2VlbiAwIHRvCiAgICAzMSBp bmNsdXNpdmUuKi8KIEJJVFJPVEFURV9JTkxJTkUgdWludDMyX3QKIHJvdHIzMiAodWludDMyX3Qg eCwgaW50IG4pCiB7Ci0gIHJldHVybiAoKHggPj4gbikgfCAoeCA8PCAoMzIgLSBuKSkpICYgVUlO VDMyX01BWDsKKyAgcmV0dXJuICgoeCA+PiBuKSB8ICh4IDw8ICgtbiYzMSkpKTsKIH0KIAogLyog R2l2ZW4gYSBzaXplX3QgYXJndW1lbnQgWCwgcmV0dXJuIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5n CkBAIC03NSw3ICs3Niw4IEBAIHJvdHIzMiAodWludDMyX3QgeCwgaW50IG4pCiBCSVRST1RBVEVf SU5MSU5FIHNpemVfdAogcm90bF9zeiAoc2l6ZV90IHgsIGludCBuKQogewotICByZXR1cm4gKCh4 IDw8IG4pIHwgKHggPj4gKChDSEFSX0JJVCAqIHNpemVvZiB4KSAtIG4pKSkgJiBTSVpFX01BWDsK KyAgZW51bSB7bWFzayA9IChDSEFSX0JJVCAqIHNpemVvZiB4KSAtMX07CisgIHJldHVybiAoKHgg PDwgbikgfCAoeCA+PiAoLW4mbWFzaykpKTsKIH0KIAogLyogR2l2ZW4gYSBzaXplX3QgYXJndW1l bnQgWCwgcmV0dXJuIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nCkBAIC04NCw1NCArODYsNjggQEAg cm90bF9zeiAoc2l6ZV90IHgsIGludCBuKQogQklUUk9UQVRFX0lOTElORSBzaXplX3QKIHJvdHJf c3ogKHNpemVfdCB4LCBpbnQgbikKIHsKLSAgcmV0dXJuICgoeCA+PiBuKSB8ICh4IDw8ICgoQ0hB Ul9CSVQgKiBzaXplb2YgeCkgLSBuKSkpICYgU0laRV9NQVg7CisgIGVudW0ge21hc2sgPSAoQ0hB Ul9CSVQgKiBzaXplb2YgeCkgLTF9OworICByZXR1cm4gKCh4ID4+IG4pIHwgKHggPDwgKC1uJm1h c2spKSk7CiB9CiAKIC8qIEdpdmVuIGFuIHVuc2lnbmVkIDE2LWJpdCBhcmd1bWVudCBYLCByZXR1 cm4gdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcKLSAgIHRvIHJvdGF0aW5nIHRoZSBiaXRzIE4gc3Rl cHMgdG8gdGhlIGxlZnQuICBOIG11c3QgYmUgYmV0d2VlbiAxIHRvCi0gICAxNSBpbmNsdXNpdmUs IGJ1dCBvbiBtb3N0IHJlbGV2YW50IHRhcmdldHMgTiBjYW4gYWxzbyBiZSAwIGFuZCAxNgotICAg YmVjYXVzZSAnaW50JyBpcyBhdCBsZWFzdCAzMiBiaXRzIGFuZCB0aGUgYXJndW1lbnRzIG11c3Qg d2lkZW4KLSAgIGJlZm9yZSBzaGlmdGluZy4gKi8KKyAgIHRvIHJvdGF0aW5nIHRoZSBiaXRzIE4g c3RlcHMgdG8gdGhlIGxlZnQuICBOIG11c3QgYmUgYmV0d2VlbiAwIHRvCisgICAxNSBpbmNsdXNp dmUuICovCiBCSVRST1RBVEVfSU5MSU5FIHVpbnQxNl90CiByb3RsMTYgKHVpbnQxNl90IHgsIGlu dCBuKQogewotICByZXR1cm4gKCgodW5zaWduZWQgaW50KSB4IDw8IG4pIHwgKCh1bnNpZ25lZCBp bnQpIHggPj4gKDE2IC0gbikpKQotICAgICAgICAgJiBVSU5UMTZfTUFYOworICByZXR1cm4gKCh4 IDw8IG4pIHwgKHggPj4gKC1uJjE1KSkpOwogfQogCiAvKiBHaXZlbiBhbiB1bnNpZ25lZCAxNi1i aXQgYXJndW1lbnQgWCwgcmV0dXJuIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nCi0gICB0byByb3Rh dGluZyB0aGUgYml0cyBOIHN0ZXBzIHRvIHRoZSByaWdodC4gIE4gbXVzdCBiZSBpbiAxIHRvIDE1 Ci0gICBpbmNsdXNpdmUsIGJ1dCBvbiBtb3N0IHJlbGV2YW50IHRhcmdldHMgTiBjYW4gYWxzbyBi ZSAwIGFuZCAxNgotICAgYmVjYXVzZSAnaW50JyBpcyBhdCBsZWFzdCAzMiBiaXRzIGFuZCB0aGUg YXJndW1lbnRzIG11c3Qgd2lkZW4KLSAgIGJlZm9yZSBzaGlmdGluZy4gKi8KKyAgIHRvIHJvdGF0 aW5nIHRoZSBiaXRzIE4gc3RlcHMgdG8gdGhlIHJpZ2h0LiAgTiBtdXN0IGJlIGJldHdlZW4gMCB0 bworICAgdG8gMTUgaW5jbHVzaXZlLiAqLwogQklUUk9UQVRFX0lOTElORSB1aW50MTZfdAogcm90 cjE2ICh1aW50MTZfdCB4LCBpbnQgbikKIHsKLSAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgeCA+ PiBuKSB8ICgodW5zaWduZWQgaW50KSB4IDw8ICgxNiAtIG4pKSkKLSAgICAgICAgICYgVUlOVDE2 X01BWDsKKyAgcmV0dXJuICgoeCA+PiBuKSB8ICh4IDw8ICgtbiYxNSkpKTsKIH0KIAogLyogR2l2 ZW4gYW4gdW5zaWduZWQgOC1iaXQgYXJndW1lbnQgWCwgcmV0dXJuIHRoZSB2YWx1ZSBjb3JyZXNw b25kaW5nCi0gICB0byByb3RhdGluZyB0aGUgYml0cyBOIHN0ZXBzIHRvIHRoZSBsZWZ0LiAgTiBt dXN0IGJlIGJldHdlZW4gMSB0byA3Ci0gICBpbmNsdXNpdmUsIGJ1dCBvbiBtb3N0IHJlbGV2YW50 IHRhcmdldHMgTiBjYW4gYWxzbyBiZSAwIGFuZCA4Ci0gICBiZWNhdXNlICdpbnQnIGlzIGF0IGxl YXN0IDMyIGJpdHMgYW5kIHRoZSBhcmd1bWVudHMgbXVzdCB3aWRlbgotICAgYmVmb3JlIHNoaWZ0 aW5nLiAqLworICAgdG8gcm90YXRpbmcgdGhlIGJpdHMgTiBzdGVwcyB0byB0aGUgbGVmdC4gIE4g bXVzdCBiZSBiZXR3ZWVuIDAgdG8gNworICAgaW5jbHVzaXZlLiAqLwogQklUUk9UQVRFX0lOTElO RSB1aW50OF90CiByb3RsOCAodWludDhfdCB4LCBpbnQgbikKIHsKLSAgcmV0dXJuICgoKHVuc2ln bmVkIGludCkgeCA8PCBuKSB8ICgodW5zaWduZWQgaW50KSB4ID4+ICg4IC0gbikpKSAmIFVJTlQ4 X01BWDsKKyAgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+ICgtbiY3KSkpOwogfQogCiAvKiBHaXZl biBhbiB1bnNpZ25lZCA4LWJpdCBhcmd1bWVudCBYLCByZXR1cm4gdGhlIHZhbHVlIGNvcnJlc3Bv bmRpbmcKLSAgIHRvIHJvdGF0aW5nIHRoZSBiaXRzIE4gc3RlcHMgdG8gdGhlIHJpZ2h0LiAgTiBt dXN0IGJlIGluIDEgdG8gNwotICAgaW5jbHVzaXZlLCBidXQgb24gbW9zdCByZWxldmFudCB0YXJn ZXRzIE4gY2FuIGFsc28gYmUgMCBhbmQgOAotICAgYmVjYXVzZSAnaW50JyBpcyBhdCBsZWFzdCAz MiBiaXRzIGFuZCB0aGUgYXJndW1lbnRzIG11c3Qgd2lkZW4KLSAgIGJlZm9yZSBzaGlmdGluZy4g Ki8KKyAgIHRvIHJvdGF0aW5nIHRoZSBiaXRzIE4gc3RlcHMgdG8gdGhlIHJpZ2h0LiAgTiBtdXN0 IGJlIGJldHdlZW4gMCB0byA3CisgICBpbmNsdXNpdmUuICovCiBCSVRST1RBVEVfSU5MSU5FIHVp bnQ4X3QKIHJvdHI4ICh1aW50OF90IHgsIGludCBuKQogewotICByZXR1cm4gKCgodW5zaWduZWQg aW50KSB4ID4+IG4pIHwgKCh1bnNpZ25lZCBpbnQpIHggPDwgKDggLSBuKSkpICYgVUlOVDhfTUFY OworICByZXR1cm4gKCh4ID4+IG4pIHwgKHggPDwgKC1uJjcpKSk7Cit9CisKKy8qIFNvbWUgR0ND LCBDbGFuZywgSUNDIGFuZCBYTEMgc3VwcG9ydCAxMjgtYml0IGludGVnZXJzLiAgICAgICAqLwor LyogaHR0cHM6Ly9nY2MuZ251Lm9yZy9sZWdhY3ktbWwvZ2NjLWhlbHAvMjAxNS0wOC9tc2cwMDE4 NS5odG1sICovCisKKyNpZiBfX1NJWkVPRl9JTlQxMjhfXyA+PSAxNgorLyogR2l2ZW4gYW4gdW5z aWduZWQgMTI4LWJpdCBhcmd1bWVudCBYLCByZXR1cm4gdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcK KyAgIHRvIHJvdGF0aW5nIHRoZSBiaXRzIE4gc3RlcHMgdG8gdGhlIGxlZnQuICBOIG11c3QgYmUg YmV0d2VlbiAwIHRvIDEyNworICAgaW5jbHVzaXZlLiAqLworQklUUk9UQVRFX0lOTElORSBfX3Vp bnQxMjhfdAorcm90bDEyOCAoX191aW50MTI4X3QgeCwgaW50IG4pCit7CisgIHJldHVybiAoKHgg PDwgbikgfCAoeCA+PiAoLW4mMTI3KSkpOworfQorCisvKiBHaXZlbiBhbiB1bnNpZ25lZCAxMjgt Yml0IGFyZ3VtZW50IFgsIHJldHVybiB0aGUgdmFsdWUgY29ycmVzcG9uZGluZworICAgdG8gcm90 YXRpbmcgdGhlIGJpdHMgTiBzdGVwcyB0byB0aGUgcmlnaHQuICBOIG11c3QgYmUgYmV0d2VlbiAw IHRvIDEyNworICAgaW5jbHVzaXZlLiAqLworQklUUk9UQVRFX0lOTElORSBfX3VpbnQxMjhfdAor cm90cjEyOCAoX191aW50MTI4X3QgeCwgaW50IG4pCit7CisgIHJldHVybiAoKHggPj4gbikgfCAo eCA8PCAoLW4mMTI3KSkpOwogfQorI2VuZGlmCiAKIF9HTF9JTkxJTkVfSEVBREVSX0VORAogCmRp ZmYgLS1naXQgYS90ZXN0cy90ZXN0LWJpdHJvdGF0ZS5jIGIvdGVzdHMvdGVzdC1iaXRyb3RhdGUu YwppbmRleCAwMDA3ZDFjMzMuLjhlMDM0NmFmNSAxMDA2NDQKLS0tIGEvdGVzdHMvdGVzdC1iaXRy b3RhdGUuYworKysgYi90ZXN0cy90ZXN0LWJpdHJvdGF0ZS5jCkBAIC0xNSw2ICsxNSw3IEBACiAg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLwogCiAvKiBXcml0dGVuIGJ5IFNpbW9uIEpvc2Vmc3NvbiA8c2lt b25Aam9zZWZzc29uLm9yZz4sIDIwMDguICAqLworLyogVXBkYXRlZCBmb3IgMTI4LWJpdCB0eXBl cyBieSBKZWZmcmV5IFdhbHRvbiA8bm9sb2FkZXJAZ21haWwuY29tPiwgMjAyMCAqLwogCiAjaW5j bHVkZSA8Y29uZmlnLmg+CiAKQEAgLTgxLDYgKzgyLDcgQEAgbWFpbiAodm9pZCkKICAgQVNTRVJU IChyb3RyMTYgKDQzOTgxLCAxNSkgPT0gMjI0MjcpOwogICBBU1NFUlQgKHJvdHIxNiAoNDM5ODEs IDE2KSA9PSA0Mzk4MSk7CiAKKyAgQVNTRVJUIChyb3RsMzIgKDIzMDk3Mzc5NjdVLCAwKSA9PSAy MzA5NzM3OTY3VSk7CiAgIEFTU0VSVCAocm90bDMyICgyMzA5NzM3OTY3VSwgMSkgPT0gMzI0NTA4 NjM5VSk7CiAgIEFTU0VSVCAocm90bDMyICgyMzA5NzM3OTY3VSwgMikgPT0gNjQ5MDE3Mjc4VSk7 CiAgIEFTU0VSVCAocm90bDMyICgyMzA5NzM3OTY3VSwgMykgPT0gMTI5ODAzNDU1NlUpOwpAQCAt MTEzLDYgKzExNSw3IEBAIG1haW4gKHZvaWQpCiAgIEFTU0VSVCAocm90bDMyICgyMzA5NzM3OTY3 VSwgMzApID09IDM3OTg2NTk5NjNVKTsKICAgQVNTRVJUIChyb3RsMzIgKDIzMDk3Mzc5NjdVLCAz MSkgPT0gMzMwMjM1MjYzMVUpOwogCisgIEFTU0VSVCAocm90cjMyICgyMzA5NzM3OTY3VSwgMCkg PT0gMjMwOTczNzk2N1UpOwogICBBU1NFUlQgKHJvdHIzMiAoMjMwOTczNzk2N1UsIDEpID09IDMz MDIzNTI2MzFsVSk7CiAgIEFTU0VSVCAocm90cjMyICgyMzA5NzM3OTY3VSwgMikgPT0gMzc5ODY1 OTk2M2xVKTsKICAgQVNTRVJUIChyb3RyMzIgKDIzMDk3Mzc5NjdVLCAzKSA9PSA0MDQ2ODEzNjI5 bFUpOwpAQCAtMTQ2LDYgKzE0OSw3IEBAIG1haW4gKHZvaWQpCiAgIEFTU0VSVCAocm90cjMyICgy MzA5NzM3OTY3VSwgMzEpID09IDMyNDUwODYzOWxVKTsKIAogI2lmZGVmIFVJTlQ2NF9NQVgKKyAg QVNTRVJUIChyb3RsNjQgKDE2MDQ1NjkwOTg0NTAzMDk4MDQ2VUxMLCAwKSA9PSAxNjA0NTY5MDk4 NDUwMzA5ODA0NlVMTCk7CiAgIEFTU0VSVCAocm90bDY0ICgxNjA0NTY5MDk4NDUwMzA5ODA0NlVM TCwgMSkgPT0gMTM2NDQ2Mzc4OTUyOTY2NDQ0NzdVTEwpOwogICBBU1NFUlQgKHJvdGw2NCAoMTYw NDU2OTA5ODQ1MDMwOTgwNDZVTEwsIDIpID09IDg4NDI1MzE3MTY4ODM3MzczMzlVTEwpOwogICBB U1NFUlQgKHJvdGw2NCAoMTYwNDU2OTA5ODQ1MDMwOTgwNDZVTEwsIDMpID09IDE3Njg1MDYzNDMz NzY3NDc0Njc4VUxMKTsKQEAgLTIxMCw2ICsyMTQsNyBAQCBtYWluICh2b2lkKQogICBBU1NFUlQg KHJvdGw2NCAoMTYwNDU2OTA5ODQ1MDMwOTgwNDZVTEwsIDYyKSA9PSAxMzIzNDc5NDc4Mjk4MDU1 MDMxOVVMTCk7CiAgIEFTU0VSVCAocm90bDY0ICgxNjA0NTY5MDk4NDUwMzA5ODA0NlVMTCwgNjMp ID09IDgwMjI4NDU0OTIyNTE1NDkwMjNVTEwpOwogCisgIEFTU0VSVCAocm90cjY0ICgxNjA0NTY5 MDk4NDUwMzA5ODA0NlVMTCwgMCkgPT0gMTYwNDU2OTA5ODQ1MDMwOTgwNDZVTEwpOwogICBBU1NF UlQgKHJvdHI2NCAoMTYwNDU2OTA5ODQ1MDMwOTgwNDZVTEwsIDEpID09IDgwMjI4NDU0OTIyNTE1 NDkwMjNVTEwpOwogICBBU1NFUlQgKHJvdHI2NCAoMTYwNDU2OTA5ODQ1MDMwOTgwNDZVTEwsIDIp ID09IDEzMjM0Nzk0NzgyOTgwNTUwMzE5VUxMKTsKICAgQVNTRVJUIChyb3RyNjQgKDE2MDQ1Njkw OTg0NTAzMDk4MDQ2VUxMLCAzKSA9PSAxNTg0MDc2OTQyODM0NTA1MDk2N1VMTCk7CkBAIC0yNzUs NSArMjgwLDI3IEBAIG1haW4gKHZvaWQpCiAgIEFTU0VSVCAocm90cjY0ICgxNjA0NTY5MDk4NDUw MzA5ODA0NlVMTCwgNjMpID09IDEzNjQ0NjM3ODk1Mjk2NjQ0NDc3VUxMKTsKICNlbmRpZiAvKiBV SU5UNjRfTUFYICovCiAKKyAgLyogSGFjayBhaGVhZCBiZWNhdXNlIEdDQyBkb2VzIG5vdCBwcm92 aWRlIGEgd2F5IHRvIGluaXRpYWxpemUgdWludDEyOF90ICovCisgIC8qIGh0dHBzOi8vZ2NjLmdu dS5vcmcvb25saW5lZG9jcy9nY2MvXzAwNWZfMDA1ZmludDEyOC5odG1sICAgICAgICAgICAgICAq LworICAjaWYgX19TSVpFT0ZfSU5UMTI4X18gPj0gMTYKKyAgeworICAgIGNvbnN0IF9fdWludDEy OF90IHYgID0gKCgoX191aW50MTI4X3QpKDB4ZmZmZmZmZmZmZmZmZmZmZlVMTCkpIDw8IDY0KSB8 IDB4MDBmZmZmZmZmZmZmZmYwMFVMTDsKKyAgICBjb25zdCBfX3VpbnQxMjhfdCB4bCA9IHY7Cisg ICAgY29uc3QgX191aW50MTI4X3QgeHIgPSB2OworCisgICAgQVNTRVJUIChyb3RsMTI4ICh2LCAw KSA9PSB4bCk7CisgICAgQVNTRVJUIChyb3RyMTI4ICh2LCAwKSA9PSB4cik7CisgIH0KKworICB7 CisgICAgY29uc3QgX191aW50MTI4X3QgdiAgPSAoKChfX3VpbnQxMjhfdCkoMHhmZmZmZmZmZmZm ZmZmZmZmVUxMKSkgPDwgNjQpIHwgMHgwMGZmZmZmZmZmZmZmZjAwVUxMOworICAgIGNvbnN0IF9f dWludDEyOF90IHhsID0gKCgoX191aW50MTI4X3QpKDB4ZmZmZmZmZmZmZmZmZmYwMFVMTCkpIDw8 IDY0KSB8IDB4ZmZmZmZmZmZmZmZmMDBmZlVMTDsKKyAgICBjb25zdCBfX3VpbnQxMjhfdCB4ciA9 ICgoKF9fdWludDEyOF90KSgweDAwZmZmZmZmZmZmZmZmZmZVTEwpKSA8PCA2NCkgfCAweGZmMDBm ZmZmZmZmZmZmZmZVTEw7CisKKyAgICBBU1NFUlQgKHJvdGwxMjggKHYsIDgpID09IHhsKTsKKyAg ICBBU1NFUlQgKHJvdHIxMjggKHYsIDgpID09IHhyKTsKKyAgfQorICAjZW5kaWYKKwogICByZXR1 cm4gMDsKIH0K --00000000000028315605a1fbc976--