From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Mon, 31 May 2021 08:57:22 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1lnbrW-0002iI-38 for lore@lore.pengutronix.de; Mon, 31 May 2021 08:57:22 +0200 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lnbrU-0000Jn-7h for lore@pengutronix.de; Mon, 31 May 2021 08:57:21 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qnjq2qmfKUaGRPS+VGRXUBhf2+Q0ow5sZEMLHgE1IIw=; b=iTG0d6FODJkktJ 0JWXjHQc6WSgVprk9HtIHyzWWX6QCJFm+Vr0fzqcgWfoWZwkS8WL/jrUUzS+HzRMfBUBZa2rpFddT jAX23sXDDtB21UT0w9Lsd8V39Ey9b80RhJ+0yjlwjyOBcMAMhH5r3EbSwsC71/zghR+YpR1HC0VuA yT/yrtlrs0tBvV8/mODMzl7g7xq9Az5N+CSlvjItcRjDl2feEHC3GaMaji/PUbWZiFxLSkioIVXJS EvRhnnSp/pcZDxvCPgX0X5Z2lzZBSWgEV5v51NiGgauZHIAody+v1hLh+aNytNs93b/1CBR/yWly3 EYO5TGSuHIlF+migDaDg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lnbqC-00B0qS-Ld; Mon, 31 May 2021 06:56:00 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lnbpk-00B0fi-3b for barebox@lists.infradead.org; Mon, 31 May 2021 06:55:34 +0000 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lnbpa-0007yl-QE; Mon, 31 May 2021 08:55:22 +0200 Received: from afa by dude.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1lnbpZ-0003gJ-Ry; Mon, 31 May 2021 08:55:21 +0200 From: Ahmad Fatoum To: barebox@lists.infradead.org Cc: Ahmad Fatoum Date: Mon, 31 May 2021 08:55:15 +0200 Message-Id: <20210531065520.12385-9-a.fatoum@pengutronix.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210531065520.12385-1-a.fatoum@pengutronix.de> References: <20210531065520.12385-1-a.fatoum@pengutronix.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210530_235532_349901_0F8E8562 X-CRM114-Status: GOOD ( 24.32 ) X-BeenThere: barebox@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" X-SA-Exim-Connect-IP: 2607:7c80:54:e::133 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.ext.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-4.6 required=4.0 tests=AWL,BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.2 Subject: [PATCH v2 08/13] test: self: port Linux printf kselftest X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.ext.pengutronix.de) UG9ydCBvdmVyIHRoZSBMaW51eCB2NS4xMSBzZWxmdGVzdCBmb3IgcHJpbnRmIHNhbnMgdGhlIHBh cnRzIHdlIGRvbid0CnN1cHBvcnQuIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2F0Y2ggcmVncmVzc2lv bnMgaWYgY2hhbmdlcyBhZmZlY3RpbmcgdGhlCnByaW50ZiBjb2RlIGFyZSBtYWRlLgoKU2lnbmVk LW9mZi1ieTogQWhtYWQgRmF0b3VtIDxhLmZhdG91bUBwZW5ndXRyb25peC5kZT4KLS0tCiBpbmNs dWRlL3N0ZGxpYi5oICAgfCAgIDUgKwogdGVzdC9zZWxmL0tjb25maWcgIHwgICA2ICsKIHRlc3Qv c2VsZi9NYWtlZmlsZSB8ICAgMSArCiB0ZXN0L3NlbGYvY29yZS5jICAgfCAgIDIgKy0KIHRlc3Qv c2VsZi9wcmludGYuYyB8IDMwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMzE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L3NlbGYvcHJpbnRmLmMKCmRpZmYgLS1naXQgYS9p bmNsdWRlL3N0ZGxpYi5oIGIvaW5jbHVkZS9zdGRsaWIuaAppbmRleCBkNDA1NjA4NzI0M2QuLjhl YjQxOWUxMTFmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zdGRsaWIuaAorKysgYi9pbmNsdWRlL3N0 ZGxpYi5oCkBAIC0yNSw0ICsyNSw5IEBAIHN0YXRpYyBpbmxpbmUgdTMyIHJhbmRvbTMyKHZvaWQp CiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGlubGluZSB1MzIgcHJhbmRvbV91MzJfbWF4KHUz MiBlcF9ybykKK3sKKwlyZXR1cm4gKHUzMikoKCh1NjQpIHJhbmRvbTMyKCkgKiBlcF9ybykgPj4g MzIpOworfQorCiAjZW5kaWYgLyogX19TVERMSUJfSCAqLwpkaWZmIC0tZ2l0IGEvdGVzdC9zZWxm L0tjb25maWcgYi90ZXN0L3NlbGYvS2NvbmZpZwppbmRleCA3MjBhYmVmZmM1MWIuLjczZGM2Yzdi NGYwMyAxMDA2NDQKLS0tIGEvdGVzdC9zZWxmL0tjb25maWcKKysrIGIvdGVzdC9zZWxmL0tjb25m aWcKQEAgLTI3LDcgKzI3LDEzIEBAIGNvbmZpZyBTRUxGVEVTVF9BVVRPUlVOCiAKIGNvbmZpZyBT RUxGVEVTVF9FTkFCTEVfQUxMCiAJYm9vbCAiRW5hYmxlIGFsbCBzZWxmLXRlc3RzIgorCXNlbGVj dCBTRUxGVEVTVF9QUklOVEYKIAloZWxwCiAJICBTZWxlY3RzIGFsbCBzZWxmLXRlc3RzIGNvbXBh dGlibGUgd2l0aCBjdXJyZW50IGNvbmZpZ3VyYXRpb24KIAorY29uZmlnIFNFTEZURVNUX1BSSU5U RgorCWJvb2wgInByaW50ZiBzZWxmdGVzdCIKKwloZWxwCisJICBUZXN0cyBiYXJlYm94IHZzbnBy aW50ZigpIGZ1bmN0aW9uYWxpdHkKKwogZW5kaWYKZGlmZiAtLWdpdCBhL3Rlc3Qvc2VsZi9NYWtl ZmlsZSBiL3Rlc3Qvc2VsZi9NYWtlZmlsZQppbmRleCA3OGY3MzhjOGUyMTAuLmI0YWE0OWQ2Zjgx NyAxMDA2NDQKLS0tIGEvdGVzdC9zZWxmL01ha2VmaWxlCisrKyBiL3Rlc3Qvc2VsZi9NYWtlZmls ZQpAQCAtMSwzICsxLDQgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKIAog b2JqLSQoQ09ORklHX1NFTEZURVNUKSArPSBjb3JlLm8KK29iai0kKENPTkZJR19TRUxGVEVTVF9Q UklOVEYpICs9IHByaW50Zi5vCmRpZmYgLS1naXQgYS90ZXN0L3NlbGYvY29yZS5jIGIvdGVzdC9z ZWxmL2NvcmUuYwppbmRleCA1YTMwOWZjOGYxOGQuLmNhYTRjMjdmNmRlZiAxMDA2NDQKLS0tIGEv dGVzdC9zZWxmL2NvcmUuYworKysgYi90ZXN0L3NlbGYvY29yZS5jCkBAIC03LDcgKzcsNyBAQAog CiBMSVNUX0hFQUQoc2VsZnRlc3RzKTsKIAotaW50IHNlbGZ0ZXN0c19ydW4odm9pZCkKK3ZvaWQg c2VsZnRlc3RzX3J1bih2b2lkKQogewogCXN0cnVjdCBzZWxmdGVzdCAqdGVzdDsKIAlpbnQgZXJy ID0gMDsKZGlmZiAtLWdpdCBhL3Rlc3Qvc2VsZi9wcmludGYuYyBiL3Rlc3Qvc2VsZi9wcmludGYu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUyZmU2YWMwZmFmOQot LS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qvc2VsZi9wcmludGYuYwpAQCAtMCwwICsxLDMwMiBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorLyoKKyAqIFRlc3QgY2Fz ZXMgZm9yIHByaW50ZiBmYWNpbGl0eS4KKyAqLworCisjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlM RF9NT0ROQU1FICI6ICIgZm10CisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxic2Vs ZnRlc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxtb2R1bGUuaD4K KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGxpbnV4 L3N0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRlIDxsaW51eC9iaXRtYXAu aD4KKworI2RlZmluZSBCVUZfU0laRSAyNTYKKyNkZWZpbmUgUEFEX1NJWkUgMTYKKyNkZWZpbmUg RklMTF9DSEFSICckJworCitCU0VMRlRFU1RfR0xPQkFMUygpOworCitzdGF0aWMgY2hhciAqdGVz dF9idWZmZXIgX19pbml0ZGF0YTsKK3N0YXRpYyBjaGFyICphbGxvY2VkX2J1ZmZlciBfX2luaXRk YXRhOworCitzdGF0aWMgaW50IF9fcHJpbnRmKDQsIDApIF9faW5pdAorZG9fdGVzdChpbnQgYnVm c2l6ZSwgY29uc3QgY2hhciAqZXhwZWN0LCBpbnQgZWxlbiwKKwljb25zdCBjaGFyICpmbXQsIHZh X2xpc3QgYXApCit7CisJdmFfbGlzdCBhcTsKKwlpbnQgcmV0LCB3cml0dGVuOworCisJdG90YWxf dGVzdHMrKzsKKworCW1lbXNldChhbGxvY2VkX2J1ZmZlciwgRklMTF9DSEFSLCBCVUZfU0laRSAr IDIqUEFEX1NJWkUpOworCXZhX2NvcHkoYXEsIGFwKTsKKwlyZXQgPSB2c25wcmludGYodGVzdF9i dWZmZXIsIGJ1ZnNpemUsIGZtdCwgYXEpOworCXZhX2VuZChhcSk7CisKKwlpZiAocmV0ICE9IGVs ZW4pIHsKKwkJcHJfd2FybigidnNucHJpbnRmKGJ1ZiwgJWQsIFwiJXNcIiwgLi4uKSByZXR1cm5l ZCAlZCwgZXhwZWN0ZWQgJWRcbiIsCisJCQlidWZzaXplLCBmbXQsIHJldCwgZWxlbik7CisJCXBy X3dhcm4oInZzbnByaW50ZihidWYsICVkLCBcIiVzXCIsIC4uLikgd3JvdGUgJyVzJywgZXhwZWN0 ZWQgJyUuKnMnXG4iLAorCQkJYnVmc2l6ZSwgZm10LCB0ZXN0X2J1ZmZlciwgcmV0LCBleHBlY3Qp OworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAobWVtY2hyX2ludihhbGxvY2VkX2J1ZmZlciwgRklM TF9DSEFSLCBQQURfU0laRSkpIHsKKwkJcHJfd2FybigidnNucHJpbnRmKGJ1ZiwgJWQsIFwiJXNc IiwgLi4uKSB3cm90ZSBiZWZvcmUgYnVmZmVyXG4iLCBidWZzaXplLCBmbXQpOworCQlyZXR1cm4g MTsKKwl9CisKKwlpZiAoIWJ1ZnNpemUpIHsKKwkJaWYgKG1lbWNocl9pbnYodGVzdF9idWZmZXIs IEZJTExfQ0hBUiwgQlVGX1NJWkUgKyBQQURfU0laRSkpIHsKKwkJCXByX3dhcm4oInZzbnByaW50 ZihidWYsIDAsIFwiJXNcIiwgLi4uKSB3cm90ZSB0byBidWZmZXJcbiIsCisJCQkJZm10KTsKKwkJ CXJldHVybiAxOworCQl9CisJCXJldHVybiAwOworCX0KKworCXdyaXR0ZW4gPSBtaW4oYnVmc2l6 ZS0xLCBlbGVuKTsKKwlpZiAodGVzdF9idWZmZXJbd3JpdHRlbl0pIHsKKwkJcHJfd2FybigidnNu cHJpbnRmKGJ1ZiwgJWQsIFwiJXNcIiwgLi4uKSBkaWQgbm90IG51bC10ZXJtaW5hdGUgYnVmZmVy XG4iLAorCQkJYnVmc2l6ZSwgZm10KTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKG1lbWNocl9p bnYodGVzdF9idWZmZXIgKyB3cml0dGVuICsgMSwgRklMTF9DSEFSLCBCVUZfU0laRSArIFBBRF9T SVpFIC0gKHdyaXR0ZW4gKyAxKSkpIHsKKwkJcHJfd2FybigidnNucHJpbnRmKGJ1ZiwgJWQsIFwi JXNcIiwgLi4uKSB3cm90ZSBiZXlvbmQgdGhlIG51bC10ZXJtaW5hdG9yXG4iLAorCQkJYnVmc2l6 ZSwgZm10KTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKG1lbWNtcCh0ZXN0X2J1ZmZlciwgZXhw ZWN0LCB3cml0dGVuKSkgeworCQlwcl93YXJuKCJ2c25wcmludGYoYnVmLCAlZCwgXCIlc1wiLCAu Li4pIHdyb3RlICclcycsIGV4cGVjdGVkICclLipzJ1xuIiwKKwkJCWJ1ZnNpemUsIGZtdCwgdGVz dF9idWZmZXIsIHdyaXR0ZW4sIGV4cGVjdCk7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgX19wcmludGYoMywgNCkgX19pbml0CitfX3Rlc3QoY29uc3QgY2hh ciAqZXhwZWN0LCBpbnQgZWxlbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBh cDsKKwlpbnQgcmFuZDsKKwljaGFyICpwOworCisJaWYgKGVsZW4gPj0gQlVGX1NJWkUpIHsKKwkJ cHJfZXJyKCJlcnJvciBpbiB0ZXN0IHN1aXRlOiBleHBlY3RlZCBvdXRwdXQgbGVuZ3RoICVkIHRv byBsb25nLiBGb3JtYXQgd2FzICclcycuXG4iLAorCQkgICAgICAgZWxlbiwgZm10KTsKKwkJZmFp bGVkX3Rlc3RzKys7CisJCXJldHVybjsKKwl9CisKKwl2YV9zdGFydChhcCwgZm10KTsKKworCS8q CisJICogRXZlcnkgZm10K2FyZ3MgaXMgc3ViamVjdGVkIHRvIGZvdXIgdGVzdHM6IFRocmVlIHdo ZXJlIHdlCisJICogdGVsbCB2c25wcmludGYgdmFyeWluZyBidWZmZXIgc2l6ZXMgKHBsZW50eSwg bm90IHF1aXRlCisJICogZW5vdWdoIGFuZCAwKSwgYW5kIHRoZW4gd2UgYWxzbyB0ZXN0IHRoYXQg YnZhc3ByaW50ZiB3b3VsZAorCSAqIGJlIGFibGUgdG8gcHJpbnQgaXQgYXMgZXhwZWN0ZWQuCisJ ICovCisJZmFpbGVkX3Rlc3RzICs9IGRvX3Rlc3QoQlVGX1NJWkUsIGV4cGVjdCwgZWxlbiwgZm10 LCBhcCk7CisJcmFuZCA9IDEgKyBwcmFuZG9tX3UzMl9tYXgoZWxlbisxKTsKKwkvKiBTaW5jZSBl bGVuIDwgQlVGX1NJWkUsIHdlIGhhdmUgMSA8PSByYW5kIDw9IEJVRl9TSVpFLiAqLworCWZhaWxl ZF90ZXN0cyArPSBkb190ZXN0KHJhbmQsIGV4cGVjdCwgZWxlbiwgZm10LCBhcCk7CisJZmFpbGVk X3Rlc3RzICs9IGRvX3Rlc3QoMCwgZXhwZWN0LCBlbGVuLCBmbXQsIGFwKTsKKworCXAgPSBidmFz cHJpbnRmKGZtdCwgYXApOworCWlmIChwKSB7CisJCXRvdGFsX3Rlc3RzKys7CisJCWlmIChtZW1j bXAocCwgZXhwZWN0LCBlbGVuKzEpKSB7CisJCQlwcl93YXJuKCJidmFzcHJpbnRmKC4uLiwgXCIl c1wiLCAuLi4pIHJldHVybmVkICclcycsIGV4cGVjdGVkICclcydcbiIsCisJCQkJZm10LCBwLCBl eHBlY3QpOworCQkJZmFpbGVkX3Rlc3RzKys7CisJCX0KKwkJa2ZyZWUocCk7CisJfQorCXZhX2Vu ZChhcCk7Cit9CisKKyNkZWZpbmUgdGVzdChleHBlY3QsIGZtdCwgLi4uKQkJCQkJXAorCV9fdGVz dChleHBlY3QsIHN0cmxlbihleHBlY3QpLCBmbXQsICMjX19WQV9BUkdTX18pCisKK3N0YXRpYyB2 b2lkIF9faW5pdAordGVzdF9iYXNpYyh2b2lkKQoreworCS8qIFdvcmsgYXJvdW5kIGFubm95aW5n ICJ3YXJuaW5nOiB6ZXJvLWxlbmd0aCBnbnVfcHJpbnRmIGZvcm1hdCBzdHJpbmciLiAqLworCWNo YXIgbnVsID0gJ1wwJzsKKworCXRlc3QoIiIsICZudWwpOworCXRlc3QoIjEwMCUiLCAiMTAwJSUi KTsKKwl0ZXN0KCJ4eHgleXl5IiwgInh4eCVjeXl5IiwgJyUnKTsKKwlfX3Rlc3QoInh4eFwweXl5 IiwgNywgInh4eCVjeXl5IiwgJ1wwJyk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdAordGVzdF9u dW1iZXIodm9pZCkKK3sKKwlzaWduZWQgY2hhciB2YWw7CisKKwl0ZXN0KCIweDEyMzRhYmNkICAi LCAiJSMtMTJ4IiwgMHgxMjM0YWJjZCk7CisJdGVzdCgiICAweDEyMzRhYmNkIiwgIiUjMTJ4Iiwg MHgxMjM0YWJjZCk7CisJdGVzdCgiMHwwMDF8IDEyfCsxMjN8IDEyMzR8LTEyM3wtMTIzNCIsICIl ZHwlMDNkfCUzZHwlK2R8JSBkfCUrZHwlIGQiLCAwLCAxLCAxMiwgMTIzLCAxMjM0LCAtMTIzLCAt MTIzNCk7CisJdGVzdCgiMHwxfDF8MzI3Njh8NjU1MzUiLCAiJWh1fCVodXwlaHV8JWh1fCVodSIs IDAsIDEsIDY1NTM3LCAzMjc2OCwgLTEpOworCXRlc3QoIjB8MXwxfC0zMjc2OHwtMSIsICIlaGR8 JWhkfCVoZHwlaGR8JWhkIiwgMCwgMSwgNjU1MzcsIDMyNzY4LCAtMSk7CisJdGVzdCgiMjAxNTEy MjQyMDE1MTIyNSIsICIlaG8laG8lI2hvIiwgMTAzNywgNTI4MiwgLTExNjI3KTsKKworCXRlc3Qo IjIwMTUxMjI0MjAxNTEyMjUiLCAiJWhvJWhvJSNobyIsIDEwMzcsIDUyODIsIC0xMTYyNyk7CisK KwkvKgorCSAqIFBPU0lYL0M5OTogwrtUaGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgemVybyB3aXRo IGFuIGV4cGxpY2l0CisJICogcHJlY2lzaW9uIG9mIHplcm8gc2hhbGwgYmUgbm8gY2hhcmFjdGVy cy7CqyBIZW5jZSB0aGUgb3V0cHV0CisJICogZnJvbSB0aGUgYmVsb3cgdGVzdCBzaG91bGQgcmVh bGx5IGJlICIwMHwwfHx8ICIuIEhvd2V2ZXIsCisJICogdGhlIGtlcm5lbCdzIHByaW50ZiBhbHNv IHByb2R1Y2VzIGEgc2luZ2xlIDAgaW4gdGhhdAorCSAqIGNhc2UuIFRoaXMgdGVzdCBjYXNlIHNp bXBseSBkb2N1bWVudHMgdGhlIGN1cnJlbnQKKwkgKiBiZWhhdmlvdXIuCisJICovCisJdGVzdCgi MDB8MHwwfDB8MCIsICIlLjJkfCUuMWR8JS4wZHwlLipkfCUxLjBkIiwgMCwgMCwgMCwgMCwgMCwg MCk7CisKKwl2YWwgPSAtMTY7CisJdGVzdCgiMHhmZmZmZmZmMHwweGYwfDB4ZjAiLCAiJSMwMnh8 JSMwMnh8JSMwMngiLCB2YWwsIHZhbCAmIDB4ZmYsICh1OCl2YWwpOworCisJLyogT24gc29tZSBw bGF0Zm9ybXMsIHRlc3QgZmFpbHVyZSBoZXJlIGluZGljYXRlcyBhIG1pc2FsaWduZWQgc3RhY2sg Ki8KKwl0ZXN0KCIweDA4MDcwNjA1MDQwMzAyMDEiLCAiMHglMDE2bGx4IiwgMHgwODA3MDYwNTA0 MDMwMjAxVUxMKTsKK30KKworc3RhdGljIHZvaWQgX19pbml0Cit0ZXN0X3N0cmluZyh2b2lkKQor eworCXRlc3QoIiIsICIlcyUuMHMiLCAiIiwgIjEyMyIpOworCXRlc3QoIkFCQ0R8YWJjfDEyMyIs ICIlc3wlLjNzfCUuKnMiLCAiQUJDRCIsICJhYmNkZWYiLCAzLCAiMTIzNDU2Iik7CisJdGVzdCgi MSAgfCAgMnwzICB8ICA0fDUgICIsICIlLTNzfCUzc3wlLSpzfCUqc3wlKnMiLCAiMSIsICIyIiwg MywgIjMiLCAzLCAiNCIsIC0zLCAiNSIpOworCXRlc3QoIjEyMzQgICAgICAiLCAiJS0xMC40cyIs ICIxMjM0NTYiKTsKKwl0ZXN0KCIgICAgICAxMjM0IiwgIiUxMC40cyIsICIxMjM0NTYiKTsKK30K KworI2lmIEJJVFNfUEVSX0xPTkcgPT0gNjQKKworI2RlZmluZSBQVFJfV0lEVEggMTYKKyNkZWZp bmUgUFRSICgodm9pZCAqKTB4ZmZmZjAxMjM0NTY3ODlhYlVMKQorI2RlZmluZSBQVFJfU1RSICJm ZmZmMDEyMzQ1Njc4OWFiIgorI2RlZmluZSBQVFJfVkFMX05PX0NSTkcgIihfX19fcHRydmFsX19f XykiCisjZGVmaW5lIFpFUk9TICIwMDAwMDAwMCIJLyogaGV4IDMyIHplcm8gYml0cyAqLworI2Rl ZmluZSBPTkVTICJmZmZmZmZmZiIJCS8qIGhleCAzMiBvbmUgYml0cyAqLworCisjZWxzZQorCisj ZGVmaW5lIFBUUl9XSURUSCA4CisjZGVmaW5lIFBUUiAoKHZvaWQgKikweDQ1Njc4OWFiKQorI2Rl ZmluZSBQVFJfU1RSICI0NTY3ODlhYiIKKyNkZWZpbmUgUFRSX1ZBTF9OT19DUk5HICIocHRydmFs KSIKKyNkZWZpbmUgWkVST1MgIiIKKyNkZWZpbmUgT05FUyAiIgorCisjZW5kaWYJLyogQklUU19Q RVJfTE9ORyA9PSA2NCAqLworCisvKgorICogTlVMTCBwb2ludGVycyBhcmVuJ3QgaGFzaGVkLgor ICovCitzdGF0aWMgdm9pZCBfX2luaXQKK251bGxfcG9pbnRlcih2b2lkKQoreworCXRlc3QoWkVS T1MgIjAwMDAwMDAwIiwgIiVwIiwgTlVMTCk7CisJdGVzdChaRVJPUyAiMDAwMDAwMDAiLCAiJXB4 IiwgTlVMTCk7Cit9CisKKy8qCisgKiBFcnJvciBwb2ludGVycyBhcmVuJ3QgaGFzaGVkLgorICov CitzdGF0aWMgdm9pZCBfX2luaXQKK2Vycm9yX3BvaW50ZXIodm9pZCkKK3sKKwl0ZXN0KE9ORVMg ImZmZmZmZmY1IiwgIiVwIiwgRVJSX1BUUigtMTEpKTsKKwl0ZXN0KE9ORVMgImZmZmZmZmY1Iiwg IiVweCIsIEVSUl9QVFIoLTExKSk7Cit9CisKKyNkZWZpbmUgUFRSX0lOVkFMSUQgKCh2b2lkICop MHgwMDAwMDBhYikKKworc3RhdGljIHZvaWQgX19pbml0CitpbnZhbGlkX3BvaW50ZXIodm9pZCkK K3sKKwl0ZXN0KFpFUk9TICIwMDAwMDBhYiIsICIlcHgiLCBQVFJfSU5WQUxJRCk7Cit9CisKK3N0 YXRpYyB2b2lkIF9faW5pdAoraXA0KHZvaWQpCit7CisJSVBhZGRyX3QgaXAgPSBjcHVfdG9fYmUz MigweDdmMDAwMDAxKTsKKworCXRlc3QoIjEyNy4wLjAuMSIsICIlcEk0IiwgJmlwKTsKK30KKwor c3RhdGljIHZvaWQgX19pbml0CitpcCh2b2lkKQoreworCWlwNCgpOworfQorCitzdGF0aWMgdm9p ZCBfX2luaXQKK3V1aWQodm9pZCkKK3sKKwljb25zdCBjaGFyIHV1aWRbMTZdID0gezB4MCwgMHgx LCAweDIsIDB4MywgMHg0LCAweDUsIDB4NiwgMHg3LAorCQkJICAgICAgIDB4OCwgMHg5LCAweGEs IDB4YiwgMHhjLCAweGQsIDB4ZSwgMHhmfTsKKworCWlmICghSVNfRU5BQkxFRChDT05GSUdfUFJJ TlRGX1VVSUQpKQorCQlyZXR1cm47CisKKwl0ZXN0KCIwMDAxMDIwMy0wNDA1LTA2MDctMDgwOS0w YTBiMGMwZDBlMGYiLCAiJXBVYiIsIHV1aWQpOworCXRlc3QoIjAwMDEwMjAzLTA0MDUtMDYwNy0w ODA5LTBBMEIwQzBEMEUwRiIsICIlcFVCIiwgdXVpZCk7CisJdGVzdCgiMDMwMjAxMDAtMDUwNC0w NzA2LTA4MDktMGEwYjBjMGQwZTBmIiwgIiVwVWwiLCB1dWlkKTsKKwl0ZXN0KCIwMzAyMDEwMC0w NTA0LTA3MDYtMDgwOS0wQTBCMEMwRDBFMEYiLCAiJXBVTCIsIHV1aWQpOworfQorCitzdGF0aWMg dm9pZCBfX2luaXQKK2VycnB0cih2b2lkKQoreworCXRlc3QoImVycm9yIDEyMzQiLCAiJXBlIiwg RVJSX1BUUigtMTIzNCkpOworCXRlc3Qoc2l6ZW9mKHZvaWQgKikgPT0gOCA/ICIwMDAwMDAwMDAw MDAwNGQyIiA6ICIwMDAwMDRkMiIsICIlcGUiLCBFUlJfUFRSKDEyMzQpKTsKKworCS8qIENoZWNr IHRoYXQgJXBlIHdpdGggYSBub24tRVJSX1BUUiBnZXRzIHRyZWF0ZWQgYXMgb3JkaW5hcnkgJXAu ICovCisJQlVJTERfQlVHX09OKElTX0VSUihQVFIpKTsKKworCWlmICghSVNfRU5BQkxFRChDT05G SUdfRVJSTk9fTUVTU0FHRVMpKQorCQlyZXR1cm47CisJdGVzdCgiKE9wZXJhdGlvbiBub3QgcGVy bWl0dGVkKSIsICIoJXBlKSIsIEVSUl9QVFIoLUVQRVJNKSk7CisJdGVzdCgiUmVxdWVzdGVkIHBy b2JlIGRlZmVycmFsIiwgIiVwZSIsIEVSUl9QVFIoLUVQUk9CRV9ERUZFUikpOworfQorCitzdGF0 aWMgdm9pZCBfX2luaXQKK3Rlc3RfcG9pbnRlcih2b2lkKQoreworCW51bGxfcG9pbnRlcigpOwor CWVycm9yX3BvaW50ZXIoKTsKKwlpbnZhbGlkX3BvaW50ZXIoKTsKKwlpcCgpOworCXV1aWQoKTsK KwllcnJwdHIoKTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IHRlc3RfcHJpbnRmKHZvaWQpCit7 CisJYWxsb2NlZF9idWZmZXIgPSBtYWxsb2MoQlVGX1NJWkUgKyAyKlBBRF9TSVpFKTsKKwlpZiAo IWFsbG9jZWRfYnVmZmVyKQorCQlyZXR1cm47CisJdGVzdF9idWZmZXIgPSBhbGxvY2VkX2J1ZmZl ciArIFBBRF9TSVpFOworCisJdGVzdF9iYXNpYygpOworCXRlc3RfbnVtYmVyKCk7CisJdGVzdF9z dHJpbmcoKTsKKwl0ZXN0X3BvaW50ZXIoKTsKKworCWZyZWUoYWxsb2NlZF9idWZmZXIpOworfQor Citic2VsZnRlc3QoY29yZSwgdGVzdF9wcmludGYpOworTU9EVUxFX0FVVEhPUigiUmFzbXVzIFZp bGxlbW9lcyA8bGludXhAcmFzbXVzdmlsbGVtb2VzLmRrPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQ TCIpOwotLSAKMi4yOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJveAo=