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 A1708C021A5 for ; Mon, 10 Feb 2025 22:55:57 +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=dfEB570GWUP8w/SGhDqRs+4jXhgwCeckMbEaazF9llc=; b=boP2YMGPggr9gb rA2fdc/5244MNgGOOxeH0J0ocSBVQBnfSH1xDEoQIKIuTKztKONPZoY9c02fXptGIDW0WQMLH8OMN lvSHdN7QDb36pvKEgI5C9/ap8rw1Yfrafw/oS71WNXJ0gb5/44U6btz+Rq92IbEGDLPUNx0W2PgQy +oPSEU/uYcxuezyZS0kmdqIwyUaOMerjlOM5iK1UAneDc8Mr9GXZq4JOo1YWRVVyqwa6LmKivokyo 8BSdHyHWlpG24SB3dO9uWV0sXC4IDJTDFt/lcP/GSoZ+u7UjsqdL/tFuGRA9KYFByOOiEXgjyrQHC 5VQq0mQtjUKDi8PGVcbw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1thcgx-00000001kgs-4AmS; Mon, 10 Feb 2025 22:55:51 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thbSC-00000001VXa-04U8 for linux-riscv@bombadil.infradead.org; Mon, 10 Feb 2025 21:36:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=RJSUzdndk4ql30HsE/riyh0SU26bZCnMPM5fCg9Yfhc=; b=Ogtg5B88wTVsbR9rj9iNdXVDRy c3hDdDWVR5+87IXqhrvTKsJ+F/VZryxuya60lkn6cjsxCpRayXzCAG/2CGvK395jvtnGbKlLTDrSn UMyPSy8b+bsIVb//zf8B7r4btklSF584wzD2HNhyXcXcMMIE3KtOJtzjHBlhb47neVObV9fRqNv9h tXBsMOVofMTNR54eu2Dl06MdTcw3cjE4CXkSx4443n4HP+xFBdncrbbVWPeCIDIgqTpNgKePABUd7 +YW5WfE0W5dchu8DJbsPjygCO6GQOy0QCRoeXqbzIZz1y+GAZyZZQFrARAy4MTxl1h208qS9uZOPx JloAJEHQ==; Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1thbS0-00000000IAo-1cxX for linux-riscv@lists.infradead.org; Mon, 10 Feb 2025 21:36:30 +0000 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-4368a293339so54242175e9.3 for ; Mon, 10 Feb 2025 13:36:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1739223378; x=1739828178; 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=RJSUzdndk4ql30HsE/riyh0SU26bZCnMPM5fCg9Yfhc=; b=c12zXq/1PnBbHAdGdMkAHy/P82AniGkImarU6A7xDoh5kV/aSQy2fVU/bOYioAcXco v9Mj5Bfr9xMa5t9LFtyNRn3eImcykpFckdW75PCoy6JXA2bGCSY0Ybdf9iiF7W1UuPl6 zhE0ik5DvgqqVlTXZQzNi2J24/YE1+ksmUWNPCLBrXz42HDDfutnhd+6f0RuGoqaNFSy hTxFvYiXRGwZyKyYBv6olNbW3ejOCUzBvGyb+ippHSXSUEHpZ8OA1dEdao0EIh+tkgmh YbRX9vfqLGH2OFwoe7dQ2S3PD3qzVBjurGiil8DfdubUM6qlG6vkLOZx/a0SHsFCe6Z8 bViw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739223378; x=1739828178; 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=RJSUzdndk4ql30HsE/riyh0SU26bZCnMPM5fCg9Yfhc=; b=IC9Nk1mvsUZV+PjdYIPJlQxRPCrjB0VcQppJNfOgVmWVDrGf5OyN4aphd6ANmeGhpp Xy2j6snZkMYR3LfVTzsLOCN2rwFX0eaRospztyQ3hwVDFRa2AmT+MdvMHjiqiaEqTj24 Tnmw7M//whj2hQKDE9mwTkdf11MWj1F7giCACgI6JoCtcuT8t7WItJisO+DmDcWO+Jtc 8zOxeCyGK9n/VMLbOmuCalYnZAgG66VyvMfzUIreAC2aW1cVBTuorXkktAi/9kmuD9lO N1fVl2flO5y5IEDGHKnH9SFABPzrbxHvjwX5BxtAMnTcPr6E3kT2szCJh4XsoP7loJeB pzyg== X-Forwarded-Encrypted: i=1; AJvYcCVrWU0qQdNN5fmT5yrrkln8H479ztLlYDzlHIVBE8xQFbS/pMOwP10hqKsqBg5ltbBNnlGNoBusCp6qlQ==@lists.infradead.org X-Gm-Message-State: AOJu0Yz1lEM3SR4QWtpeIOjpt2wDr8yTCqPjp/nm2UEcPzU6tUR4KV2s 9RqatI4f9g6pI0Ink/0+fsyiaCc5+muDlrQnTgaV49vPyvqZUrajUjZY2FTiGPE= X-Gm-Gg: ASbGncvq7wNvpv9mSVkHJQkUPxDYHB5zeoESIp4+qHl+qIf/p0r3YzItaDeN4Jka0yk S7G4QDKqAUH74WddDfBz8z/DeEOMoEtj2d6vTsHPZKNmS/H30UdNUKGo7exNFmZjsQMPewuwZv2 BDHslnisHYN2yw72p+74a7LRRhVjNByw/QXhNcbP0J4fxNk7mHctcARnLpYyGm+1rspAMo7mJFL H7ts9UtSdwKbUFqGXQl5cF7cmjKRTm/5bIn320qseOcbAYujG8l8cvScgw0M5pL1LQoNQrqT50n /IvzGpd6QhxQQK4J X-Google-Smtp-Source: AGHT+IGMDu/bCX9TXIeNn91Z22iDYfD1fXEmRgjm7bZ5TYj7K7V+RigwdaTSt77F20ZWpcrKQ+IWSQ== X-Received: by 2002:a05:600c:3d07:b0:439:4700:9eb3 with SMTP id 5b1f17b1804b1-43947009ff1mr37100025e9.3.1739223378129; Mon, 10 Feb 2025 13:36:18 -0800 (PST) Received: from carbon-x1.. ([2a01:e0a:e17:9700:16d2:7456:6634:9626]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4394376118esm47541515e9.40.2025.02.10.13.36.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 13:36:17 -0800 (PST) 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 Subject: [PATCH v2 11/15] selftests: riscv: add misaligned access testing Date: Mon, 10 Feb 2025 22:35:44 +0100 Message-ID: <20250210213549.1867704-12-cleger@rivosinc.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250210213549.1867704-1-cleger@rivosinc.com> References: <20250210213549.1867704-1-cleger@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250210_213623_836398_B4376520 X-CRM114-Status: GOOD ( 19.79 ) 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 ZXggMDAwMDAwMDAwMDAwLi41Y2FhOGMxYzUwYmQKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90 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 MTsgb2Zmc2V0IDwgX190eXBlX3NpemUvODsgb2Zmc2V0KyspIHsJCQlcCisJCXVpbnQgIyMgX190 eXBlX3NpemUgIyMgX3QgdmFsID0gVkFMICMjIF9fdHlwZV9zaXplOwkJXAorCQl1aW50ICMjIF9f dHlwZV9zaXplICMjIF90ICpwdHIgPSAodWludCAjIyBfX3R5cGVfc2l6ZSAjIyBfdCAqKSAoYnVm ICsgb2Zmc2V0KTsgXAorCQltZW1jcHkocHRyLCAmdmFsLCBzaXplb2YodmFsKSk7CQkJCQlcCisJ CXZhbCA9IHRlc3RfICMjIF9faW5zdChwdHIsIG9mZnNldCwgdmFsKTsJCQlcCisJCUVYUEVDVF9F UShWQUwgIyMgX190eXBlX3NpemUsIHZhbCk7CQkJCVwKKwl9CQkJCQkJCQkJXAorfQorCitURVNU X0dQX0xPQUQobGgsIDE2KTsKK1RFU1RfR1BfTE9BRChsaHUsIDE2KTsKK1RFU1RfR1BfTE9BRChs dywgMzIpOworVEVTVF9HUF9MT0FEKGx3dSwgMzIpOworVEVTVF9HUF9MT0FEKGxkLCA2NCk7Cisj aWZkZWYgX19yaXNjdl9jb21wcmVzc2VkCitURVNUX0dQX0xPQUQoY19sdywgMzIpOworVEVTVF9H UF9MT0FEKGNfbGQsIDY0KTsKK1RFU1RfR1BfTE9BRChjX2xkc3AsIDY0KTsKKyNlbmRpZgorCisj ZGVmaW5lIFRFU1RfR1BfU1RPUkUoX19pbnN0LCBfX3R5cGVfc2l6ZSkJCQkJCVwKK1RFU1QoZ3Bf bG9hZF8gIyMgX19pbnN0KQkJCQkJCQlcCit7CQkJCQkJCQkJCVwKKwlpbnQgb2Zmc2V0LCByZXQ7 CQkJCQkJCVwKKwl1aW50OF90IGJ1ZlsxNl0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsJ CQkJXAorCQkJCQkJCQkJCVwKKwlyZXQgPSBwcmN0bChQUl9TRVRfVU5BTElHTiwgUFJfVU5BTElH Tl9OT1BSSU5UKTsJCQlcCisJQVNTRVJUX0VRKHJldCwgMCk7CQkJCQkJCVwKKwkJCQkJCQkJCQlc CisJZm9yIChvZmZzZXQgPSAxOyBvZmZzZXQgPCBfX3R5cGVfc2l6ZS84OyBvZmZzZXQrKykgewkJ CVwKKwkJdWludCAjIyBfX3R5cGVfc2l6ZSAjIyBfdCB2YWwgPSBWQUwgIyMgX190eXBlX3NpemU7 CQlcCisJCXVpbnQgIyMgX190eXBlX3NpemUgIyMgX3QgKnB0ciA9ICh1aW50ICMjIF9fdHlwZV9z aXplICMjIF90ICopIChidWYgKyBvZmZzZXQpOyBcCisJCW1lbXNldChwdHIsIDAsIHNpemVvZih2 YWwpKTsJCQkJCVwKKwkJdGVzdF8gIyMgX19pbnN0KHB0ciwgb2Zmc2V0LCB2YWwpOwkJCQlcCisJ CW1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsJCQkJCVwKKwkJRVhQRUNUX0VRKFZBTCAj IyBfX3R5cGVfc2l6ZSwgdmFsKTsJCQkJXAorCX0JCQkJCQkJCQlcCit9CitURVNUX0dQX1NUT1JF KHNoLCAxNik7CitURVNUX0dQX1NUT1JFKHN3LCAzMik7CitURVNUX0dQX1NUT1JFKHNkLCA2NCk7 CisjaWZkZWYgX19yaXNjdl9jb21wcmVzc2VkCitURVNUX0dQX1NUT1JFKGNfc3csIDMyKTsKK1RF U1RfR1BfU1RPUkUoY19zZCwgNjQpOworVEVTVF9HUF9TVE9SRShjX3Nkc3AsIDY0KTsKKyNlbmRp ZgorCisjZGVmaW5lIF9fVEVTVF9GUFVfTE9BRChfX3R5cGUsIF9faW5zdCwgX19yZWdfc3RhcnQs IF9fcmVnX2VuZCkJCQlcCitURVNUKGZwdV9sb2FkXyAjIyBfX2luc3QpCQkJCQkJCVwKK3sJCQkJ CQkJCQkJXAorCWludCBpLCByZXQsIG9mZnNldCwgZnBfcmVnOwkJCQkJCVwKKwl1aW50OF90IGJ1 ZlsxNl0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxNikpKTsJCQkJXAorCQkJCQkJCQkJCVwKKwly ZXQgPSBwcmN0bChQUl9TRVRfVU5BTElHTiwgUFJfVU5BTElHTl9OT1BSSU5UKTsJCQlcCisJQVNT RVJUX0VRKHJldCwgMCk7CQkJCQkJCVwKKwkJCQkJCQkJCQlcCisJZm9yIChmcF9yZWcgPSBfX3Jl Z19zdGFydDsgZnBfcmVnIDwgX19yZWdfZW5kOyBmcF9yZWcrKykgewkJXAorCQlmb3IgKG9mZnNl dCA9IDE7IG9mZnNldCA8IDQ7IG9mZnNldCsrKSB7CQkJXAorCQkJdm9pZCAqbG9hZF9hZGRyID0g KGJ1ZiArIG9mZnNldCk7CQkJXAorCQkJX190eXBlIHZhbCA9IFZBTF8gIyMgX190eXBlIDsJCQkJ XAorCQkJCQkJCQkJCVwKKwkJCW1lbWNweShsb2FkX2FkZHIsICZ2YWwsIHNpemVvZih2YWwpKTsJ CQlcCisJCQl2YWwgPSB0ZXN0XyAjIyBfX2luc3QoZnBfcmVnLCBsb2FkX2FkZHIsIG9mZnNldCwg dmFsKTsJXAorCQkJRVhQRUNUX1RSVUUoX190eXBlICMjX2VxdWFsKHZhbCwgVkFMXyMjIF9fdHlw ZSkpOwlcCisJCX0JCQkJCQkJCVwKKwl9CQkJCQkJCQkJXAorfQorI2RlZmluZSBURVNUX0ZQVV9M T0FEKF9fdHlwZSwgX19pbnN0KSBcCisJX19URVNUX0ZQVV9MT0FEKF9fdHlwZSwgX19pbnN0LCAw LCAzMikKKyNkZWZpbmUgVEVTVF9GUFVfTE9BRF9DT01QUkVTU0VEKF9fdHlwZSwgX19pbnN0KSBc CisJX19URVNUX0ZQVV9MT0FEKF9fdHlwZSwgX19pbnN0LCA4LCAxNikKKworVEVTVF9GUFVfTE9B RChmbG9hdCwgZmx3KQorVEVTVF9GUFVfTE9BRChkb3VibGUsIGZsZCkKKyNpZmRlZiBfX3Jpc2N2 X2NvbXByZXNzZWQKK1RFU1RfRlBVX0xPQURfQ09NUFJFU1NFRChkb3VibGUsIGNfZmxkKQorVEVT VF9GUFVfTE9BRF9DT01QUkVTU0VEKGRvdWJsZSwgY19mbGRzcCkKKyNlbmRpZgorCisjZGVmaW5l IF9fVEVTVF9GUFVfU1RPUkUoX190eXBlLCBfX2luc3QsIF9fcmVnX3N0YXJ0LCBfX3JlZ19lbmQp CQlcCitURVNUKGZwdV9zdG9yZV8gIyMgX19pbnN0KQkJCQkJCQlcCit7CQkJCQkJCQkJCVwKKwlp bnQgaSwgcmV0LCBvZmZzZXQsIGZwX3JlZzsJCQkJCQlcCisJdWludDhfdCBidWZbMTZdIF9fYXR0 cmlidXRlX18oKGFsaWduZWQoMTYpKSk7CQkJCVwKKwkJCQkJCQkJCQlcCisJcmV0ID0gcHJjdGwo UFJfU0VUX1VOQUxJR04sIFBSX1VOQUxJR05fTk9QUklOVCk7CQkJXAorCUFTU0VSVF9FUShyZXQs IDApOwkJCQkJCQlcCisJCQkJCQkJCQkJXAorCWZvciAoZnBfcmVnID0gX19yZWdfc3RhcnQ7IGZw X3JlZyA8IF9fcmVnX2VuZDsgZnBfcmVnKyspIHsJCVwKKwkJZm9yIChvZmZzZXQgPSAxOyBvZmZz ZXQgPCA0OyBvZmZzZXQrKykgewkJCVwKKwkJCQkJCQkJCQlcCisJCQl2b2lkICpzdG9yZV9hZGRy ID0gKGJ1ZiArIG9mZnNldCk7CQkJXAorCQkJX190eXBlIHZhbCA9IFZBTF8gIyMgX190eXBlIDsJ CQkJXAorCQkJCQkJCQkJCVwKKwkJCXRlc3RfICMjIF9faW5zdChmcF9yZWcsIHN0b3JlX2FkZHIs IG9mZnNldCwgdmFsKTsJXAorCQkJbWVtY3B5KCZ2YWwsIHN0b3JlX2FkZHIsIHNpemVvZih2YWwp KTsJCQlcCisJCQlFWFBFQ1RfVFJVRShfX3R5cGUgIyMgX2VxdWFsKHZhbCwgVkFMXyMjIF9fdHlw ZSkpOwlcCisJCX0JCQkJCQkJCVwKKwl9CQkJCQkJCQkJXAorfQorI2RlZmluZSBURVNUX0ZQVV9T VE9SRShfX3R5cGUsIF9faW5zdCkgXAorCV9fVEVTVF9GUFVfU1RPUkUoX190eXBlLCBfX2luc3Qs IDAsIDMyKQorI2RlZmluZSBURVNUX0ZQVV9TVE9SRV9DT01QUkVTU0VEKF9fdHlwZSwgX19pbnN0 KSBcCisJX19URVNUX0ZQVV9TVE9SRShfX3R5cGUsIF9faW5zdCwgOCwgMTYpCisKK1RFU1RfRlBV X1NUT1JFKGZsb2F0LCBmc3cpCitURVNUX0ZQVV9TVE9SRShkb3VibGUsIGZzZCkKKyNpZmRlZiBf X3Jpc2N2X2NvbXByZXNzZWQKK1RFU1RfRlBVX1NUT1JFX0NPTVBSRVNTRUQoZG91YmxlLCBjX2Zz ZCkKK1RFU1RfRlBVX1NUT1JFX0NPTVBSRVNTRUQoZG91YmxlLCBjX2ZzZHNwKQorI2VuZGlmCisK K1RFU1RfU0lHTkFMKGdlbl9zaWdidXMsIFNJR0JVUykKK3sKKwl1aW50MzJfdCAqcHRyOworCXVp bnQ4X3QgYnVmWzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOworCWludCByZXQ7CisK KwlyZXQgPSBwcmN0bChQUl9TRVRfVU5BTElHTiwgUFJfVU5BTElHTl9TSUdCVVMpOworCUFTU0VS VF9FUShyZXQsIDApOworCisJcHRyID0gKHVpbnQzMl90ICopKGJ1ZiArIDEpOworCSpwdHIgPSAw eERFQURCRUVGVUxMOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJ aW50IHJldCwgdmFsOworCisJcmV0ID0gcHJjdGwoUFJfR0VUX1VOQUxJR04sICZ2YWwpOworCWlm IChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUlOVkFMKQorCQlrc2Z0X2V4aXRfc2tpcCgiU0tJUCBH RVRfVU5BTElHTl9DVEwgbm90IHN1cHBvcnRlZFxuIik7CisKKwlleGl0KHRlc3RfaGFybmVzc19y dW4oYXJnYywgYXJndikpOworfQotLSAKMi40Ny4yCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJp c2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1yaXNjdgo=