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 16548C35FF3 for ; Mon, 17 Mar 2025 17:13:26 +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=wVWvRC8/VLO7BYBHF/O5hIm2lfB69o7sAsWj6vtOdtM=; b=tr+/O15PtiFczH UbF7wecckY+kPYHLmrBMf3OPHKJReQPolZVc/UIV/v4nUWwmpO7ZmsCuxdsGo6i56k6invVh+LRaM 2JDOekQx6dcF2xDxpHcujUg/KSIMjoG8t16eMwO65sHXqi1rg4qD20Q9z4yD8yUwVc8k2rvc2lHvX ODmUkQFIeNpHMaCvNJLd2mlp49WHV9nAVG2aB6k4kImILlSVKXoORvpvLm8s2c5q/7fnkj3lNsf+V 3XSbVKSvgBCQlvR/L2OeApDFDqgmFFniMdt+jIGcRcKT1HtmrSRravxw7TjBl/wHc+iW9z9EX7xju nXRUqKEY/hCCX2OrH0uQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tuE1f-00000003VNf-30cm; Mon, 17 Mar 2025 17:13:19 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tuDwu-00000003TYn-1L5F for linux-riscv@lists.infradead.org; Mon, 17 Mar 2025 17:08:25 +0000 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-43cec5cd73bso15261085e9.3 for ; Mon, 17 Mar 2025 10:08:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1742231303; x=1742836103; 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=VKDplUA2XX/hbzyOxbYWLc7Q9RboQ/w3e3i+SZL4wNg=; b=FOnI8a0VQJxwv+N7VZ/1zdOysoHV+zdFRBsYsLOqtNvZohthNVC9daNLBxFvamD67G sjM/YGZceJAb7+J8EEOpZo4DyvLfXVBVTxvR5sij1rnoTZ84/b37J4Q0VQlWhqdvOhVE FwzQznMbZODZLvfr6N/D4YKI0a2Py4UWwSiiGn4AQX/ZROxoqsZRC1IxmvdPSSpLVoa5 4kjCxdhtnUTIFIR8CCo7LZYP8wwgFQXm9NxLMhPbCLxPv16IpV1CX8HPPoo9nCBCgYmE fsjU/HPlrhQePYahVkpUmxYAKLOPQAkV+6N8za+Qq3UpAcRmzNRKCTv0kxKma3TfcltO 2a4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742231303; x=1742836103; 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=VKDplUA2XX/hbzyOxbYWLc7Q9RboQ/w3e3i+SZL4wNg=; b=tSkbkgK9APU4w6XfFjgUulB2fhpexwPnxPSdzkFXgGrBm9KVUfSSRtk5HBwVTpOhbQ unsNGF0YEiC7olgYjd0oAGbEKelAnNc9LSBhA/VQaewDmJkXdJTHR76w4rBzqyEC6T3r qF4ZoSGZHEwbKcx3G0xiv2nhuDppX1Cj2qz20K2W8Jt0ByxEtS/9TSdMTCpcCpaDadU9 YxPiVfq+xydiPNCsPhCrJmAYhFCmN2tlPJq3DaZS2NksYyvmkN8L5dxXSA2skHjuaaUr Zm6m2QHFlVUSZGNUC7E083Ujf3F01Ven9b78XBT7NrQyfLRMtq2h0s3+C/Ankica/wO4 DONQ== X-Forwarded-Encrypted: i=1; AJvYcCUF0sEJEgIZXLgRtkP1JVwtFNg3vS9Y/QSAc4hdy6w2YKOPHU6fjGf3xDQRslsdugWgXDmS0V4DPulGSg==@lists.infradead.org X-Gm-Message-State: AOJu0YycsMPCk9C/Ro1I67ci5xctzqqUErEzjFyStftr5HHBHBQp9sbe /p2PCZLVhuPQ7UH8n8yF05e9rulD6klvvrFcCjcuXbj6LF2E4asuBx89pn37UGw= X-Gm-Gg: ASbGnctGarCT+ww/T0dXgzf510XGJ5iFmN+pMUtifggl7KZ4uywAwGqpq3kVIvLfaDF oC9resg9/SQ3tbOa9z6UG/RRT0lKiOHPvcWjCVhkpf7ges7Toy+5tt4frJMb1kzCTRm15omhMuK q43Cy/83VIIf+iG7HxTc9b+rRIwzJO7DLeU/3BNZ4xfZ7ekAo3Si6F2l6WQRr4ZT/iYokc1lUa0 40fuNpE/U+iVG1hDvwA1iNL0CKvvI9WHId7dPuCRGRQg+o4Py0WJHBqfSe+LxStOz8t8yN4QmUy /ruyk2cmj5T5hwriOW5s7FGxcVl2liOG+fGw3xzNrVLlfQ== X-Google-Smtp-Source: AGHT+IHYqakxMqLykAu8hVgungq+pEq9jN18lc5kC73JGVKr25cJlS/60mBYd+yEImb3bsX8Hv6BZA== X-Received: by 2002:a05:600c:a00b:b0:43d:cc9:b09d with SMTP id 5b1f17b1804b1-43d3898770amr5615915e9.20.1742231302877; Mon, 17 Mar 2025 10:08:22 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d23cddb2asm96014505e9.39.2025.03.17.10.08.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Mar 2025 10:08:21 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , Anup Patel , Atish Patra , Shuah Khan , Jonathan Corbet , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-kselftest@vger.kernel.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Samuel Holland , Andrew Jones Subject: [PATCH v4 14/18] selftests: riscv: add misaligned access testing Date: Mon, 17 Mar 2025 18:06:20 +0100 Message-ID: <20250317170625.1142870-15-cleger@rivosinc.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250317170625.1142870-1-cleger@rivosinc.com> References: <20250317170625.1142870-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250317_100824_470138_8A73CC9D X-CRM114-Status: GOOD ( 18.66 ) 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 Tm93IHRoYXQgdGhlIGtlcm5lbCBjYW4gZW11bGF0ZSBtaXNhbGlnbmVkIGFjY2VzcyBhbmQgY29u dHJvbCBpdHMKYmVoYXZpb3IsIGFkZCBhIHNlbGZ0ZXN0IGZvciB0aGF0LiBUaGlzIHNlbGZ0ZXN0 IHRlc3RzIGFsbCB0aGUgY3VycmVudGx5CmVtdWxhdGVkIGluc3RydWN0aW9uIChleGNlcHQgZm9y IHRoZSBSVjMyIGNvbXByZXNzZWQgb25lcyB3aGljaCBhcmUgbGVmdAphcyBhIGZ1dHVyZSBleGVy Y2lzZSBmb3IgYSBSVjMyIHVzZXIpLiBGb3IgdGhlIEZQVSBpbnN0cnVjdGlvbnMsIGFsbCB0aGUK RlBVIHJlZ2lzdGVycyBhcmUgdGVzdGVkLgoKU2lnbmVkLW9mZi1ieTogQ2zDqW1lbnQgTMOpZ2Vy IDxjbGVnZXJAcml2b3NpbmMuY29tPgotLS0KIC4uLi9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25l ZC8uZ2l0aWdub3JlICAgICB8ICAgMSArCiAuLi4vc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQv TWFrZWZpbGUgICAgICAgfCAgMTIgKwogLi4uL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2Nv bW1vbi5TICAgICAgIHwgIDMzICsrKwogLi4uL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2Fs aWduZWQvZnB1LlMgIHwgMTgwICsrKysrKysrKysrKysKIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3Jpc2N2L21pc2FsaWduZWQvZ3AuUyB8IDEwMyArKysrKysrCiAuLi4vc2VsZnRlc3RzL3Jpc2N2 L21pc2FsaWduZWQvbWlzYWxpZ25lZC5jICAgfCAyNTQgKysrKysrKysrKysrKysrKysrCiA2IGZp bGVzIGNoYW5nZWQsIDU4MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC8uZ2l0aWdub3JlCiBjcmVhdGUgbW9k ZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9NYWtlZmls ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2Fs aWduZWQvY29tbW9uLlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy9yaXNjdi9taXNhbGlnbmVkL2ZwdS5TCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9ncC5TCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9taXNhbGlnbmVkLmMKCmRpZmYg LS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkLy5naXRpZ25v cmUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkLy5naXRpZ25vcmUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZWZmMTVhMWY5ODEKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVk Ly5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAorbWlzYWxpZ25lZApkaWZmIC0tZ2l0IGEvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYWE0MDExMGM1MGQKLS0tIC9kZXYvbnVsbAorKysgYi90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL01ha2VmaWxlCkBAIC0wLDAg KzEsMTIgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKyMgQ29weXJpZ2h0 IChDKSAyMDIxIEFSTSBMaW1pdGVkCisjIE9yaWdpbmFsbHkgdG9vbHMvdGVzdGluZy9hcm02NC9h YmkvTWFrZWZpbGUKKworQ0ZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS90b29scy9pbmNsdWRlCisK K1RFU1RfR0VOX1BST0dTIDo9IG1pc2FsaWduZWQKKworaW5jbHVkZSAuLi8uLi9saWIubWsKKwor JChPVVRQVVQpL21pc2FsaWduZWQ6IG1pc2FsaWduZWQuYyBmcHUuUyBncC5TCisJJChDQykgLWcz IC1zdGF0aWMgLW8kQCAtbWFyY2g9cnY2NGltYWZkYyAkKENGTEFHUykgJChMREZMQUdTKSAkXgpk aWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9jb21t b24uUyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvY29tbW9uLlMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZmEwMDAzNWJkNWQKLS0t IC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVk L2NvbW1vbi5TCkBAIC0wLDAgKzEsMzMgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgUml2b3MgSW5jLgorICoK KyAqIEF1dGhvcnM6CisgKiAgICAgQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29t PgorICovCisKKy5tYWNybyBsYl9zYiB0ZW1wLCBvZmZzZXQsIHNyYywgZHN0CisJbGIgXHRlbXAs IFxvZmZzZXQoXHNyYykKKwlzYiBcdGVtcCwgXG9mZnNldChcZHN0KQorLmVuZG0KKworLm1hY3Jv IGNvcHlfbG9uZ190byB0ZW1wLCBzcmMsIGRzdAorCWxiX3NiIFx0ZW1wLCAwLCBcc3JjLCBcZHN0 LAorCWxiX3NiIFx0ZW1wLCAxLCBcc3JjLCBcZHN0LAorCWxiX3NiIFx0ZW1wLCAyLCBcc3JjLCBc ZHN0LAorCWxiX3NiIFx0ZW1wLCAzLCBcc3JjLCBcZHN0LAorCWxiX3NiIFx0ZW1wLCA0LCBcc3Jj LCBcZHN0LAorCWxiX3NiIFx0ZW1wLCA1LCBcc3JjLCBcZHN0LAorCWxiX3NiIFx0ZW1wLCA2LCBc c3JjLCBcZHN0LAorCWxiX3NiIFx0ZW1wLCA3LCBcc3JjLCBcZHN0LAorLmVuZG0KKworLm1hY3Jv IHNwX3N0YWNrX3Byb2xvZ3VlIG9mZnNldAorCWFkZGkgc3AsIHNwLCAtOAorCXN1YiBzcCwgc3As IFxvZmZzZXQKKy5lbmRtCisKKy5tYWNybyBzcF9zdGFja19lcGlsb2d1ZSBvZmZzZXQKKwlhZGQg c3AsIHNwLCBcb2Zmc2V0CisJYWRkaSBzcCwgc3AsIDgKKy5lbmRtCmRpZmYgLS1naXQgYS90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2ZwdS5TIGIvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvcmlzY3YvbWlzYWxpZ25lZC9mcHUuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmQwMDhiZmY1ODMxMAotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xz L3Rlc3Rpbmcvc2VsZnRlc3RzL3Jpc2N2L21pc2FsaWduZWQvZnB1LlMKQEAgLTAsMCArMSwxODAg QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMjUgUml2b3MgSW5jLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICAgQ2zD qW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29tPgorICovCisKKyNpbmNsdWRlICJjb21t b24uUyIKKworI2RlZmluZSBDQVNFX0FMSUdOCQk0CisKKy5tYWNybyBmcHVfbG9hZF9pbnN0IGZw cmVnLCBpbnN0LCBwcmVjaXNpb24sIGxvYWRfcmVnCisuYWxpZ24gQ0FTRV9BTElHTgorCVxpbnN0 IFxmcHJlZywgMChcbG9hZF9yZWcpCisJZm12LlxwcmVjaXNpb24gZmEwLCBcZnByZWcKKwlqIDJm CisuZW5kbQorCisjZGVmaW5lIGZsdyhfX2ZwcmVnKSBmcHVfbG9hZF9pbnN0IF9fZnByZWcsIGZs dywgcywgczEKKyNkZWZpbmUgZmxkKF9fZnByZWcpIGZwdV9sb2FkX2luc3QgX19mcHJlZywgZmxk LCBkLCBzMQorI2RlZmluZSBjX2ZsdyhfX2ZwcmVnKSBmcHVfbG9hZF9pbnN0IF9fZnByZWcsIGMu Zmx3LCBzLCBzMQorI2RlZmluZSBjX2ZsZChfX2ZwcmVnKSBmcHVfbG9hZF9pbnN0IF9fZnByZWcs IGMuZmxkLCBkLCBzMQorI2RlZmluZSBjX2ZsZHNwKF9fZnByZWcpIGZwdV9sb2FkX2luc3QgX19m cHJlZywgYy5mbGRzcCwgZCwgc3AKKworLm1hY3JvIGZwdV9zdG9yZV9pbnN0IGZwcmVnLCBpbnN0 LCBwcmVjaXNpb24sIHN0b3JlX3JlZworLmFsaWduIENBU0VfQUxJR04KKwlmbXYuXHByZWNpc2lv biBcZnByZWcsIGZhMAorCVxpbnN0IFxmcHJlZywgMChcc3RvcmVfcmVnKQorCWogMmYKKy5lbmRt CisKKyNkZWZpbmUgZnN3KF9fZnByZWcpIGZwdV9zdG9yZV9pbnN0IF9fZnByZWcsIGZzdywgcywg czEKKyNkZWZpbmUgZnNkKF9fZnByZWcpIGZwdV9zdG9yZV9pbnN0IF9fZnByZWcsIGZzZCwgZCwg czEKKyNkZWZpbmUgY19mc3coX19mcHJlZykgZnB1X3N0b3JlX2luc3QgX19mcHJlZywgYy5mc3cs IHMsIHMxCisjZGVmaW5lIGNfZnNkKF9fZnByZWcpIGZwdV9zdG9yZV9pbnN0IF9fZnByZWcsIGMu ZnNkLCBkLCBzMQorI2RlZmluZSBjX2ZzZHNwKF9fZnByZWcpIGZwdV9zdG9yZV9pbnN0IF9fZnBy ZWcsIGMuZnNkc3AsIGQsIHNwCisKKy5tYWNybyBmcF90ZXN0X3Byb2xvZ3VlCisJbW92ZSBzMSwg YTEKKwkvKgorCSAqIENvbXB1dGUganVtcCBvZmZzZXQgdG8gc3RvcmUgdGhlIGNvcnJlY3QgRlAg cmVnaXN0ZXIgc2luY2Ugd2UgZG9uJ3QKKwkgKiBoYXZlIGluZGlyZWN0IEZQIHJlZ2lzdGVyIGFj Y2VzcyAob3IgYXQgbGVhc3Qgd2UgZG9uJ3QgdXNlIHRoaXMKKwkgKiBleHRlbnNpb24gc28gdGhh dCB3b3JrcyBvbiBhbGwgYXJjaHMpCisJICovCisJc2xsIHQwLCBhMCwgQ0FTRV9BTElHTgorCWxh IHQyLCAxZgorCWFkZCB0MCwgdDAsIHQyCisJanIgdDAKKy5hbGlnbglDQVNFX0FMSUdOCisxOgor LmVuZG0KKworLm1hY3JvIGZwX3Rlc3RfcHJvbG9ndWVfY29tcHJlc3NlZAorCS8qIEZQIHJlZ2lz dGVycyBmb3IgY29tcHJlc3NlZCBpbnN0cnVjdGlvbnMgc3RhcnRzIGZyb20gOCB0byAxNiAqLwor CWFkZGkgYTAsIGEwLCAtOAorCWZwX3Rlc3RfcHJvbG9ndWUKKy5lbmRtCisKKyNkZWZpbmUgZnBf dGVzdF9ib2R5X2NvbXByZXNzZWQoX19pbnN0X2Z1bmMpIFwKKwlfX2luc3RfZnVuYyhmOCk7IFwK KwlfX2luc3RfZnVuYyhmOSk7IFwKKwlfX2luc3RfZnVuYyhmMTApOyBcCisJX19pbnN0X2Z1bmMo ZjExKTsgXAorCV9faW5zdF9mdW5jKGYxMik7IFwKKwlfX2luc3RfZnVuYyhmMTMpOyBcCisJX19p bnN0X2Z1bmMoZjE0KTsgXAorCV9faW5zdF9mdW5jKGYxNSk7IFwKKzI6CisKKyNkZWZpbmUgZnBf dGVzdF9ib2R5KF9faW5zdF9mdW5jKSBcCisJX19pbnN0X2Z1bmMoZjApOyBcCisJX19pbnN0X2Z1 bmMoZjEpOyBcCisJX19pbnN0X2Z1bmMoZjIpOyBcCisJX19pbnN0X2Z1bmMoZjMpOyBcCisJX19p bnN0X2Z1bmMoZjQpOyBcCisJX19pbnN0X2Z1bmMoZjUpOyBcCisJX19pbnN0X2Z1bmMoZjYpOyBc CisJX19pbnN0X2Z1bmMoZjcpOyBcCisJX19pbnN0X2Z1bmMoZjgpOyBcCisJX19pbnN0X2Z1bmMo ZjkpOyBcCisJX19pbnN0X2Z1bmMoZjEwKTsgXAorCV9faW5zdF9mdW5jKGYxMSk7IFwKKwlfX2lu c3RfZnVuYyhmMTIpOyBcCisJX19pbnN0X2Z1bmMoZjEzKTsgXAorCV9faW5zdF9mdW5jKGYxNCk7 IFwKKwlfX2luc3RfZnVuYyhmMTUpOyBcCisJX19pbnN0X2Z1bmMoZjE2KTsgXAorCV9faW5zdF9m dW5jKGYxNyk7IFwKKwlfX2luc3RfZnVuYyhmMTgpOyBcCisJX19pbnN0X2Z1bmMoZjE5KTsgXAor CV9faW5zdF9mdW5jKGYyMCk7IFwKKwlfX2luc3RfZnVuYyhmMjEpOyBcCisJX19pbnN0X2Z1bmMo ZjIyKTsgXAorCV9faW5zdF9mdW5jKGYyMyk7IFwKKwlfX2luc3RfZnVuYyhmMjQpOyBcCisJX19p bnN0X2Z1bmMoZjI1KTsgXAorCV9faW5zdF9mdW5jKGYyNik7IFwKKwlfX2luc3RfZnVuYyhmMjcp OyBcCisJX19pbnN0X2Z1bmMoZjI4KTsgXAorCV9faW5zdF9mdW5jKGYyOSk7IFwKKwlfX2luc3Rf ZnVuYyhmMzApOyBcCisJX19pbnN0X2Z1bmMoZjMxKTsgXAorMjoKKy50ZXh0CisKKyNkZWZpbmUg X19nZW5fdGVzdF9pbnN0KF9faW5zdCwgX19zdWZmaXgpIFwKKy5nbG9iYWwgdGVzdF8gIyMgX19p bnN0OyBcCit0ZXN0XyAjIyBfX2luc3Q6OyBcCisJZnBfdGVzdF9wcm9sb2d1ZSAjIyBfX3N1ZmZp eDsgXAorCWZwX3Rlc3RfYm9keSAjIyBfX3N1ZmZpeChfX2luc3QpOyBcCisJcmV0CisKKyNkZWZp bmUgZ2VuX3Rlc3RfaW5zdF9jb21wcmVzc2VkKF9faW5zdCkgXAorCS5vcHRpb24gYXJjaCwrYzsg XAorCV9fZ2VuX3Rlc3RfaW5zdChjXyAjIyBfX2luc3QsIF9jb21wcmVzc2VkKQorCisjZGVmaW5l IGdlbl90ZXN0X2luc3QoX19pbnN0KSBcCisJLmJhbGlnbiAxNjsgXAorCS5vcHRpb24gcHVzaDsg XAorCS5vcHRpb24gYXJjaCwtYzsgXAorCV9fZ2VuX3Rlc3RfaW5zdChfX2luc3QsICk7IFwKKwku b3B0aW9uIHBvcAorCisubWFjcm8gZnBfdGVzdF9wcm9sb2d1ZV9sb2FkX2NvbXByZXNzZWRfc3AK Kwljb3B5X2xvbmdfdG8gdDAsIGExLCBzcAorLmVuZG0KKworLm1hY3JvIGZwX3Rlc3RfZXBpbG9n dWVfbG9hZF9jb21wcmVzc2VkX3NwCisuZW5kbQorCisubWFjcm8gZnBfdGVzdF9wcm9sb2d1ZV9z dG9yZV9jb21wcmVzc2VkX3NwCisuZW5kbQorCisubWFjcm8gZnBfdGVzdF9lcGlsb2d1ZV9zdG9y ZV9jb21wcmVzc2VkX3NwCisJY29weV9sb25nX3RvIHQwLCBzcCwgYTEKKy5lbmRtCisKKyNkZWZp bmUgZ2VuX2luc3RfY29tcHJlc3NlZF9zcChfX2luc3QsIF9fdHlwZSkgXAorCS5nbG9iYWwgdGVz dF9jXyAjIyBfX2luc3QgIyMgc3A7IFwKKwl0ZXN0X2NfICMjIF9faW5zdCAjIyBzcDo7IFwKKwkJ c3Bfc3RhY2tfcHJvbG9ndWUgYTI7IFwKKwkJZnBfdGVzdF9wcm9sb2d1ZV8jIyBfX3R5cGUgIyMg X2NvbXByZXNzZWRfc3A7IFwKKwkJZnBfdGVzdF9wcm9sb2d1ZV9jb21wcmVzc2VkOyBcCisJCWZw X3Rlc3RfYm9keV9jb21wcmVzc2VkKGNfICMjIF9faW5zdCAjIyBzcCk7IFwKKwkJZnBfdGVzdF9l cGlsb2d1ZV8jIyBfX3R5cGUgIyMgX2NvbXByZXNzZWRfc3A7IFwKKwkJc3Bfc3RhY2tfZXBpbG9n dWUgYTI7IFwKKwkJcmV0CisKKyNkZWZpbmUgZ2VuX3Rlc3RfbG9hZF9jb21wcmVzc2VkX3NwKF9f aW5zdCkgZ2VuX2luc3RfY29tcHJlc3NlZF9zcChfX2luc3QsIGxvYWQpCisjZGVmaW5lIGdlbl90 ZXN0X3N0b3JlX2NvbXByZXNzZWRfc3AoX19pbnN0KSBnZW5faW5zdF9jb21wcmVzc2VkX3NwKF9f aW5zdCwgc3RvcmUpCisKKy8qCisgKiBmbG9hdF9mc3dfcmVnIC0gU2V0IGEgRlAgcmVnaXN0ZXIg ZnJvbSBhIHJlZ2lzdGVyIGNvbnRhaW5pbmcgdGhlIHZhbHVlCisgKiBhMCA9IEZQIHJlZ2lzdGVy IGluZGV4IHRvIGJlIHNldAorICogYTEgPSBhZGRyIHdoZXJlIHRvIHN0b3JlIHJlZ2lzdGVyIHZh bHVlCisgKiBhMiA9IGFkZHJlc3Mgb2Zmc2V0CisgKiBhMyA9IHZhbHVlIHRvIGJlIHN0b3JlCisg Ki8KK2dlbl90ZXN0X2luc3QoZnN3KQorCisvKgorICogZmxvYXRfZmx3X3JlZyAtIEdldCBhIEZQ IHJlZ2lzdGVyIHZhbHVlIGFuZCByZXR1cm4gaXQKKyAqIGEwID0gRlAgcmVnaXN0ZXIgaW5kZXgg dG8gYmUgcmV0cmlldmVkCisgKiBhMSA9IGFkZHIgdG8gbG9hZCByZWdpc3RlciBmcm9tCisgKiBh MiA9IGFkZHJlc3Mgb2Zmc2V0CisgKi8KK2dlbl90ZXN0X2luc3QoZmx3KQorCitnZW5fdGVzdF9p bnN0KGZzZCkKKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKK2dlbl90ZXN0X2luc3RfY29tcHJl c3NlZChmc2QpCitnZW5fdGVzdF9zdG9yZV9jb21wcmVzc2VkX3NwKGZzZCkKKyNlbmRpZgorCitn ZW5fdGVzdF9pbnN0KGZsZCkKKyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKK2dlbl90ZXN0X2lu c3RfY29tcHJlc3NlZChmbGQpCitnZW5fdGVzdF9sb2FkX2NvbXByZXNzZWRfc3AoZmxkKQorI2Vu ZGlmCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVk L2dwLlMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2dwLlMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNTNmNGM2ZDgxZGQKLS0tIC9k ZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL2dw LlMKQEAgLTAsMCArMSwxMDMgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgUml2b3MgSW5jLgorICoKKyAqIEF1 dGhvcnM6CisgKiAgICAgQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29tPgorICov CisKKyNpbmNsdWRlICJjb21tb24uUyIKKworLnRleHQKKworLm1hY3JvIF9fZ2VuX3Rlc3RfaW5z dCBpbnN0LCBzcmNfcmVnCisJXGluc3QgYTIsIDAoXHNyY19yZWcpCisJbW92ZSBhMCwgYTIKKy5l bmRtCisKKy5tYWNybyBnZW5fZnVuY19oZWFkZXIgZnVuY19uYW1lLCBydmMKKwkub3B0aW9uIGFy Y2gsXHJ2YworCS5nbG9iYWwgdGVzdF9cZnVuY19uYW1lCisJdGVzdF9cZnVuY19uYW1lOgorLmVu ZG0KKworLm1hY3JvIGdlbl90ZXN0X2luc3QgaW5zdAorCS5vcHRpb24gcHVzaAorCWdlbl9mdW5j X2hlYWRlciBcaW5zdCwgLWMKKwlfX2dlbl90ZXN0X2luc3QgXGluc3QsIGEwCisJLm9wdGlvbiBw b3AKKwlyZXQKKy5lbmRtCisKKy5tYWNybyBfX2dlbl90ZXN0X2luc3RfYyBuYW1lLCBzcmNfcmVn CisJLm9wdGlvbiBwdXNoCisJZ2VuX2Z1bmNfaGVhZGVyIGNfXG5hbWUsICtjCisJIF9fZ2VuX3Rl c3RfaW5zdCBjLlxuYW1lLCBcc3JjX3JlZworCS5vcHRpb24gcG9wCisJcmV0CisuZW5kbQorCisu bWFjcm8gZ2VuX3Rlc3RfaW5zdF9jIG5hbWUKKyAJX19nZW5fdGVzdF9pbnN0X2MgXG5hbWUsIGEw CisuZW5kbQorCisKKy5tYWNybyBnZW5fdGVzdF9pbnN0X2xvYWRfY19zcCBuYW1lCisJLm9wdGlv biBwdXNoCisJZ2VuX2Z1bmNfaGVhZGVyIGNfXG5hbWVcKClzcCwgK2MKKwlzcF9zdGFja19wcm9s b2d1ZSBhMQorCWNvcHlfbG9uZ190byB0MCwgYTAsIHNwCisJYy5sZHNwIGEwLCAwKHNwKQorCXNw X3N0YWNrX2VwaWxvZ3VlIGExCisJLm9wdGlvbiBwb3AKKwlyZXQKKy5lbmRtCisKKy5tYWNybyBs Yl9zcF9zYl9hMCByZWcsIG9mZnNldAorCWxiX3NiIFxyZWcsIFxvZmZzZXQsIHNwLCBhMAorLmVu ZG0KKworLm1hY3JvIGdlbl90ZXN0X2luc3Rfc3RvcmVfY19zcCBpbnN0X25hbWUKKwkub3B0aW9u IHB1c2gKKwlnZW5fZnVuY19oZWFkZXIgY19caW5zdF9uYW1lXCgpc3AsICtjCisJLyogTWlzYWxp Z24gc3RhY2sgcG9pbnRlciAqLworCXNwX3N0YWNrX3Byb2xvZ3VlIGExCisJLyogTWlzYWxpZ24g YWNjZXNzICovCisJYy5zZHNwIGEyLCAwKHNwKQorCWNvcHlfbG9uZ190byB0MCwgc3AsIGEwCisJ c3Bfc3RhY2tfZXBpbG9ndWUgYTEKKwkub3B0aW9uIHBvcAorCXJldAorLmVuZG0KKworCisgLyoK KyAqIGEwID0gYWRkciB0byBsb2FkIGZyb20KKyAqIGExID0gYWRkcmVzcyBvZmZzZXQKKyAqIGEy ID0gdmFsdWUgdG8gYmUgbG9hZGVkCisgKi8KK2dlbl90ZXN0X2luc3QgbGgKK2dlbl90ZXN0X2lu c3QgbGh1CitnZW5fdGVzdF9pbnN0IGx3CitnZW5fdGVzdF9pbnN0IGx3dQorZ2VuX3Rlc3RfaW5z dCBsZAorI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3NlZAorZ2VuX3Rlc3RfaW5zdF9jIGx3CitnZW5f dGVzdF9pbnN0X2MgbGQKK2dlbl90ZXN0X2luc3RfbG9hZF9jX3NwIGxkCisjZW5kaWYKKworLyoK KyAqIGEwID0gYWRkciB3aGVyZSB0byBzdG9yZSB2YWx1ZQorICogYTEgPSBhZGRyZXNzIG9mZnNl dAorICogYTIgPSB2YWx1ZSB0byBiZSBzdG9yZWQKKyAqLworZ2VuX3Rlc3RfaW5zdCBzaAorZ2Vu X3Rlc3RfaW5zdCBzdworZ2VuX3Rlc3RfaW5zdCBzZAorI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3Nl ZAorZ2VuX3Rlc3RfaW5zdF9jIHN3CitnZW5fdGVzdF9pbnN0X2Mgc2QKK2dlbl90ZXN0X2luc3Rf c3RvcmVfY19zcCBzZAorI2VuZGlmCisKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3Jpc2N2L21pc2FsaWduZWQvbWlzYWxpZ25lZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvcmlzY3YvbWlzYWxpZ25lZC9taXNhbGlnbmVkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5jNjZhYTg3ZWMwM2UKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9yaXNjdi9taXNhbGlnbmVkL21pc2FsaWduZWQuYwpAQCAtMCwwICsx LDI1NCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjUgUml2b3MgSW5jLgorICoKKyAqIEF1dGhvcnM6CisgKiAgICAgQ2zDqW1l bnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29tPgorICovCisjaW5jbHVkZSA8c2lnbmFsLmg+ CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsaW51 eC9wdHJhY2UuaD4KKyNpbmNsdWRlICIuLi8uLi9rc2VsZnRlc3RfaGFybmVzcy5oIgorCisjaW5j bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4K KyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bWF0aC5o PgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0 ZGJvb2wuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2lu Y2x1ZGUgPHVjb250ZXh0Lmg+CisKKyNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKworI2RlZmluZSBz dHJpbmdpZnkocykgX19zdHJpbmdpZnkocykKKyNkZWZpbmUgX19zdHJpbmdpZnkocykgI3MKKwor I2RlZmluZSBWQUwxNgkweDEyMzQKKyNkZWZpbmUgVkFMMzIJMHhERUFEQkVFRgorI2RlZmluZSBW QUw2NAkweDQ1Njc0MzIxRDAwREY3ODkKKworI2RlZmluZSBWQUxfZmxvYXQJNzg5NTEuMjM0Mzc1 CisjZGVmaW5lIFZBTF9kb3VibGUJNTY3ODkwLjUxMjM5Njk2NTc4OTU4OTI5MAorCitzdGF0aWMg Ym9vbCBmbG9hdF9lcXVhbChmbG9hdCBhLCBmbG9hdCBiKQoreworCWZsb2F0IHNjYWxlZF9lcHNp bG9uOworCWZsb2F0IGRpZmZlcmVuY2UgPSBmYWJzZihhIC0gYik7CisKKwkvLyBTY2FsZSB0byB0 aGUgbGFyZ2VzdCB2YWx1ZS4KKwlhID0gZmFic2YoYSk7CisJYiA9IGZhYnNmKGIpOworCWlmIChh ID4gYikKKwkJc2NhbGVkX2Vwc2lsb24gPSBGTFRfRVBTSUxPTiAqIGE7CisJZWxzZQorCQlzY2Fs ZWRfZXBzaWxvbiA9IEZMVF9FUFNJTE9OICogYjsKKworCXJldHVybiBkaWZmZXJlbmNlIDw9IHNj YWxlZF9lcHNpbG9uOworfQorCitzdGF0aWMgYm9vbCBkb3VibGVfZXF1YWwoZG91YmxlIGEsIGRv dWJsZSBiKQoreworCWRvdWJsZSBzY2FsZWRfZXBzaWxvbjsKKwlkb3VibGUgZGlmZmVyZW5jZSA9 IGZhYnNmKGEgLSBiKTsKKworCS8vIFNjYWxlIHRvIHRoZSBsYXJnZXN0IHZhbHVlLgorCWEgPSBm YWJzKGEpOworCWIgPSBmYWJzKGIpOworCWlmIChhID4gYikKKwkJc2NhbGVkX2Vwc2lsb24gPSBE QkxfRVBTSUxPTiAqIGE7CisJZWxzZQorCQlzY2FsZWRfZXBzaWxvbiA9IERCTF9FUFNJTE9OICog YjsKKworCXJldHVybiBkaWZmZXJlbmNlIDw9IHNjYWxlZF9lcHNpbG9uOworfQorCisjZGVmaW5l IGZwdV9sb2FkX3Byb3RvKF9faW5zdCwgX190eXBlKSBcCitleHRlcm4gX190eXBlIHRlc3RfICMj IF9faW5zdCh1bnNpZ25lZCBsb25nIGZwX3JlZywgdm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBv ZmZzZXQsIF9fdHlwZSB2YWx1ZSkKKworZnB1X2xvYWRfcHJvdG8oZmx3LCBmbG9hdCk7CitmcHVf bG9hZF9wcm90byhmbGQsIGRvdWJsZSk7CitmcHVfbG9hZF9wcm90byhjX2ZsdywgZmxvYXQpOwor ZnB1X2xvYWRfcHJvdG8oY19mbGQsIGRvdWJsZSk7CitmcHVfbG9hZF9wcm90byhjX2ZsZHNwLCBk b3VibGUpOworCisjZGVmaW5lIGZwdV9zdG9yZV9wcm90byhfX2luc3QsIF9fdHlwZSkgXAorZXh0 ZXJuIHZvaWQgdGVzdF8gIyMgX19pbnN0KHVuc2lnbmVkIGxvbmcgZnBfcmVnLCB2b2lkICphZGRy LCB1bnNpZ25lZCBsb25nIG9mZnNldCwgX190eXBlIHZhbHVlKQorCitmcHVfc3RvcmVfcHJvdG8o ZnN3LCBmbG9hdCk7CitmcHVfc3RvcmVfcHJvdG8oZnNkLCBkb3VibGUpOworZnB1X3N0b3JlX3By b3RvKGNfZnN3LCBmbG9hdCk7CitmcHVfc3RvcmVfcHJvdG8oY19mc2QsIGRvdWJsZSk7CitmcHVf c3RvcmVfcHJvdG8oY19mc2RzcCwgZG91YmxlKTsKKworI2RlZmluZSBncF9sb2FkX3Byb3RvKF9f aW5zdCwgX190eXBlKSBcCitleHRlcm4gX190eXBlIHRlc3RfICMjIF9faW5zdCh2b2lkICphZGRy LCB1bnNpZ25lZCBsb25nIG9mZnNldCwgX190eXBlIHZhbHVlKQorCitncF9sb2FkX3Byb3RvKGxo LCB1aW50MTZfdCk7CitncF9sb2FkX3Byb3RvKGxodSwgdWludDE2X3QpOworZ3BfbG9hZF9wcm90 byhsdywgdWludDMyX3QpOworZ3BfbG9hZF9wcm90byhsd3UsIHVpbnQzMl90KTsKK2dwX2xvYWRf cHJvdG8obGQsIHVpbnQ2NF90KTsKK2dwX2xvYWRfcHJvdG8oY19sdywgdWludDMyX3QpOworZ3Bf bG9hZF9wcm90byhjX2xkLCB1aW50NjRfdCk7CitncF9sb2FkX3Byb3RvKGNfbGRzcCwgdWludDY0 X3QpOworCisjZGVmaW5lIGdwX3N0b3JlX3Byb3RvKF9faW5zdCwgX190eXBlKSBcCitleHRlcm4g dm9pZCB0ZXN0XyAjIyBfX2luc3Qodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIF9f dHlwZSB2YWx1ZSkKKworZ3Bfc3RvcmVfcHJvdG8oc2gsIHVpbnQxNl90KTsKK2dwX3N0b3JlX3By b3RvKHN3LCB1aW50MzJfdCk7CitncF9zdG9yZV9wcm90byhzZCwgdWludDY0X3QpOworZ3Bfc3Rv cmVfcHJvdG8oY19zdywgdWludDMyX3QpOworZ3Bfc3RvcmVfcHJvdG8oY19zZCwgdWludDY0X3Qp OworZ3Bfc3RvcmVfcHJvdG8oY19zZHNwLCB1aW50NjRfdCk7CisKKyNkZWZpbmUgVEVTVF9HUF9M T0FEKF9faW5zdCwgX190eXBlX3NpemUpCQkJCQlcCitURVNUKGdwX2xvYWRfICMjIF9faW5zdCkJ CQkJCQkJXAorewkJCQkJCQkJCQlcCisJaW50IG9mZnNldCwgcmV0OwkJCQkJCQlcCisJdWludDhf dCBidWZbMTZdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSk7CQkJCVwKKwkJCQkJCQkJCQlc CisJcmV0ID0gcHJjdGwoUFJfU0VUX1VOQUxJR04sIFBSX1VOQUxJR05fTk9QUklOVCk7CQkJXAor CUFTU0VSVF9FUShyZXQsIDApOwkJCQkJCQlcCisJCQkJCQkJCQkJXAorCWZvciAob2Zmc2V0ID0g MTsgb2Zmc2V0IDwgX190eXBlX3NpemUgLyA4OyBvZmZzZXQrKykgewkJCVwKKwkJdWludCAjIyBf X3R5cGVfc2l6ZSAjIyBfdCB2YWwgPSBWQUwgIyMgX190eXBlX3NpemU7CQlcCisJCXVpbnQgIyMg X190eXBlX3NpemUgIyMgX3QgKnB0ciA9ICh1aW50ICMjIF9fdHlwZV9zaXplICMjIF90ICopIChi dWYgKyBvZmZzZXQpOyBcCisJCW1lbWNweShwdHIsICZ2YWwsIHNpemVvZih2YWwpKTsJCQkJCVwK KwkJdmFsID0gdGVzdF8gIyMgX19pbnN0KHB0ciwgb2Zmc2V0LCB2YWwpOwkJCVwKKwkJRVhQRUNU X0VRKFZBTCAjIyBfX3R5cGVfc2l6ZSwgdmFsKTsJCQkJXAorCX0JCQkJCQkJCQlcCit9CisKK1RF U1RfR1BfTE9BRChsaCwgMTYpOworVEVTVF9HUF9MT0FEKGxodSwgMTYpOworVEVTVF9HUF9MT0FE KGx3LCAzMik7CitURVNUX0dQX0xPQUQobHd1LCAzMik7CitURVNUX0dQX0xPQUQobGQsIDY0KTsK KyNpZmRlZiBfX3Jpc2N2X2NvbXByZXNzZWQKK1RFU1RfR1BfTE9BRChjX2x3LCAzMik7CitURVNU X0dQX0xPQUQoY19sZCwgNjQpOworVEVTVF9HUF9MT0FEKGNfbGRzcCwgNjQpOworI2VuZGlmCisK KyNkZWZpbmUgVEVTVF9HUF9TVE9SRShfX2luc3QsIF9fdHlwZV9zaXplKQkJCQkJXAorVEVTVChn cF9sb2FkXyAjIyBfX2luc3QpCQkJCQkJCVwKK3sJCQkJCQkJCQkJXAorCWludCBvZmZzZXQsIHJl dDsJCQkJCQkJXAorCXVpbnQ4X3QgYnVmWzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkp OwkJCQlcCisJCQkJCQkJCQkJXAorCXJldCA9IHByY3RsKFBSX1NFVF9VTkFMSUdOLCBQUl9VTkFM SUdOX05PUFJJTlQpOwkJCVwKKwlBU1NFUlRfRVEocmV0LCAwKTsJCQkJCQkJXAorCQkJCQkJCQkJ CVwKKwlmb3IgKG9mZnNldCA9IDE7IG9mZnNldCA8IF9fdHlwZV9zaXplIC8gODsgb2Zmc2V0Kysp IHsJCQlcCisJCXVpbnQgIyMgX190eXBlX3NpemUgIyMgX3QgdmFsID0gVkFMICMjIF9fdHlwZV9z aXplOwkJXAorCQl1aW50ICMjIF9fdHlwZV9zaXplICMjIF90ICpwdHIgPSAodWludCAjIyBfX3R5 cGVfc2l6ZSAjIyBfdCAqKSAoYnVmICsgb2Zmc2V0KTsgXAorCQltZW1zZXQocHRyLCAwLCBzaXpl b2YodmFsKSk7CQkJCQlcCisJCXRlc3RfICMjIF9faW5zdChwdHIsIG9mZnNldCwgdmFsKTsJCQkJ XAorCQltZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CQkJCQlcCisJCUVYUEVDVF9FUShW QUwgIyMgX190eXBlX3NpemUsIHZhbCk7CQkJCVwKKwl9CQkJCQkJCQkJXAorfQorVEVTVF9HUF9T VE9SRShzaCwgMTYpOworVEVTVF9HUF9TVE9SRShzdywgMzIpOworVEVTVF9HUF9TVE9SRShzZCwg NjQpOworI2lmZGVmIF9fcmlzY3ZfY29tcHJlc3NlZAorVEVTVF9HUF9TVE9SRShjX3N3LCAzMik7 CitURVNUX0dQX1NUT1JFKGNfc2QsIDY0KTsKK1RFU1RfR1BfU1RPUkUoY19zZHNwLCA2NCk7Cisj ZW5kaWYKKworI2RlZmluZSBfX1RFU1RfRlBVX0xPQUQoX190eXBlLCBfX2luc3QsIF9fcmVnX3N0 YXJ0LCBfX3JlZ19lbmQpCQkJXAorVEVTVChmcHVfbG9hZF8gIyMgX19pbnN0KQkJCQkJCQlcCit7 CQkJCQkJCQkJCVwKKwlpbnQgaSwgcmV0LCBvZmZzZXQsIGZwX3JlZzsJCQkJCQlcCisJdWludDhf dCBidWZbMTZdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSk7CQkJCVwKKwkJCQkJCQkJCQlc CisJcmV0ID0gcHJjdGwoUFJfU0VUX1VOQUxJR04sIFBSX1VOQUxJR05fTk9QUklOVCk7CQkJXAor CUFTU0VSVF9FUShyZXQsIDApOwkJCQkJCQlcCisJCQkJCQkJCQkJXAorCWZvciAoZnBfcmVnID0g X19yZWdfc3RhcnQ7IGZwX3JlZyA8IF9fcmVnX2VuZDsgZnBfcmVnKyspIHsJCVwKKwkJZm9yIChv ZmZzZXQgPSAxOyBvZmZzZXQgPCA0OyBvZmZzZXQrKykgewkJCVwKKwkJCXZvaWQgKmxvYWRfYWRk ciA9IChidWYgKyBvZmZzZXQpOwkJCVwKKwkJCV9fdHlwZSB2YWwgPSBWQUxfICMjIF9fdHlwZSA7 CQkJCVwKKwkJCQkJCQkJCQlcCisJCQltZW1jcHkobG9hZF9hZGRyLCAmdmFsLCBzaXplb2YodmFs KSk7CQkJXAorCQkJdmFsID0gdGVzdF8gIyMgX19pbnN0KGZwX3JlZywgbG9hZF9hZGRyLCBvZmZz ZXQsIHZhbCk7CVwKKwkJCUVYUEVDVF9UUlVFKF9fdHlwZSAjI19lcXVhbCh2YWwsIFZBTF8jIyBf X3R5cGUpKTsJXAorCQl9CQkJCQkJCQlcCisJfQkJCQkJCQkJCVwKK30KKyNkZWZpbmUgVEVTVF9G UFVfTE9BRChfX3R5cGUsIF9faW5zdCkgXAorCV9fVEVTVF9GUFVfTE9BRChfX3R5cGUsIF9faW5z dCwgMCwgMzIpCisjZGVmaW5lIFRFU1RfRlBVX0xPQURfQ09NUFJFU1NFRChfX3R5cGUsIF9faW5z dCkgXAorCV9fVEVTVF9GUFVfTE9BRChfX3R5cGUsIF9faW5zdCwgOCwgMTYpCisKK1RFU1RfRlBV X0xPQUQoZmxvYXQsIGZsdykKK1RFU1RfRlBVX0xPQUQoZG91YmxlLCBmbGQpCisjaWZkZWYgX19y aXNjdl9jb21wcmVzc2VkCitURVNUX0ZQVV9MT0FEX0NPTVBSRVNTRUQoZG91YmxlLCBjX2ZsZCkK K1RFU1RfRlBVX0xPQURfQ09NUFJFU1NFRChkb3VibGUsIGNfZmxkc3ApCisjZW5kaWYKKworI2Rl ZmluZSBfX1RFU1RfRlBVX1NUT1JFKF9fdHlwZSwgX19pbnN0LCBfX3JlZ19zdGFydCwgX19yZWdf ZW5kKQkJXAorVEVTVChmcHVfc3RvcmVfICMjIF9faW5zdCkJCQkJCQkJXAorewkJCQkJCQkJCQlc CisJaW50IGksIHJldCwgb2Zmc2V0LCBmcF9yZWc7CQkJCQkJXAorCXVpbnQ4X3QgYnVmWzE2XSBf X2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOwkJCQlcCisJCQkJCQkJCQkJXAorCXJldCA9IHBy Y3RsKFBSX1NFVF9VTkFMSUdOLCBQUl9VTkFMSUdOX05PUFJJTlQpOwkJCVwKKwlBU1NFUlRfRVEo cmV0LCAwKTsJCQkJCQkJXAorCQkJCQkJCQkJCVwKKwlmb3IgKGZwX3JlZyA9IF9fcmVnX3N0YXJ0 OyBmcF9yZWcgPCBfX3JlZ19lbmQ7IGZwX3JlZysrKSB7CQlcCisJCWZvciAob2Zmc2V0ID0gMTsg b2Zmc2V0IDwgNDsgb2Zmc2V0KyspIHsJCQlcCisJCQkJCQkJCQkJXAorCQkJdm9pZCAqc3RvcmVf YWRkciA9IChidWYgKyBvZmZzZXQpOwkJCVwKKwkJCV9fdHlwZSB2YWwgPSBWQUxfICMjIF9fdHlw ZSA7CQkJCVwKKwkJCQkJCQkJCQlcCisJCQl0ZXN0XyAjIyBfX2luc3QoZnBfcmVnLCBzdG9yZV9h ZGRyLCBvZmZzZXQsIHZhbCk7CVwKKwkJCW1lbWNweSgmdmFsLCBzdG9yZV9hZGRyLCBzaXplb2Yo dmFsKSk7CQkJXAorCQkJRVhQRUNUX1RSVUUoX190eXBlICMjIF9lcXVhbCh2YWwsIFZBTF8jIyBf X3R5cGUpKTsJXAorCQl9CQkJCQkJCQlcCisJfQkJCQkJCQkJCVwKK30KKyNkZWZpbmUgVEVTVF9G UFVfU1RPUkUoX190eXBlLCBfX2luc3QpIFwKKwlfX1RFU1RfRlBVX1NUT1JFKF9fdHlwZSwgX19p bnN0LCAwLCAzMikKKyNkZWZpbmUgVEVTVF9GUFVfU1RPUkVfQ09NUFJFU1NFRChfX3R5cGUsIF9f aW5zdCkgXAorCV9fVEVTVF9GUFVfU1RPUkUoX190eXBlLCBfX2luc3QsIDgsIDE2KQorCitURVNU X0ZQVV9TVE9SRShmbG9hdCwgZnN3KQorVEVTVF9GUFVfU1RPUkUoZG91YmxlLCBmc2QpCisjaWZk ZWYgX19yaXNjdl9jb21wcmVzc2VkCitURVNUX0ZQVV9TVE9SRV9DT01QUkVTU0VEKGRvdWJsZSwg Y19mc2QpCitURVNUX0ZQVV9TVE9SRV9DT01QUkVTU0VEKGRvdWJsZSwgY19mc2RzcCkKKyNlbmRp ZgorCitURVNUX1NJR05BTChnZW5fc2lnYnVzLCBTSUdCVVMpCit7CisJdWludDMyX3QgKnB0cjsK Kwl1aW50OF90IGJ1ZlsxNl0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsKKwlpbnQgcmV0 OworCisJcmV0ID0gcHJjdGwoUFJfU0VUX1VOQUxJR04sIFBSX1VOQUxJR05fU0lHQlVTKTsKKwlB U1NFUlRfRVEocmV0LCAwKTsKKworCXB0ciA9ICh1aW50MzJfdCAqKShidWYgKyAxKTsKKwkqcHRy ID0gMHhERUFEQkVFRlVMTDsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQor eworCWludCByZXQsIHZhbDsKKworCXJldCA9IHByY3RsKFBSX0dFVF9VTkFMSUdOLCAmdmFsKTsK KwlpZiAocmV0ID09IC0xICYmIGVycm5vID09IEVJTlZBTCkKKwkJa3NmdF9leGl0X3NraXAoIlNL SVAgR0VUX1VOQUxJR05fQ1RMIG5vdCBzdXBwb3J0ZWRcbiIpOworCisJZXhpdCh0ZXN0X2hhcm5l c3NfcnVuKGFyZ2MsIGFyZ3YpKTsKK30KLS0gCjIuNDcuMgoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51 eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK