From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 13D6AC369C2 for ; Tue, 22 Apr 2025 19:47:38 +0000 (UTC) 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=xHUCtr9Rit12e1KLT1va64yMJ0uNIbiAP35p+FnzNN4=; b=hOI/HGHVMymJcx vY/OOGbgvxC2gwLrp6KRwb1GbaP7ZSN/mvadT/1HTwci7f//6vMLH1qhJUtLCFapKjXjped+1HkTg xN9CLhoPcrIXJehVUbnevgtxn+LPfMjJ6rl3t1aoPXqJ/Iew88miyz2fw445qL/XNEIfCZ3IzJ1yo vul3obkLVZ2zTLnHDRQNQCjXlQm72c7wEhLbjUndOwTZrtD1IBVfuvbNz/3WQgm0evpkzjHUi4iMm /fn/gRIfVZIwQMDwGVJyUD/AfNGqEdlM1BuoKypssigZoEV7SFITOL9fNkLlH4ZXlSX9/UgILv2yS WEhEkkqwOSJZZHObQWcQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u7Jae-00000008Ll8-0hMd; Tue, 22 Apr 2025 19:47:32 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u7GQB-00000007tc4-4BGy for linux-riscv@lists.infradead.org; Tue, 22 Apr 2025 16:24:33 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-223fd89d036so66444855ad.1 for ; Tue, 22 Apr 2025 09:24:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1745339071; x=1745943871; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dIpUsARUWkMqbtxQjxYky+3G1SaiCnjwvQ5qtBxu/rw=; b=brt9mRPl3HRiSwCi0O4ikZPU3vr2YoGL72Yo8CfPsPu59VHQ4CqbGrR6DE4RYn4zUB f4jBusGNWOypWjn622Jh7vRp5UDnHPCPdASORO+fQmEe5eKrkz9oP0U4XCxO1lMfUcoK IfldF18OwB5QkKdJtqwAlAaoszT5M7k4lLbZik0da4s8FWmSWYPzzZ3vdNthOQA6uPY4 PVM8ycnpTiS054jYDI3d/BL3o96cDyW2EJtk2neGOgb+mwOXwXa1x1hC/stwU6Uc0UCX xImpiR2f/jWZW7HvBRHM9PPof5j6pDsV84H1YRiVgCYUPIdJrL6vudJsGCQocVFyV0NQ ESrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745339071; x=1745943871; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dIpUsARUWkMqbtxQjxYky+3G1SaiCnjwvQ5qtBxu/rw=; b=SqmU6V8lQz5Ua+bms43bGg6RbAmgJ+VlPAIUV0gYwIYOQixldzCefM3OB3Ut8mDpyc J/QtJbfJsEKN+RGfDWym48WhOeHG5XBNJP/0hXMlPMHGuozJGNctO1+RC0+NPSt/Plny lDzMAIS1Tku6wwsguS8aYwuJwjTPOytapxwUW+Ui5RH4yrgJhNAeBWBG7B2Gbgc67m7m fTaFRQR7mezK1upYX7/ri17YGCb89Ct7jKnc0/Oy8pFwu1A9IYiiyKZKM7ZCr1aeM1c0 RnaL6sj7hkEvenw3ZYYYd2A2wbAkS691j8LtyfzYM69rCaXFJ3cvtClI2slOCV1LsNOx yChQ== X-Forwarded-Encrypted: i=1; AJvYcCWTJI8Y1OfRJ6NYC1NiSsOtZKnR7/iHxtq3HgtEd/2BPEC2hiJql4O8+sKAChdMqp7vXhP89Hb4TCMRCQ==@lists.infradead.org X-Gm-Message-State: AOJu0YyG4dvrFIQJfxQiMAAkcKn/Fb5IqYY/a+XIdUQCNChk9mZh0/+m P0wDtbqZSDaNsQvpgQfnnXA8KWOueAR8/TNTClfAkP0jwu60B6Z0POMuHYWFnIY= X-Gm-Gg: ASbGncs+UzJuoV9IXxdJtEoafQmlV3e01vqPlnH8OLEUdJBP+orYm26PbHdvU2OAjJT 45KJfjVVDv76ThRtXkIUWUoQlDIFWD5oxbkjNLt6+xCRWbunJqHDlff2Mx8Uo4/5dQDpD1Efh4V s/CxtsVQmz0xJlPkzED2ezgfBC/YnsKZOYhZuORWa9Wss1bktvYjfxMJkDDd2d/72COaQrQCZyW GSd8yoVnRVebHLAXvHvY0F6sCFv22x5ijUgbMagtXmVbIMhiP1i8ljxjHrFGRB9KLU9h7PmiOaH Oe0H/alROKo+rlQ3Axrn2JWFAjx57Q2a1c918PfhFg== X-Google-Smtp-Source: AGHT+IF27p3zRzBn7tVyZ2nbLjKWuCssaT8xxvcRNL8ikODLRqgzKD8UEBD+PG4GKuDln1XyBArFOA== X-Received: by 2002:a17:903:46c8:b0:224:584:6eef with SMTP id d9443c01a7336-22c53606ee5mr272754465ad.41.1745339071041; Tue, 22 Apr 2025 09:24:31 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73dbf8e13e1sm8850825b3a.46.2025.04.22.09.24.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Apr 2025 09:24:30 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: linux-doc@vger.kernel.org (open list:DOCUMENTATION), linux-kernel@vger.kernel.org (open list), linux-riscv@lists.infradead.org (open list:RISC-V ARCHITECTURE), linux-kselftest@vger.kernel.org (open list:KERNEL SELFTEST FRAMEWORK) Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Jonathan Corbet , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Shuah Khan , Andrew Jones , Samuel Holland Subject: [PATCH v2 5/5] selftests: riscv: add misaligned access testing Date: Tue, 22 Apr 2025 18:23:12 +0200 Message-ID: <20250422162324.956065-6-cleger@rivosinc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250422162324.956065-1-cleger@rivosinc.com> References: <20250422162324.956065-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250422_092432_044478_74019F11 X-CRM114-Status: GOOD ( 18.35 ) X-BeenThere: linux-riscv@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: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org VGhpcyBzZWxmdGVzdCB0ZXN0cyAoYWxtb3N0KSBhbGwgdGhlIGN1cnJlbnRseSBlbXVsYXRlZCBp bnN0cnVjdGlvbgooZXhjZXB0IGZvciB0aGUgUlYzMiBjb21wcmVzc2VkIG9uZXMgd2hpY2ggYXJl IGxlZnQgYXMgYSBmdXR1cmUKZXhlcmNpc2UgZm9yIGEgUlYzMiB1c2VyKS4gRm9yIHRoZSBGUFUg aW5zdHJ1Y3Rpb25zLCBhbGwgdGhlIEZQVQpyZWdpc3RlcnMgYXJlIHRlc3RlZC4KClNpZ25lZC1v ZmYtYnk6IENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4KLS0tCiAuLi4vc2Vs ZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvLmdpdGlnbm9yZSAgICAgfCAgIDEgKwogLi4uL3NlbGZ0 ZXN0cy9yaXNjdi9taXNhbGlnbmVkL01ha2VmaWxlICAgICAgIHwgIDEyICsKIC4uLi9zZWxmdGVz dHMvcmlzY3YvbWlzYWxpZ25lZC9jb21tb24uUyAgICAgICB8ICAzMyArKysKIC4uLi90ZXN0aW5n L3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2ZwdS5TICB8IDE4MCArKysrKysrKysrKysrCiB0 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2dwLlMgfCAxMDMgKysrKysr KwogLi4uL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL21pc2FsaWduZWQuYyAgIHwgMjU0ICsr KysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA1ODMgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQv LmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jp c2N2L21pc2FsaWduZWQvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2NvbW1vbi5TCiBjcmVhdGUgbW9kZSAxMDA2NDQg dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9mcHUuUwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvZ3AuUwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWdu ZWQvbWlzYWxpZ25lZC5jCgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlz Y3YvbWlzYWxpZ25lZC8uZ2l0aWdub3JlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3Yv bWlzYWxpZ25lZC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uNWVmZjE1YTFmOTgxCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvcmlzY3YvbWlzYWxpZ25lZC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEgQEAKK21pc2FsaWdu ZWQKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQv TWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWFhNDAxMTBjNTBk Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxp Z25lZC9NYWtlZmlsZQpAQCAtMCwwICsxLDEyIEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCisjIENvcHlyaWdodCAoQykgMjAyMSBBUk0gTGltaXRlZAorIyBPcmlnaW5hbGx5 IHRvb2xzL3Rlc3RpbmcvYXJtNjQvYWJpL01ha2VmaWxlCisKK0NGTEFHUyArPSAtSSQodG9wX3Ny Y2RpcikvdG9vbHMvaW5jbHVkZQorCitURVNUX0dFTl9QUk9HUyA6PSBtaXNhbGlnbmVkCisKK2lu Y2x1ZGUgLi4vLi4vbGliLm1rCisKKyQoT1VUUFVUKS9taXNhbGlnbmVkOiBtaXNhbGlnbmVkLmMg ZnB1LlMgZ3AuUworCSQoQ0MpIC1nMyAtc3RhdGljIC1vJEAgLW1hcmNoPXJ2NjRpbWFmZGMgJChD RkxBR1MpICQoTERGTEFHUykgJF4KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3Jpc2N2L21pc2FsaWduZWQvY29tbW9uLlMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNj di9taXNhbGlnbmVkL2NvbW1vbi5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uOGZhMDAwMzViZDVkCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9jb21tb24uUwpAQCAtMCwwICsxLDMzIEBACisvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogQ29weXJpZ2h0IChj KSAyMDI1IFJpdm9zIEluYy4KKyAqCisgKiBBdXRob3JzOgorICogICAgIENsw6ltZW50IEzDqWdl ciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4KKyAqLworCisubWFjcm8gbGJfc2IgdGVtcCwgb2Zmc2V0 LCBzcmMsIGRzdAorCWxiIFx0ZW1wLCBcb2Zmc2V0KFxzcmMpCisJc2IgXHRlbXAsIFxvZmZzZXQo XGRzdCkKKy5lbmRtCisKKy5tYWNybyBjb3B5X2xvbmdfdG8gdGVtcCwgc3JjLCBkc3QKKwlsYl9z YiBcdGVtcCwgMCwgXHNyYywgXGRzdCwKKwlsYl9zYiBcdGVtcCwgMSwgXHNyYywgXGRzdCwKKwls Yl9zYiBcdGVtcCwgMiwgXHNyYywgXGRzdCwKKwlsYl9zYiBcdGVtcCwgMywgXHNyYywgXGRzdCwK KwlsYl9zYiBcdGVtcCwgNCwgXHNyYywgXGRzdCwKKwlsYl9zYiBcdGVtcCwgNSwgXHNyYywgXGRz dCwKKwlsYl9zYiBcdGVtcCwgNiwgXHNyYywgXGRzdCwKKwlsYl9zYiBcdGVtcCwgNywgXHNyYywg XGRzdCwKKy5lbmRtCisKKy5tYWNybyBzcF9zdGFja19wcm9sb2d1ZSBvZmZzZXQKKwlhZGRpIHNw LCBzcCwgLTgKKwlzdWIgc3AsIHNwLCBcb2Zmc2V0CisuZW5kbQorCisubWFjcm8gc3Bfc3RhY2tf ZXBpbG9ndWUgb2Zmc2V0CisJYWRkIHNwLCBzcCwgXG9mZnNldAorCWFkZGkgc3AsIHNwLCA4Cisu ZW5kbQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25l ZC9mcHUuUyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvZnB1LlMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMDA4YmZmNTgzMTAKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVk L2ZwdS5TCkBAIC0wLDAgKzEsMTgwIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5ICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1IFJpdm9zIEluYy4KKyAqCisg KiBBdXRob3JzOgorICogICAgIENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4K KyAqLworCisjaW5jbHVkZSAiY29tbW9uLlMiCisKKyNkZWZpbmUgQ0FTRV9BTElHTgkJNAorCisu bWFjcm8gZnB1X2xvYWRfaW5zdCBmcHJlZywgaW5zdCwgcHJlY2lzaW9uLCBsb2FkX3JlZworLmFs aWduIENBU0VfQUxJR04KKwlcaW5zdCBcZnByZWcsIDAoXGxvYWRfcmVnKQorCWZtdi5ccHJlY2lz aW9uIGZhMCwgXGZwcmVnCisJaiAyZgorLmVuZG0KKworI2RlZmluZSBmbHcoX19mcHJlZykgZnB1 X2xvYWRfaW5zdCBfX2ZwcmVnLCBmbHcsIHMsIHMxCisjZGVmaW5lIGZsZChfX2ZwcmVnKSBmcHVf bG9hZF9pbnN0IF9fZnByZWcsIGZsZCwgZCwgczEKKyNkZWZpbmUgY19mbHcoX19mcHJlZykgZnB1 X2xvYWRfaW5zdCBfX2ZwcmVnLCBjLmZsdywgcywgczEKKyNkZWZpbmUgY19mbGQoX19mcHJlZykg ZnB1X2xvYWRfaW5zdCBfX2ZwcmVnLCBjLmZsZCwgZCwgczEKKyNkZWZpbmUgY19mbGRzcChfX2Zw cmVnKSBmcHVfbG9hZF9pbnN0IF9fZnByZWcsIGMuZmxkc3AsIGQsIHNwCisKKy5tYWNybyBmcHVf c3RvcmVfaW5zdCBmcHJlZywgaW5zdCwgcHJlY2lzaW9uLCBzdG9yZV9yZWcKKy5hbGlnbiBDQVNF X0FMSUdOCisJZm12LlxwcmVjaXNpb24gXGZwcmVnLCBmYTAKKwlcaW5zdCBcZnByZWcsIDAoXHN0 b3JlX3JlZykKKwlqIDJmCisuZW5kbQorCisjZGVmaW5lIGZzdyhfX2ZwcmVnKSBmcHVfc3RvcmVf aW5zdCBfX2ZwcmVnLCBmc3csIHMsIHMxCisjZGVmaW5lIGZzZChfX2ZwcmVnKSBmcHVfc3RvcmVf aW5zdCBfX2ZwcmVnLCBmc2QsIGQsIHMxCisjZGVmaW5lIGNfZnN3KF9fZnByZWcpIGZwdV9zdG9y ZV9pbnN0IF9fZnByZWcsIGMuZnN3LCBzLCBzMQorI2RlZmluZSBjX2ZzZChfX2ZwcmVnKSBmcHVf c3RvcmVfaW5zdCBfX2ZwcmVnLCBjLmZzZCwgZCwgczEKKyNkZWZpbmUgY19mc2RzcChfX2ZwcmVn KSBmcHVfc3RvcmVfaW5zdCBfX2ZwcmVnLCBjLmZzZHNwLCBkLCBzcAorCisubWFjcm8gZnBfdGVz dF9wcm9sb2d1ZQorCW1vdmUgczEsIGExCisJLyoKKwkgKiBDb21wdXRlIGp1bXAgb2Zmc2V0IHRv IHN0b3JlIHRoZSBjb3JyZWN0IEZQIHJlZ2lzdGVyIHNpbmNlIHdlIGRvbid0CisJICogaGF2ZSBp bmRpcmVjdCBGUCByZWdpc3RlciBhY2Nlc3MgKG9yIGF0IGxlYXN0IHdlIGRvbid0IHVzZSB0aGlz CisJICogZXh0ZW5zaW9uIHNvIHRoYXQgd29ya3Mgb24gYWxsIGFyY2hzKQorCSAqLworCXNsbCB0 MCwgYTAsIENBU0VfQUxJR04KKwlsYSB0MiwgMWYKKwlhZGQgdDAsIHQwLCB0MgorCWpyIHQwCisu YWxpZ24JQ0FTRV9BTElHTgorMToKKy5lbmRtCisKKy5tYWNybyBmcF90ZXN0X3Byb2xvZ3VlX2Nv bXByZXNzZWQKKwkvKiBGUCByZWdpc3RlcnMgZm9yIGNvbXByZXNzZWQgaW5zdHJ1Y3Rpb25zIHN0 YXJ0cyBmcm9tIDggdG8gMTYgKi8KKwlhZGRpIGEwLCBhMCwgLTgKKwlmcF90ZXN0X3Byb2xvZ3Vl CisuZW5kbQorCisjZGVmaW5lIGZwX3Rlc3RfYm9keV9jb21wcmVzc2VkKF9faW5zdF9mdW5jKSBc CisJX19pbnN0X2Z1bmMoZjgpOyBcCisJX19pbnN0X2Z1bmMoZjkpOyBcCisJX19pbnN0X2Z1bmMo ZjEwKTsgXAorCV9faW5zdF9mdW5jKGYxMSk7IFwKKwlfX2luc3RfZnVuYyhmMTIpOyBcCisJX19p bnN0X2Z1bmMoZjEzKTsgXAorCV9faW5zdF9mdW5jKGYxNCk7IFwKKwlfX2luc3RfZnVuYyhmMTUp OyBcCisyOgorCisjZGVmaW5lIGZwX3Rlc3RfYm9keShfX2luc3RfZnVuYykgXAorCV9faW5zdF9m dW5jKGYwKTsgXAorCV9faW5zdF9mdW5jKGYxKTsgXAorCV9faW5zdF9mdW5jKGYyKTsgXAorCV9f aW5zdF9mdW5jKGYzKTsgXAorCV9faW5zdF9mdW5jKGY0KTsgXAorCV9faW5zdF9mdW5jKGY1KTsg XAorCV9faW5zdF9mdW5jKGY2KTsgXAorCV9faW5zdF9mdW5jKGY3KTsgXAorCV9faW5zdF9mdW5j KGY4KTsgXAorCV9faW5zdF9mdW5jKGY5KTsgXAorCV9faW5zdF9mdW5jKGYxMCk7IFwKKwlfX2lu c3RfZnVuYyhmMTEpOyBcCisJX19pbnN0X2Z1bmMoZjEyKTsgXAorCV9faW5zdF9mdW5jKGYxMyk7 IFwKKwlfX2luc3RfZnVuYyhmMTQpOyBcCisJX19pbnN0X2Z1bmMoZjE1KTsgXAorCV9faW5zdF9m dW5jKGYxNik7IFwKKwlfX2luc3RfZnVuYyhmMTcpOyBcCisJX19pbnN0X2Z1bmMoZjE4KTsgXAor CV9faW5zdF9mdW5jKGYxOSk7IFwKKwlfX2luc3RfZnVuYyhmMjApOyBcCisJX19pbnN0X2Z1bmMo ZjIxKTsgXAorCV9faW5zdF9mdW5jKGYyMik7IFwKKwlfX2luc3RfZnVuYyhmMjMpOyBcCisJX19p bnN0X2Z1bmMoZjI0KTsgXAorCV9faW5zdF9mdW5jKGYyNSk7IFwKKwlfX2luc3RfZnVuYyhmMjYp OyBcCisJX19pbnN0X2Z1bmMoZjI3KTsgXAorCV9faW5zdF9mdW5jKGYyOCk7IFwKKwlfX2luc3Rf ZnVuYyhmMjkpOyBcCisJX19pbnN0X2Z1bmMoZjMwKTsgXAorCV9faW5zdF9mdW5jKGYzMSk7IFwK KzI6CisudGV4dAorCisjZGVmaW5lIF9fZ2VuX3Rlc3RfaW5zdChfX2luc3QsIF9fc3VmZml4KSBc CisuZ2xvYmFsIHRlc3RfICMjIF9faW5zdDsgXAordGVzdF8gIyMgX19pbnN0OjsgXAorCWZwX3Rl c3RfcHJvbG9ndWUgIyMgX19zdWZmaXg7IFwKKwlmcF90ZXN0X2JvZHkgIyMgX19zdWZmaXgoX19p bnN0KTsgXAorCXJldAorCisjZGVmaW5lIGdlbl90ZXN0X2luc3RfY29tcHJlc3NlZChfX2luc3Qp IFwKKwkub3B0aW9uIGFyY2gsK2M7IFwKKwlfX2dlbl90ZXN0X2luc3QoY18gIyMgX19pbnN0LCBf Y29tcHJlc3NlZCkKKworI2RlZmluZSBnZW5fdGVzdF9pbnN0KF9faW5zdCkgXAorCS5iYWxpZ24g MTY7IFwKKwkub3B0aW9uIHB1c2g7IFwKKwkub3B0aW9uIGFyY2gsLWM7IFwKKwlfX2dlbl90ZXN0 X2luc3QoX19pbnN0LCApOyBcCisJLm9wdGlvbiBwb3AKKworLm1hY3JvIGZwX3Rlc3RfcHJvbG9n dWVfbG9hZF9jb21wcmVzc2VkX3NwCisJY29weV9sb25nX3RvIHQwLCBhMSwgc3AKKy5lbmRtCisK Ky5tYWNybyBmcF90ZXN0X2VwaWxvZ3VlX2xvYWRfY29tcHJlc3NlZF9zcAorLmVuZG0KKworLm1h Y3JvIGZwX3Rlc3RfcHJvbG9ndWVfc3RvcmVfY29tcHJlc3NlZF9zcAorLmVuZG0KKworLm1hY3Jv IGZwX3Rlc3RfZXBpbG9ndWVfc3RvcmVfY29tcHJlc3NlZF9zcAorCWNvcHlfbG9uZ190byB0MCwg c3AsIGExCisuZW5kbQorCisjZGVmaW5lIGdlbl9pbnN0X2NvbXByZXNzZWRfc3AoX19pbnN0LCBf X3R5cGUpIFwKKwkuZ2xvYmFsIHRlc3RfY18gIyMgX19pbnN0ICMjIHNwOyBcCisJdGVzdF9jXyAj IyBfX2luc3QgIyMgc3A6OyBcCisJCXNwX3N0YWNrX3Byb2xvZ3VlIGEyOyBcCisJCWZwX3Rlc3Rf cHJvbG9ndWVfIyMgX190eXBlICMjIF9jb21wcmVzc2VkX3NwOyBcCisJCWZwX3Rlc3RfcHJvbG9n dWVfY29tcHJlc3NlZDsgXAorCQlmcF90ZXN0X2JvZHlfY29tcHJlc3NlZChjXyAjIyBfX2luc3Qg IyMgc3ApOyBcCisJCWZwX3Rlc3RfZXBpbG9ndWVfIyMgX190eXBlICMjIF9jb21wcmVzc2VkX3Nw OyBcCisJCXNwX3N0YWNrX2VwaWxvZ3VlIGEyOyBcCisJCXJldAorCisjZGVmaW5lIGdlbl90ZXN0 X2xvYWRfY29tcHJlc3NlZF9zcChfX2luc3QpIGdlbl9pbnN0X2NvbXByZXNzZWRfc3AoX19pbnN0 LCBsb2FkKQorI2RlZmluZSBnZW5fdGVzdF9zdG9yZV9jb21wcmVzc2VkX3NwKF9faW5zdCkgZ2Vu X2luc3RfY29tcHJlc3NlZF9zcChfX2luc3QsIHN0b3JlKQorCisvKgorICogZmxvYXRfZnN3X3Jl ZyAtIFNldCBhIEZQIHJlZ2lzdGVyIGZyb20gYSByZWdpc3RlciBjb250YWluaW5nIHRoZSB2YWx1 ZQorICogYTAgPSBGUCByZWdpc3RlciBpbmRleCB0byBiZSBzZXQKKyAqIGExID0gYWRkciB3aGVy ZSB0byBzdG9yZSByZWdpc3RlciB2YWx1ZQorICogYTIgPSBhZGRyZXNzIG9mZnNldAorICogYTMg PSB2YWx1ZSB0byBiZSBzdG9yZQorICovCitnZW5fdGVzdF9pbnN0KGZzdykKKworLyoKKyAqIGZs b2F0X2Zsd19yZWcgLSBHZXQgYSBGUCByZWdpc3RlciB2YWx1ZSBhbmQgcmV0dXJuIGl0CisgKiBh MCA9IEZQIHJlZ2lzdGVyIGluZGV4IHRvIGJlIHJldHJpZXZlZAorICogYTEgPSBhZGRyIHRvIGxv YWQgcmVnaXN0ZXIgZnJvbQorICogYTIgPSBhZGRyZXNzIG9mZnNldAorICovCitnZW5fdGVzdF9p bnN0KGZsdykKKworZ2VuX3Rlc3RfaW5zdChmc2QpCisjaWZkZWYgX19yaXNjdl9jb21wcmVzc2Vk CitnZW5fdGVzdF9pbnN0X2NvbXByZXNzZWQoZnNkKQorZ2VuX3Rlc3Rfc3RvcmVfY29tcHJlc3Nl ZF9zcChmc2QpCisjZW5kaWYKKworZ2VuX3Rlc3RfaW5zdChmbGQpCisjaWZkZWYgX19yaXNjdl9j b21wcmVzc2VkCitnZW5fdGVzdF9pbnN0X2NvbXByZXNzZWQoZmxkKQorZ2VuX3Rlc3RfbG9hZF9j b21wcmVzc2VkX3NwKGZsZCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9ncC5TIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlz Y3YvbWlzYWxpZ25lZC9ncC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZjUzZjRjNmQ4MWRkCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvcmlzY3YvbWlzYWxpZ25lZC9ncC5TCkBAIC0wLDAgKzEsMTAzIEBACisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1 IFJpdm9zIEluYy4KKyAqCisgKiBBdXRob3JzOgorICogICAgIENsw6ltZW50IEzDqWdlciA8Y2xl Z2VyQHJpdm9zaW5jLmNvbT4KKyAqLworCisjaW5jbHVkZSAiY29tbW9uLlMiCisKKy50ZXh0CisK Ky5tYWNybyBfX2dlbl90ZXN0X2luc3QgaW5zdCwgc3JjX3JlZworCVxpbnN0IGEyLCAwKFxzcmNf cmVnKQorCW1vdmUgYTAsIGEyCisuZW5kbQorCisubWFjcm8gZ2VuX2Z1bmNfaGVhZGVyIGZ1bmNf bmFtZSwgcnZjCisJLm9wdGlvbiBhcmNoLFxydmMKKwkuZ2xvYmFsIHRlc3RfXGZ1bmNfbmFtZQor CXRlc3RfXGZ1bmNfbmFtZToKKy5lbmRtCisKKy5tYWNybyBnZW5fdGVzdF9pbnN0IGluc3QKKwku b3B0aW9uIHB1c2gKKwlnZW5fZnVuY19oZWFkZXIgXGluc3QsIC1jCisJX19nZW5fdGVzdF9pbnN0 IFxpbnN0LCBhMAorCS5vcHRpb24gcG9wCisJcmV0CisuZW5kbQorCisubWFjcm8gX19nZW5fdGVz dF9pbnN0X2MgbmFtZSwgc3JjX3JlZworCS5vcHRpb24gcHVzaAorCWdlbl9mdW5jX2hlYWRlciBj X1xuYW1lLCArYworCSBfX2dlbl90ZXN0X2luc3QgYy5cbmFtZSwgXHNyY19yZWcKKwkub3B0aW9u IHBvcAorCXJldAorLmVuZG0KKworLm1hY3JvIGdlbl90ZXN0X2luc3RfYyBuYW1lCisgCV9fZ2Vu X3Rlc3RfaW5zdF9jIFxuYW1lLCBhMAorLmVuZG0KKworCisubWFjcm8gZ2VuX3Rlc3RfaW5zdF9s b2FkX2Nfc3AgbmFtZQorCS5vcHRpb24gcHVzaAorCWdlbl9mdW5jX2hlYWRlciBjX1xuYW1lXCgp c3AsICtjCisJc3Bfc3RhY2tfcHJvbG9ndWUgYTEKKwljb3B5X2xvbmdfdG8gdDAsIGEwLCBzcAor CWMubGRzcCBhMCwgMChzcCkKKwlzcF9zdGFja19lcGlsb2d1ZSBhMQorCS5vcHRpb24gcG9wCisJ cmV0CisuZW5kbQorCisubWFjcm8gbGJfc3Bfc2JfYTAgcmVnLCBvZmZzZXQKKwlsYl9zYiBccmVn LCBcb2Zmc2V0LCBzcCwgYTAKKy5lbmRtCisKKy5tYWNybyBnZW5fdGVzdF9pbnN0X3N0b3JlX2Nf c3AgaW5zdF9uYW1lCisJLm9wdGlvbiBwdXNoCisJZ2VuX2Z1bmNfaGVhZGVyIGNfXGluc3RfbmFt ZVwoKXNwLCArYworCS8qIE1pc2FsaWduIHN0YWNrIHBvaW50ZXIgKi8KKwlzcF9zdGFja19wcm9s b2d1ZSBhMQorCS8qIE1pc2FsaWduIGFjY2VzcyAqLworCWMuc2RzcCBhMiwgMChzcCkKKwljb3B5 X2xvbmdfdG8gdDAsIHNwLCBhMAorCXNwX3N0YWNrX2VwaWxvZ3VlIGExCisJLm9wdGlvbiBwb3AK KwlyZXQKKy5lbmRtCisKKworIC8qCisgKiBhMCA9IGFkZHIgdG8gbG9hZCBmcm9tCisgKiBhMSA9 IGFkZHJlc3Mgb2Zmc2V0CisgKiBhMiA9IHZhbHVlIHRvIGJlIGxvYWRlZAorICovCitnZW5fdGVz dF9pbnN0IGxoCitnZW5fdGVzdF9pbnN0IGxodQorZ2VuX3Rlc3RfaW5zdCBsdworZ2VuX3Rlc3Rf aW5zdCBsd3UKK2dlbl90ZXN0X2luc3QgbGQKKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKK2dl bl90ZXN0X2luc3RfYyBsdworZ2VuX3Rlc3RfaW5zdF9jIGxkCitnZW5fdGVzdF9pbnN0X2xvYWRf Y19zcCBsZAorI2VuZGlmCisKKy8qCisgKiBhMCA9IGFkZHIgd2hlcmUgdG8gc3RvcmUgdmFsdWUK KyAqIGExID0gYWRkcmVzcyBvZmZzZXQKKyAqIGEyID0gdmFsdWUgdG8gYmUgc3RvcmVkCisgKi8K K2dlbl90ZXN0X2luc3Qgc2gKK2dlbl90ZXN0X2luc3Qgc3cKK2dlbl90ZXN0X2luc3Qgc2QKKyNp ZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKK2dlbl90ZXN0X2luc3RfYyBzdworZ2VuX3Rlc3RfaW5z dF9jIHNkCitnZW5fdGVzdF9pbnN0X3N0b3JlX2Nfc3Agc2QKKyNlbmRpZgorCmRpZmYgLS1naXQg YS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL21pc2FsaWduZWQuYyBi L3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvbWlzYWxpZ25lZC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzY2YWE4N2VjMDNlCi0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9t aXNhbGlnbmVkLmMKQEAgLTAsMCArMSwyNTQgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1IFJpdm9zIEluYy4KKyAqCisgKiBB dXRob3JzOgorICogICAgIENsw6ltZW50IEzDqWdlciA8Y2xlZ2VyQHJpdm9zaW5jLmNvbT4KKyAq LworI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3Rk bGliLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CisjaW5jbHVkZSAiLi4vLi4va3NlbGZ0 ZXN0X2hhcm5lc3MuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+ CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8ZmxvYXQuaD4KKyNpbmNsdWRlIDxlcnJu by5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxz aWduYWwuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5j bHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDx1Y29udGV4dC5oPgorCisjaW5jbHVkZSA8c3lz L3ByY3RsLmg+CisKKyNkZWZpbmUgc3RyaW5naWZ5KHMpIF9fc3RyaW5naWZ5KHMpCisjZGVmaW5l IF9fc3RyaW5naWZ5KHMpICNzCisKKyNkZWZpbmUgVkFMMTYJMHgxMjM0CisjZGVmaW5lIFZBTDMy CTB4REVBREJFRUYKKyNkZWZpbmUgVkFMNjQJMHg0NTY3NDMyMUQwMERGNzg5CisKKyNkZWZpbmUg VkFMX2Zsb2F0CTc4OTUxLjIzNDM3NQorI2RlZmluZSBWQUxfZG91YmxlCTU2Nzg5MC41MTIzOTY5 NjU3ODk1ODkyOTAKKworc3RhdGljIGJvb2wgZmxvYXRfZXF1YWwoZmxvYXQgYSwgZmxvYXQgYikK K3sKKwlmbG9hdCBzY2FsZWRfZXBzaWxvbjsKKwlmbG9hdCBkaWZmZXJlbmNlID0gZmFic2YoYSAt IGIpOworCisJLy8gU2NhbGUgdG8gdGhlIGxhcmdlc3QgdmFsdWUuCisJYSA9IGZhYnNmKGEpOwor CWIgPSBmYWJzZihiKTsKKwlpZiAoYSA+IGIpCisJCXNjYWxlZF9lcHNpbG9uID0gRkxUX0VQU0lM T04gKiBhOworCWVsc2UKKwkJc2NhbGVkX2Vwc2lsb24gPSBGTFRfRVBTSUxPTiAqIGI7CisKKwly ZXR1cm4gZGlmZmVyZW5jZSA8PSBzY2FsZWRfZXBzaWxvbjsKK30KKworc3RhdGljIGJvb2wgZG91 YmxlX2VxdWFsKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKwlkb3VibGUgc2NhbGVkX2Vwc2lsb247 CisJZG91YmxlIGRpZmZlcmVuY2UgPSBmYWJzZihhIC0gYik7CisKKwkvLyBTY2FsZSB0byB0aGUg bGFyZ2VzdCB2YWx1ZS4KKwlhID0gZmFicyhhKTsKKwliID0gZmFicyhiKTsKKwlpZiAoYSA+IGIp CisJCXNjYWxlZF9lcHNpbG9uID0gREJMX0VQU0lMT04gKiBhOworCWVsc2UKKwkJc2NhbGVkX2Vw c2lsb24gPSBEQkxfRVBTSUxPTiAqIGI7CisKKwlyZXR1cm4gZGlmZmVyZW5jZSA8PSBzY2FsZWRf ZXBzaWxvbjsKK30KKworI2RlZmluZSBmcHVfbG9hZF9wcm90byhfX2luc3QsIF9fdHlwZSkgXAor ZXh0ZXJuIF9fdHlwZSB0ZXN0XyAjIyBfX2luc3QodW5zaWduZWQgbG9uZyBmcF9yZWcsIHZvaWQg KmFkZHIsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBfX3R5cGUgdmFsdWUpCisKK2ZwdV9sb2FkX3By b3RvKGZsdywgZmxvYXQpOworZnB1X2xvYWRfcHJvdG8oZmxkLCBkb3VibGUpOworZnB1X2xvYWRf cHJvdG8oY19mbHcsIGZsb2F0KTsKK2ZwdV9sb2FkX3Byb3RvKGNfZmxkLCBkb3VibGUpOworZnB1 X2xvYWRfcHJvdG8oY19mbGRzcCwgZG91YmxlKTsKKworI2RlZmluZSBmcHVfc3RvcmVfcHJvdG8o X19pbnN0LCBfX3R5cGUpIFwKK2V4dGVybiB2b2lkIHRlc3RfICMjIF9faW5zdCh1bnNpZ25lZCBs b25nIGZwX3JlZywgdm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIF9fdHlwZSB2YWx1 ZSkKKworZnB1X3N0b3JlX3Byb3RvKGZzdywgZmxvYXQpOworZnB1X3N0b3JlX3Byb3RvKGZzZCwg ZG91YmxlKTsKK2ZwdV9zdG9yZV9wcm90byhjX2ZzdywgZmxvYXQpOworZnB1X3N0b3JlX3Byb3Rv KGNfZnNkLCBkb3VibGUpOworZnB1X3N0b3JlX3Byb3RvKGNfZnNkc3AsIGRvdWJsZSk7CisKKyNk ZWZpbmUgZ3BfbG9hZF9wcm90byhfX2luc3QsIF9fdHlwZSkgXAorZXh0ZXJuIF9fdHlwZSB0ZXN0 XyAjIyBfX2luc3Qodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIF9fdHlwZSB2YWx1 ZSkKKworZ3BfbG9hZF9wcm90byhsaCwgdWludDE2X3QpOworZ3BfbG9hZF9wcm90byhsaHUsIHVp bnQxNl90KTsKK2dwX2xvYWRfcHJvdG8obHcsIHVpbnQzMl90KTsKK2dwX2xvYWRfcHJvdG8obHd1 LCB1aW50MzJfdCk7CitncF9sb2FkX3Byb3RvKGxkLCB1aW50NjRfdCk7CitncF9sb2FkX3Byb3Rv KGNfbHcsIHVpbnQzMl90KTsKK2dwX2xvYWRfcHJvdG8oY19sZCwgdWludDY0X3QpOworZ3BfbG9h ZF9wcm90byhjX2xkc3AsIHVpbnQ2NF90KTsKKworI2RlZmluZSBncF9zdG9yZV9wcm90byhfX2lu c3QsIF9fdHlwZSkgXAorZXh0ZXJuIHZvaWQgdGVzdF8gIyMgX19pbnN0KHZvaWQgKmFkZHIsIHVu c2lnbmVkIGxvbmcgb2Zmc2V0LCBfX3R5cGUgdmFsdWUpCisKK2dwX3N0b3JlX3Byb3RvKHNoLCB1 aW50MTZfdCk7CitncF9zdG9yZV9wcm90byhzdywgdWludDMyX3QpOworZ3Bfc3RvcmVfcHJvdG8o c2QsIHVpbnQ2NF90KTsKK2dwX3N0b3JlX3Byb3RvKGNfc3csIHVpbnQzMl90KTsKK2dwX3N0b3Jl X3Byb3RvKGNfc2QsIHVpbnQ2NF90KTsKK2dwX3N0b3JlX3Byb3RvKGNfc2RzcCwgdWludDY0X3Qp OworCisjZGVmaW5lIFRFU1RfR1BfTE9BRChfX2luc3QsIF9fdHlwZV9zaXplKQkJCQkJXAorVEVT VChncF9sb2FkXyAjIyBfX2luc3QpCQkJCQkJCVwKK3sJCQkJCQkJCQkJXAorCWludCBvZmZzZXQs IHJldDsJCQkJCQkJXAorCXVpbnQ4X3QgYnVmWzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2 KSkpOwkJCQlcCisJCQkJCQkJCQkJXAorCXJldCA9IHByY3RsKFBSX1NFVF9VTkFMSUdOLCBQUl9V TkFMSUdOX05PUFJJTlQpOwkJCVwKKwlBU1NFUlRfRVEocmV0LCAwKTsJCQkJCQkJXAorCQkJCQkJ CQkJCVwKKwlmb3IgKG9mZnNldCA9IDE7IG9mZnNldCA8IF9fdHlwZV9zaXplIC8gODsgb2Zmc2V0 KyspIHsJCQlcCisJCXVpbnQgIyMgX190eXBlX3NpemUgIyMgX3QgdmFsID0gVkFMICMjIF9fdHlw ZV9zaXplOwkJXAorCQl1aW50ICMjIF9fdHlwZV9zaXplICMjIF90ICpwdHIgPSAodWludCAjIyBf X3R5cGVfc2l6ZSAjIyBfdCAqKSAoYnVmICsgb2Zmc2V0KTsgXAorCQltZW1jcHkocHRyLCAmdmFs LCBzaXplb2YodmFsKSk7CQkJCQlcCisJCXZhbCA9IHRlc3RfICMjIF9faW5zdChwdHIsIG9mZnNl dCwgdmFsKTsJCQlcCisJCUVYUEVDVF9FUShWQUwgIyMgX190eXBlX3NpemUsIHZhbCk7CQkJCVwK Kwl9CQkJCQkJCQkJXAorfQorCitURVNUX0dQX0xPQUQobGgsIDE2KTsKK1RFU1RfR1BfTE9BRChs aHUsIDE2KTsKK1RFU1RfR1BfTE9BRChsdywgMzIpOworVEVTVF9HUF9MT0FEKGx3dSwgMzIpOwor VEVTVF9HUF9MT0FEKGxkLCA2NCk7CisjaWZkZWYgX19yaXNjdl9jb21wcmVzc2VkCitURVNUX0dQ X0xPQUQoY19sdywgMzIpOworVEVTVF9HUF9MT0FEKGNfbGQsIDY0KTsKK1RFU1RfR1BfTE9BRChj X2xkc3AsIDY0KTsKKyNlbmRpZgorCisjZGVmaW5lIFRFU1RfR1BfU1RPUkUoX19pbnN0LCBfX3R5 cGVfc2l6ZSkJCQkJCVwKK1RFU1QoZ3BfbG9hZF8gIyMgX19pbnN0KQkJCQkJCQlcCit7CQkJCQkJ CQkJCVwKKwlpbnQgb2Zmc2V0LCByZXQ7CQkJCQkJCVwKKwl1aW50OF90IGJ1ZlsxNl0gX19hdHRy aWJ1dGVfXygoYWxpZ25lZCgxNikpKTsJCQkJXAorCQkJCQkJCQkJCVwKKwlyZXQgPSBwcmN0bChQ Ul9TRVRfVU5BTElHTiwgUFJfVU5BTElHTl9OT1BSSU5UKTsJCQlcCisJQVNTRVJUX0VRKHJldCwg MCk7CQkJCQkJCVwKKwkJCQkJCQkJCQlcCisJZm9yIChvZmZzZXQgPSAxOyBvZmZzZXQgPCBfX3R5 cGVfc2l6ZSAvIDg7IG9mZnNldCsrKSB7CQkJXAorCQl1aW50ICMjIF9fdHlwZV9zaXplICMjIF90 IHZhbCA9IFZBTCAjIyBfX3R5cGVfc2l6ZTsJCVwKKwkJdWludCAjIyBfX3R5cGVfc2l6ZSAjIyBf dCAqcHRyID0gKHVpbnQgIyMgX190eXBlX3NpemUgIyMgX3QgKikgKGJ1ZiArIG9mZnNldCk7IFwK KwkJbWVtc2V0KHB0ciwgMCwgc2l6ZW9mKHZhbCkpOwkJCQkJXAorCQl0ZXN0XyAjIyBfX2luc3Qo cHRyLCBvZmZzZXQsIHZhbCk7CQkJCVwKKwkJbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkp OwkJCQkJXAorCQlFWFBFQ1RfRVEoVkFMICMjIF9fdHlwZV9zaXplLCB2YWwpOwkJCQlcCisJfQkJ CQkJCQkJCVwKK30KK1RFU1RfR1BfU1RPUkUoc2gsIDE2KTsKK1RFU1RfR1BfU1RPUkUoc3csIDMy KTsKK1RFU1RfR1BfU1RPUkUoc2QsIDY0KTsKKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKK1RF U1RfR1BfU1RPUkUoY19zdywgMzIpOworVEVTVF9HUF9TVE9SRShjX3NkLCA2NCk7CitURVNUX0dQ X1NUT1JFKGNfc2RzcCwgNjQpOworI2VuZGlmCisKKyNkZWZpbmUgX19URVNUX0ZQVV9MT0FEKF9f dHlwZSwgX19pbnN0LCBfX3JlZ19zdGFydCwgX19yZWdfZW5kKQkJCVwKK1RFU1QoZnB1X2xvYWRf ICMjIF9faW5zdCkJCQkJCQkJXAorewkJCQkJCQkJCQlcCisJaW50IGksIHJldCwgb2Zmc2V0LCBm cF9yZWc7CQkJCQkJXAorCXVpbnQ4X3QgYnVmWzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2 KSkpOwkJCQlcCisJCQkJCQkJCQkJXAorCXJldCA9IHByY3RsKFBSX1NFVF9VTkFMSUdOLCBQUl9V TkFMSUdOX05PUFJJTlQpOwkJCVwKKwlBU1NFUlRfRVEocmV0LCAwKTsJCQkJCQkJXAorCQkJCQkJ CQkJCVwKKwlmb3IgKGZwX3JlZyA9IF9fcmVnX3N0YXJ0OyBmcF9yZWcgPCBfX3JlZ19lbmQ7IGZw X3JlZysrKSB7CQlcCisJCWZvciAob2Zmc2V0ID0gMTsgb2Zmc2V0IDwgNDsgb2Zmc2V0KyspIHsJ CQlcCisJCQl2b2lkICpsb2FkX2FkZHIgPSAoYnVmICsgb2Zmc2V0KTsJCQlcCisJCQlfX3R5cGUg dmFsID0gVkFMXyAjIyBfX3R5cGUgOwkJCQlcCisJCQkJCQkJCQkJXAorCQkJbWVtY3B5KGxvYWRf YWRkciwgJnZhbCwgc2l6ZW9mKHZhbCkpOwkJCVwKKwkJCXZhbCA9IHRlc3RfICMjIF9faW5zdChm cF9yZWcsIGxvYWRfYWRkciwgb2Zmc2V0LCB2YWwpOwlcCisJCQlFWFBFQ1RfVFJVRShfX3R5cGUg IyNfZXF1YWwodmFsLCBWQUxfIyMgX190eXBlKSk7CVwKKwkJfQkJCQkJCQkJXAorCX0JCQkJCQkJ CQlcCit9CisjZGVmaW5lIFRFU1RfRlBVX0xPQUQoX190eXBlLCBfX2luc3QpIFwKKwlfX1RFU1Rf RlBVX0xPQUQoX190eXBlLCBfX2luc3QsIDAsIDMyKQorI2RlZmluZSBURVNUX0ZQVV9MT0FEX0NP TVBSRVNTRUQoX190eXBlLCBfX2luc3QpIFwKKwlfX1RFU1RfRlBVX0xPQUQoX190eXBlLCBfX2lu c3QsIDgsIDE2KQorCitURVNUX0ZQVV9MT0FEKGZsb2F0LCBmbHcpCitURVNUX0ZQVV9MT0FEKGRv dWJsZSwgZmxkKQorI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3NlZAorVEVTVF9GUFVfTE9BRF9DT01Q UkVTU0VEKGRvdWJsZSwgY19mbGQpCitURVNUX0ZQVV9MT0FEX0NPTVBSRVNTRUQoZG91YmxlLCBj X2ZsZHNwKQorI2VuZGlmCisKKyNkZWZpbmUgX19URVNUX0ZQVV9TVE9SRShfX3R5cGUsIF9faW5z dCwgX19yZWdfc3RhcnQsIF9fcmVnX2VuZCkJCVwKK1RFU1QoZnB1X3N0b3JlXyAjIyBfX2luc3Qp CQkJCQkJCVwKK3sJCQkJCQkJCQkJXAorCWludCBpLCByZXQsIG9mZnNldCwgZnBfcmVnOwkJCQkJ CVwKKwl1aW50OF90IGJ1ZlsxNl0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsJCQkJXAor CQkJCQkJCQkJCVwKKwlyZXQgPSBwcmN0bChQUl9TRVRfVU5BTElHTiwgUFJfVU5BTElHTl9OT1BS SU5UKTsJCQlcCisJQVNTRVJUX0VRKHJldCwgMCk7CQkJCQkJCVwKKwkJCQkJCQkJCQlcCisJZm9y IChmcF9yZWcgPSBfX3JlZ19zdGFydDsgZnBfcmVnIDwgX19yZWdfZW5kOyBmcF9yZWcrKykgewkJ XAorCQlmb3IgKG9mZnNldCA9IDE7IG9mZnNldCA8IDQ7IG9mZnNldCsrKSB7CQkJXAorCQkJCQkJ CQkJCVwKKwkJCXZvaWQgKnN0b3JlX2FkZHIgPSAoYnVmICsgb2Zmc2V0KTsJCQlcCisJCQlfX3R5 cGUgdmFsID0gVkFMXyAjIyBfX3R5cGUgOwkJCQlcCisJCQkJCQkJCQkJXAorCQkJdGVzdF8gIyMg X19pbnN0KGZwX3JlZywgc3RvcmVfYWRkciwgb2Zmc2V0LCB2YWwpOwlcCisJCQltZW1jcHkoJnZh bCwgc3RvcmVfYWRkciwgc2l6ZW9mKHZhbCkpOwkJCVwKKwkJCUVYUEVDVF9UUlVFKF9fdHlwZSAj IyBfZXF1YWwodmFsLCBWQUxfIyMgX190eXBlKSk7CVwKKwkJfQkJCQkJCQkJXAorCX0JCQkJCQkJ CQlcCit9CisjZGVmaW5lIFRFU1RfRlBVX1NUT1JFKF9fdHlwZSwgX19pbnN0KSBcCisJX19URVNU X0ZQVV9TVE9SRShfX3R5cGUsIF9faW5zdCwgMCwgMzIpCisjZGVmaW5lIFRFU1RfRlBVX1NUT1JF X0NPTVBSRVNTRUQoX190eXBlLCBfX2luc3QpIFwKKwlfX1RFU1RfRlBVX1NUT1JFKF9fdHlwZSwg X19pbnN0LCA4LCAxNikKKworVEVTVF9GUFVfU1RPUkUoZmxvYXQsIGZzdykKK1RFU1RfRlBVX1NU T1JFKGRvdWJsZSwgZnNkKQorI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3NlZAorVEVTVF9GUFVfU1RP UkVfQ09NUFJFU1NFRChkb3VibGUsIGNfZnNkKQorVEVTVF9GUFVfU1RPUkVfQ09NUFJFU1NFRChk b3VibGUsIGNfZnNkc3ApCisjZW5kaWYKKworVEVTVF9TSUdOQUwoZ2VuX3NpZ2J1cywgU0lHQlVT KQoreworCXVpbnQzMl90ICpwdHI7CisJdWludDhfdCBidWZbMTZdIF9fYXR0cmlidXRlX18oKGFs aWduZWQoMTYpKSk7CisJaW50IHJldDsKKworCXJldCA9IHByY3RsKFBSX1NFVF9VTkFMSUdOLCBQ Ul9VTkFMSUdOX1NJR0JVUyk7CisJQVNTRVJUX0VRKHJldCwgMCk7CisKKwlwdHIgPSAodWludDMy X3QgKikoYnVmICsgMSk7CisJKnB0ciA9IDB4REVBREJFRUZVTEw7Cit9CisKK2ludCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgcmV0LCB2YWw7CisKKwlyZXQgPSBwcmN0bChQ Ul9HRVRfVU5BTElHTiwgJnZhbCk7CisJaWYgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBFSU5WQUwp CisJCWtzZnRfZXhpdF9za2lwKCJTS0lQIEdFVF9VTkFMSUdOX0NUTCBub3Qgc3VwcG9ydGVkXG4i KTsKKworCWV4aXQodGVzdF9oYXJuZXNzX3J1bihhcmdjLCBhcmd2KSk7Cit9Ci0tIAoyLjQ5LjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1y aXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==