From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id c9ghNWO2q1+dJwAAWB0awg (envelope-from ) for ; Wed, 11 Nov 2020 05:01:07 -0500 Received: by simark.ca (Postfix, from userid 112) id CD73E1F08B; Wed, 11 Nov 2020 05:01:07 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 941F51E58F for ; Wed, 11 Nov 2020 05:01:02 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EC4AD3857829; Wed, 11 Nov 2020 10:01:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EC4AD3857829 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1605088862; bh=7/60rBTH/Yl9XfnYVrcK4hpYQ0sKTcfKp/ZEwp5krsA=; h=To:Subject:Date:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=WpWXE420uRP2O4tQ+Q+tgKMag5IBy1foDvwISsP4Aygh7O4rIInPHIVxLrh6D55HF Wmcy1zV8TazBxPa4DXkCqx4lkVSqHcm32QOip3qTGb1wGPyVUVyVu0ki71NZcCvEYp m8oufR2KmDB9kRm6KDPpFqEAH6977k6JhNO736+w= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2053.outbound.protection.outlook.com [40.107.22.53]) by sourceware.org (Postfix) with ESMTPS id D7A88385DC1A for ; Wed, 11 Nov 2020 10:00:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D7A88385DC1A Received: from DB7PR05CA0058.eurprd05.prod.outlook.com (2603:10a6:10:2e::35) by VE1PR08MB4685.eurprd08.prod.outlook.com (2603:10a6:802:ae::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.25; Wed, 11 Nov 2020 10:00:47 +0000 Received: from DB5EUR03FT009.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2e:cafe::56) by DB7PR05CA0058.outlook.office365.com (2603:10a6:10:2e::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.21 via Frontend Transport; Wed, 11 Nov 2020 10:00:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT009.mail.protection.outlook.com (10.152.20.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3564.22 via Frontend Transport; Wed, 11 Nov 2020 10:00:47 +0000 Received: ("Tessian outbound fcd5bc555ddc:v71"); Wed, 11 Nov 2020 10:00:47 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: c4209fa5b1af6ddf X-CR-MTA-TID: 64aa7808 Received: from 6556f53f9990.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 3C3A0A72-9522-4AB5-A36F-719E621DBCDF.1; Wed, 11 Nov 2020 10:00:30 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 6556f53f9990.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 11 Nov 2020 10:00:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TXcrfnwY/3DWIpXZU+y3IImFtgZdkBfAL5woN2nZaPcRcKUNDZmhoBjEPTn4syNWSpclqgNsxwUDS3WehBd7+ob3FM/3Ylloaq5FH05LwoYWKDvd4V3haSZ47gnagWUVsmS9ELqoh5frMTGIB9A0W+NV7BRTzoEN3skJh++wbLcbxVNmZE/YvWrT1krtsp1wqNttfRUtT22wEZIjaI+GccrRG32NxmH1s7e+L/iYnO9pxx6Wrp7BDTGVaubyiTXaiI6sNYffAQRp4NUk+OKQ6+RLlA/Cf4Y55uj58s3uJOLImKaWNfOtNBhbFk1dHK1CIo2juP3Tl7obtILZttay5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7/60rBTH/Yl9XfnYVrcK4hpYQ0sKTcfKp/ZEwp5krsA=; b=hx1uLrBBFrTZvMIPtqwszCccmuQ6jwkLvpzVpPV0kLXpmsYpTRNqq10vv0SXjNN6V+8UaiORLBXeCGlaY2v6ySk/Gp86+M+zstQ2kUssiwMdrIPiervbigMDZn1C294cZb0cRQEymirMMpgO6FXH2YRpF+TydKaBtDCUQnYhppli4N5pcUvXxsu3kkwbfP6FOTKv5NUdi9fAfmbEXnLSaMdJAXuk232XYkuwToSUS8qEyM82BzPbFKd1m8CJe6ce5HEbaxp+h3az7RiZ3AcJkae4CS1tQymItcznFs1jvhpcOUJt8ND4qBfz6v0O4t7rtf3xF+2lQL+FUajjJwwR0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from AM6PR08MB3957.eurprd08.prod.outlook.com (2603:10a6:20b:a2::14) by AM6PR08MB3573.eurprd08.prod.outlook.com (2603:10a6:20b:4b::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3541.21; Wed, 11 Nov 2020 10:00:29 +0000 Received: from AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::e46d:da11:d7b9:7380]) by AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::e46d:da11:d7b9:7380%7]) with mapi id 15.20.3541.025; Wed, 11 Nov 2020 10:00:29 +0000 To: Simon Marchi Subject: Re: [PATCH] gdb/arm: avoid undefined behavior shift when decoding immediate value Thread-Topic: [PATCH] gdb/arm: avoid undefined behavior shift when decoding immediate value Thread-Index: AQHWttnxMZx20FioeE+hxikeg9tnwKnCtUSA Date: Wed, 11 Nov 2020 10:00:29 +0000 Message-ID: <735CB03B-2500-4CAE-8FB3-FA253DA4E414@arm.com> References: <20201109204945.1313866-1-simon.marchi@efficios.com> In-Reply-To: <20201109204945.1313866-1-simon.marchi@efficios.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.4) Authentication-Results-Original: efficios.com; dkim=none (message not signed) header.d=none; efficios.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [217.140.99.251] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 4b07f6e5-bcc8-494d-80f1-08d88628a983 x-ms-traffictypediagnostic: AM6PR08MB3573:|VE1PR08MB4685: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:1728;OLM:1728; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: /mIK616Ov+9p/fIrEo9mppX2gfrs2pRw0FbZteAJbbxGBc1ZngSB9RPhZLZhcHClDsjtPmFmHjm67gsw6nErDM6lPKQ/hY6DwgxZluIoKgy+LUy3UY/3gg9W4506UdPPrnI/nF7w8zUee031vb5JtWe1hy8TT0PUdZkT5cD6vhlLA6+PJtvYby6zXjh9vUSylbsqgv59IrydE2KxD6RJ6eY7MwuNpYuQO5Sii8W636I7QyWgUQQe/WMQUn8mX+bMTTnYcBiC0iZ6atn0ju6yyu8Ca63uU8Zy1IVa6nbNIGrvqRlNmnM3ZILEB/fte442kFQRouuMKtcBMBEG/exKBRWv9TFlesQ89GHBeVefIk7xN4vjVeSxG2TlYQS24iwl X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3957.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(396003)(39860400002)(376002)(346002)(66476007)(64756008)(66556008)(66446008)(71200400001)(30864003)(76116006)(6486002)(66946007)(5660300002)(26005)(91956017)(8676002)(53546011)(33656002)(6916009)(8936002)(478600001)(6512007)(2616005)(186003)(2906002)(4326008)(83380400001)(86362001)(6506007)(36756003)(54906003)(316002)(14773001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: SpzAREasS7Xp9qb4xoeVhquuI4QQ9AttIqes2qTHGpmhVxBfuwPlNNcDCFp/mwags6eYfzzErt8VxlcZpu+Rv+B3OU+MIu/B26Us2GWYcb/pzcXnI0CTmKyLBo2m0aC7c3pj5r2OjaG/mPf8/dMC3YPjlXe92YTshM0oAyIZO062BxPuCuGPZaxhYuVELJPxbksa3s9M1C1xVbLxDuWeTSvNj2tvjeobv9JgidlQxv/LVUDaIKwRxmVGWnznAQHlbwvevM+SCi4oVL3OdusYnMkJP3TerpCjzOUmnjb51jSU0x7x+XhvJOkpcD1kyfI21o+zpf+EK9bmvNqEbyGfDmkuLDaVNLfY0+7DM7XK93/zVtiFXn3M0s8gPVpsQjBTSdFkYYqSSZAdxcWmV2NbAKmtxYzn+Ee/AKHg8hjNRBAGCEJclkNig3W1aTRTPdjSDvamzFY3YqMydPaRouzUmjorzoezR7XQ4KOUx8+Z8vPnG+CsMq2VAOdGWDZF9+sgbouRTpWmUlRw0H5+VsiW5guNmMZ3HgTxyD4AC/jvVF2iqxO5+S0FDuo4SwKFRQYPJEmh+OdeI0csGnBS1tHlCJ3wyjVVQ7D+lgJnDnHz3tfx2sYIxLu55/BK6nIJOGCH3yKmAmZhJhxK+8TwgxVFDg== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <10E472A23CBFAE40A01101C3B77976F7@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3573 Original-Authentication-Results: efficios.com; dkim=none (message not signed) header.d=none; efficios.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT009.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: e4e8560b-6212-4e30-d20f-08d886289ee6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YIsVF9Mkov08jCtuYWB1vSHDfxjRGPw79NF4GdDfh0zz9KJn1ONV+ysHt4CeCXAPppkISM7MrchuPxY2dAgnT0aaa/LRBxpDuHflV9Loa5u3FAy1AQuQ52sm45FzVo6klwQi0acoIvbjwJeQ48uGbnoieiyEmwdCDTB4n6bICWPW1yijocZS6pV1GYBmVRW2UNYz0PLGqkaHerkcELZtnOcjoPOjPkrROQx3JVBehPbD5UPEqcdDYFhaynLnEOSuFeUaOCY0qbB+CuqaEe6J4zcivjz4sN9wmTRwsczdcAC38/plOV3sOcWGEoJCWB6IjbkdLxfSWyAOZ4ut65H11TPjCk77OkMUdzfHEmVPm1wtP1nsDgiv8+fFWibrAsjATwYgVLJaSQnHSEGbPXP6R6XNgcOJuYPnuX7D65kO9mo= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(136003)(346002)(396003)(376002)(39860400002)(46966005)(316002)(2906002)(356005)(26005)(81166007)(478600001)(6486002)(82310400003)(186003)(53546011)(6506007)(83380400001)(86362001)(6512007)(33656002)(54906003)(47076004)(6862004)(82740400003)(70206006)(5660300002)(336012)(36756003)(70586007)(8676002)(30864003)(2616005)(4326008)(8936002)(14773001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Nov 2020 10:00:47.3616 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b07f6e5-bcc8-494d-80f1-08d88628a983 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT009.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4685 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Alan Hayward via Gdb-patches Reply-To: Alan Hayward Cc: nd , "gdb-patches\\@sourceware.org" Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" DQoNCj4gT24gOSBOb3YgMjAyMCwgYXQgMjA6NDksIFNpbW9uIE1hcmNoaSB2aWEgR2RiLXBhdGNo ZXMgPGdkYi1wYXRjaGVzQHNvdXJjZXdhcmUub3JnPiB3cm90ZToNCj4gDQo+IEZyb206IFNpbW9u IE1hcmNoaSA8c2ltb24ubWFyY2hpQHBvbHltdGwuY2E+DQo+IA0KPiBXaGVuIGxvYWRpbmcgdGhl IGNvZGUgZmlsZSBwcm92aWRlZCBpbiBQUiAyNjgyOCBhbmQgR0RCIGlzIGJ1aWxkIHdpdGgNCj4g VUJTYW4sIHdlIGdldDoNCj4gDQo+ICAgIENvcmUgd2FzIGdlbmVyYXRlZCBieSBgLi9Gb28nLg0K PiAgICBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgU0lHQUJSVCwgQWJvcnRlZC4NCj4g ICAgIzAgIDB4YjZjMzgwOWMgaW4gcHRocmVhZF9jb25kX3dhaXQgKCkgZnJvbSAvaG9tZS9zaW1h cmsvYnVpbGQvYmludXRpbHMtZ2RiL2dkYi9yZXBvL2xpYi9saWJwdGhyZWFkLnNvLjANCj4gICAg W0N1cnJlbnQgdGhyZWFkIGlzIDEgKExXUCAyOTM2NyldDQo+ICAgIChnZGIpIGJ0DQo+ICAgIC9o b21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9hcm0tdGRlcC5jOjE1NTE6MzA6IHJ1bnRp bWUgZXJyb3I6IHNoaWZ0IGV4cG9uZW50IDMyIGlzIHRvbyBsYXJnZSBmb3IgMzItYml0IHR5cGUg J3Vuc2lnbmVkIGludCcNCj4gDQoNClRoaXMgZXJyb3IgaXMgYmVjYXVzZSB0aGUgY29kZSBpcyB0 ZWNobmljYWxseSB3cm9uZyAtIGJ1dCBpbiByZWFsaXR5DQpjb21waWxlcnMgd2lsbCBwbGFudCB3 aGF0IHdlIHJlYWxseSB3YW50ZWQ/DQoNCj4gVGhlIHNlcXVlbmNlIG9mIGluc3RydWN0aW9ucyBh dCBwdGhyZWFkX2NvbmRfd2FpdCwgaW4gdGhlDQo+IGxpYnB0aHJlYWQuc28uMCBsaWJyYXJ5LCBj b250YWlucyB0aGlzIGluc3RydWN0aW9uIHdpdGggYW4gaW1tZWRpYXRlDQo+IGNvbnN0YW50IHdp dGggYSAicm90YXRlIGFtb3VudCIgb2YgMDoNCj4gDQo+ICAgIGUyNGRkMDQ0ICAgICAgICBzdWIg ICAgIHNwLCBzcCwgIzY4ICAgICA7IDB4NDQNCj4gDQo+IFNpbmNlIGl0IHNoaWZ0cyBieSAiMzIg LSByb3RhdGUgYW1vdW50IiwgYXJtX2FuYWx5emVfcHJvbG9ndWUgZG9lcyBhIDMyDQo+IGJpdCBz aGlmdCBvZiBhIDMyIGJpdCB0eXBlLCB3aGljaCBpcyBjYXVnaHQgYnkgVUJTYW4uDQo+IA0KDQpN aW5vciBuaXQgLSBpdCB0b29rIG1lIGEgd2hpbGUgdG8gZmlndXJlIG91dCB0aGF0IHRoZSDigJxp dOKAnSBpbiDigJxTaW5jZSBpdOKAnQ0KaXMgdGhlIGZvbGxvd2luZyBhcm1fYW5hbHl6ZV9wcm9s b2d1ZSBhbmQgbm90IHNvbWV0aGluZyBpbiB0aGUgcHJldmlvdXMNCnNlbnRlbmNlLg0KDQo+IEZp eCBpdCBieSBmYWN0b3Jpbmcgb3V0IHRoZSBkZWNvZGluZyBvZiBpbW1lZGlhdGVzIGluIGEgbmV3 IGZ1bmN0aW9uLA0KPiBhcm1fZXhwYW5kX2ltbWVkaWF0ZS4NCj4gDQo+IEkgYWRkZWQgYSBzZWxm dGVzdCBmb3IgYXJtX2FuYWx5emVfcHJvbG9ndWUgdGhhdCByZXBsaWNhdGVzIHRoZQ0KPiBpbnN0 cnVjdGlvbiBzZXF1ZW5jZS4gIFdpdGhvdXQgdGhlIGZpeCwgaXQgY3Jhc2hlcyBHREIgaWYgaXQg aXMgYnVpbGQNCj4gd2l0aCAtLWVuYWJsZS11YnNhbi4NCj4gDQo+IEkgaW5pdGlhbGx5IHdhbnRl ZCB0byByZS11c2UgdGhlIGFic3RyYWN0X21lbW9yeV9yZWFkZXIgY2xhc3MgYWxyZWFkeSBpbg0K PiBhcm0tdGRlcC5jLCB1c2VkIHRvIG1ha2UgYXJtX3Byb2Nlc3NfcmVjb3JkIHRlc3RhYmxlLiAg SG93ZXZlciwNCj4gYXJtX3Byb2Nlc3NfcmVjb3JkIGFuZCBhcm1fYW5hbHl6ZV9wcm9sb2d1ZSBk b24ndCB1c2UgdGhlIHNhbWUga2luZCBvZg0KPiBtZW1vcnkgcmVhZGluZyBmdW5jdGlvbnMuICBh cm1fcHJvY2Vzc19yZWNvcmQgdXNlcyBhIGZ1bmN0aW9uIHRoYXQNCj4gcmV0dXJucyBhbiBlcnJv ciBzdGF0dXMgb24gZmFpbHVyZSB3aGlsZSBhcm1fYW5hbHl6ZV9wcm9sb2d1ZSB1c2VzIG9uZQ0K PiB0aGF0IHRocm93cyBhbiBleGNlcHRpb24uICBTaW5jZSBpIGRpZG4ndCB3YW50IHRvIGludHJv ZHVjZSBhbnkgb3RoZXINCj4gYmVoYXZpb3IgY2hhbmdlLCBJIGRlY2lkZWQgdG8ganVzdCBpbnRy b2R1Y2UgYSBzZXBhcmF0ZSBpbnRlcmZhY2UNCj4gKGFybV9pbnN0cnVjdGlvbl9yZWFkZXIpLiAg SXQgaXMgZGVyaXZlZCBmcm9tDQo+IGFic3RyYWN0X2luc3RydWN0aW9uX3JlYWRlciBpbiBhYXJj aDY0LXRkZXAuYy4NCg0KSSBib3RoIGRvbuKAmXQgbGlrZSB0aGlzIGFuZCBjYW7igJl0IHNlZSBh IGJldHRlciB3YXkgb2YgZG9pbmcgaXQgOikNClNvLCBJ4oCZbSBvayB3aXRoIGl0DQoNCj4gDQo+ IGdkYi9DaGFuZ2VMb2c6DQo+IA0KPiAJUFIgZ2RiLzI2ODM1DQo+IAkqIGFybS10ZGVwLmMgKGNs YXNzIGFybV9pbnN0cnVjdGlvbl9yZWFkZXIpOiBOZXcuDQo+IAkodGFyZ2V0X2FybV9pbnN0cnVj dGlvbl9yZWFkZXIpOiBOZXcuDQo+IAkoYXJtX2FuYWx5emVfcHJvbG9ndWUpOiBBZGQgaW5zdHJ1 Y3Rpb24gcmVhZGVyIHBhcmFtZXRlciBhbmQgdXNlDQo+IAlpdC4gIFVzZSBhcm1fZXhwYW5kX2lt bWVkaWF0ZS4NCj4gCShjbGFzcyB0YXJnZXRfYXJtX2luc3RydWN0aW9uX3JlYWRlcik6IEFkanVz dC4NCj4gCShhcm1fc2tpcF9wcm9sb2d1ZSk6IEFkanVzdC4NCj4gCShhcm1fZXhwYW5kX2ltbWVk aWF0ZSk6IE5ldy4NCj4gCShhcm1fc2Nhbl9wcm9sb2d1ZSk6IEFkanVzdC4NCj4gCShhcm1fYW5h bHl6ZV9wcm9sb2d1ZV90ZXN0KTogTmV3Lg0KPiAJKGNsYXNzIHRlc3RfYXJtX2luc3RydWN0aW9u X3JlYWRlcik6IE5ldy4NCj4gDQo+IENoYW5nZS1JZDogSWViMWMxNzk5YmQ2NmY4Yzc0MjEzODRm NDRmNWMyNzc3YjU3OGZmOGQNCj4gLS0tDQo+IGdkYi9hcm0tdGRlcC5jIHwgMTQ0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0NCj4gMSBmaWxlIGNoYW5n ZWQsIDEyMSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQg YS9nZGIvYXJtLXRkZXAuYyBiL2dkYi9hcm0tdGRlcC5jDQo+IGluZGV4IDgyZThlYzRkZjQ5Yy4u N2Y0NzY1NDIzM2RkIDEwMDY0NA0KPiAtLS0gYS9nZGIvYXJtLXRkZXAuYw0KPiArKysgYi9nZGIv YXJtLXRkZXAuYw0KPiBAQCAtMjg1LDEwICsyODUsMzQgQEAgc3RydWN0IGFybV9wcm9sb2d1ZV9j YWNoZQ0KPiAgIHN0cnVjdCB0cmFkX2ZyYW1lX3NhdmVkX3JlZyAqc2F2ZWRfcmVnczsNCj4gfTsN Cj4gDQo+IC1zdGF0aWMgQ09SRV9BRERSIGFybV9hbmFseXplX3Byb2xvZ3VlIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwNCj4gLQkJCQkgICAgICAgQ09SRV9BRERSIHByb2xvZ3VlX3N0YXJ0LA0K PiAtCQkJCSAgICAgICBDT1JFX0FERFIgcHJvbG9ndWVfZW5kLA0KPiAtCQkJCSAgICAgICBzdHJ1 Y3QgYXJtX3Byb2xvZ3VlX2NhY2hlICpjYWNoZSk7DQo+ICtuYW1lc3BhY2Ugew0KPiArDQo+ICsv KiBBYnN0cmFjdCBjbGFzcyB0byByZWFkIEFSTSBpbnN0cnVjdGlvbnMgZnJvbSBtZW1vcnkuICAq Lw0KPiArDQo+ICtjbGFzcyBhcm1faW5zdHJ1Y3Rpb25fcmVhZGVyDQo+ICt7DQo+ICtwdWJsaWM6 DQo+ICsgIC8qIFJlYWQgYSA0IGJ5dGVzIGluc3RydWN0aW9uIGJ5dGVzIGZyb20gbWVtb3J5IHVz aW5nIHRoZSBCWVRFX09SREVSDQo+ICsgICAgIGVuZGlhbm5lc3MuICAqLw0KPiArICB2aXJ0dWFs IHVpbnQzMl90IHJlYWQgKENPUkVfQUREUiBtZW1hZGRyLCBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIp IGNvbnN0ID0gMDsNCj4gK307DQo+ICsNCj4gKy8qIFJlYWQgaW5zdHJ1Y3Rpb25zIGZyb20gdGFy Z2V0IG1lbW9yeS4gICovDQo+ICsNCj4gK2NsYXNzIHRhcmdldF9hcm1faW5zdHJ1Y3Rpb25fcmVh ZGVyIDogcHVibGljIGFybV9pbnN0cnVjdGlvbl9yZWFkZXINCj4gK3sNCj4gK3B1YmxpYzoNCj4g KyAgdWludDMyX3QgcmVhZCAoQ09SRV9BRERSIG1lbWFkZHIsIGJmZF9lbmRpYW4gYnl0ZV9vcmRl cikgY29uc3Qgb3ZlcnJpZGUNCj4gKyAgew0KPiArICAgIHJldHVybiByZWFkX2NvZGVfdW5zaWdu ZWRfaW50ZWdlciAobWVtYWRkciwgNCwgYnl0ZV9vcmRlcik7DQo+ICsgIH0NCj4gK307DQo+ICsN Cj4gK30gLyogbmFtZXNwYWNlICovDQo+ICsNCj4gK3N0YXRpYyBDT1JFX0FERFIgYXJtX2FuYWx5 emVfcHJvbG9ndWUNCj4gKyAgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcHJv bG9ndWVfc3RhcnQsIENPUkVfQUREUiBwcm9sb2d1ZV9lbmQsDQo+ICsgICBzdHJ1Y3QgYXJtX3By b2xvZ3VlX2NhY2hlICpjYWNoZSwgY29uc3QgYXJtX2luc3RydWN0aW9uX3JlYWRlciAmaW5zbl9y ZWFkZXIpOw0KPiANCj4gLyogQXJjaGl0ZWN0dXJlIHZlcnNpb24gZm9yIGRpc3BsYWNlZCBzdGVw cGluZy4gIFRoaXMgZWZmZWN0cyB0aGUgYmVoYXZpb3VyIG9mDQo+ICAgIGNlcnRhaW4gaW5zdHJ1 Y3Rpb25zLCBhbmQgcmVhbGx5IHNob3VsZCBub3QgYmUgaGFyZC13aXJlZC4gICovDQo+IEBAIC0x MzgzLDggKzE0MDcsOSBAQCBhcm1fc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIENPUkVfQUREUiBwYykNCj4gCSAgICBhbmFseXplZF9saW1pdCA9IHRodW1iX2FuYWx5emVf cHJvbG9ndWUgKGdkYmFyY2gsIGZ1bmNfYWRkciwNCj4gCQkJCQkJICAgICBwb3N0X3Byb2xvZ3Vl X3BjLCBOVUxMKTsNCj4gCSAgZWxzZQ0KPiAtCSAgICBhbmFseXplZF9saW1pdCA9IGFybV9hbmFs eXplX3Byb2xvZ3VlIChnZGJhcmNoLCBmdW5jX2FkZHIsDQo+IC0JCQkJCQkgICBwb3N0X3Byb2xv Z3VlX3BjLCBOVUxMKTsNCj4gKwkgICAgYW5hbHl6ZWRfbGltaXQNCj4gKwkgICAgICA9IGFybV9h bmFseXplX3Byb2xvZ3VlIChnZGJhcmNoLCBmdW5jX2FkZHIsIHBvc3RfcHJvbG9ndWVfcGMsDQo+ ICsJCQkJICAgICAgTlVMTCwgdGFyZ2V0X2FybV9pbnN0cnVjdGlvbl9yZWFkZXIgKCkpOw0KPiAN Cj4gCSAgaWYgKGFuYWx5emVkX2xpbWl0ICE9IHBvc3RfcHJvbG9ndWVfcGMpDQo+IAkgICAgcmV0 dXJuIGZ1bmNfYWRkcjsNCj4gQEAgLTE0MDksNyArMTQzNCw4IEBAIGFybV9za2lwX3Byb2xvZ3Vl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQ0KPiAgIGlmIChhcm1fcGNf aXNfdGh1bWIgKGdkYmFyY2gsIHBjKSkNCj4gICAgIHJldHVybiB0aHVtYl9hbmFseXplX3Byb2xv Z3VlIChnZGJhcmNoLCBwYywgbGltaXRfcGMsIE5VTEwpOw0KPiAgIGVsc2UNCj4gLSAgICByZXR1 cm4gYXJtX2FuYWx5emVfcHJvbG9ndWUgKGdkYmFyY2gsIHBjLCBsaW1pdF9wYywgTlVMTCk7DQo+ ICsgICAgcmV0dXJuIGFybV9hbmFseXplX3Byb2xvZ3VlIChnZGJhcmNoLCBwYywgbGltaXRfcGMs IE5VTEwsDQo+ICsJCQkJIHRhcmdldF9hcm1faW5zdHJ1Y3Rpb25fcmVhZGVyICgpKTsNCj4gfQ0K PiANCj4gLyogKklOREVOVC1PRkYqICovDQo+IEBAIC0xNDg1LDYgKzE1MTEsMjYgQEAgYXJtX2lu c3RydWN0aW9uX3Jlc3RvcmVzX3NwICh1bnNpZ25lZCBpbnQgaW5zbikNCj4gICByZXR1cm4gMDsN Cj4gfQ0KPiANCj4gKy8qIEltcGxlbWVudCBpbW1lZGlhdGUgdmFsdWUgZGVjb2RpbmcsIGFzIGRl c2NyaWJlZCBpbiBzZWN0aW9uIEE1LjIuNA0KPiArICAgKE1vZGlmaWVkIGltbWVkaWF0ZSBjb25z dGFudHMgaW4gQVJNIGluc3RydWN0aW9ucykgb2YgdGhlIEFSTSBBcmNoaXRlY3R1cmUNCj4gKyAg IFJlZmVyZW5jZSBNYW51YWwuICAqLw0KDQoNCiJvZiB0aGUgQVJNIEFyY2hpdGVjdHVyZSBSZWZl cmVuY2UgTWFudWFsIChBUk12Ny1BIGFuZCBBUk12Ny1SIGVkaXRpb24pIg0KDQpKdXN0IHRvIG1h a2Ugc3VyZSBubyBvbmUgaXMgbG9va2luZyBmb3IgdGhhdCBzZWN0aW9uIGluIHRoZSB2OCBkb2Mu DQoNCj4gKw0KPiArc3RhdGljIHVpbnQzMl90DQo+ICthcm1fZXhwYW5kX2ltbWVkaWF0ZSAodWlu dDMyX3QgaW1tKQ0KPiArew0KPiArICAvKiBJbW1lZGlhdGUgdmFsdWVzIGFyZSAxMiBiaXRzIGxv bmcuICAqLw0KPiArICBnZGJfYXNzZXJ0ICgoaW1tICYgMHhmZmZmZjAwMCkgPT0gMCk7DQo+ICsN Cj4gKyAgdWludDMyX3QgdW5yb3RhdGVkX3ZhbHVlID0gaW1tICYgMHhmZjsNCj4gKyAgdWludDMy X3Qgcm90YXRlX2Ftb3VudCA9IChpbW0gJiAweGYwMCkgPj4gNzsNCj4gKw0KPiArICBpZiAocm90 YXRlX2Ftb3VudCA9PSAwKQ0KPiArICAgIHJldHVybiB1bnJvdGF0ZWRfdmFsdWU7DQo+ICsNCj4g KyAgcmV0dXJuICgodW5yb3RhdGVkX3ZhbHVlID4+IHJvdGF0ZV9hbW91bnQpDQo+ICsJICB8ICh1 bnJvdGF0ZWRfdmFsdWUgPDwgKDMyIC0gcm90YXRlX2Ftb3VudCkpKTsNCj4gK30NCj4gKw0KPiAv KiBBbmFseXplIGFuIEFSTSBtb2RlIHByb2xvZ3VlIHN0YXJ0aW5nIGF0IFBST0xPR1VFX1NUQVJU IGFuZA0KPiAgICBjb250aW51aW5nIG5vIGZ1cnRoZXIgdGhhbiBQUk9MT0dVRV9FTkQuICBJZiBD QUNIRSBpcyBub24tTlVMTCwNCj4gICAgZmlsbCBpdCBpbi4gIFJldHVybiB0aGUgZmlyc3QgYWRk cmVzcyBub3QgcmVjb2duaXplZCBhcyBhIHByb2xvZ3VlDQo+IEBAIC0xNDk4LDcgKzE1NDQsOCBA QCBhcm1faW5zdHJ1Y3Rpb25fcmVzdG9yZXNfc3AgKHVuc2lnbmVkIGludCBpbnNuKQ0KPiBzdGF0 aWMgQ09SRV9BRERSDQo+IGFybV9hbmFseXplX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwNCj4gCQkgICAgICBDT1JFX0FERFIgcHJvbG9ndWVfc3RhcnQsIENPUkVfQUREUiBwcm9s b2d1ZV9lbmQsDQo+IC0JCSAgICAgIHN0cnVjdCBhcm1fcHJvbG9ndWVfY2FjaGUgKmNhY2hlKQ0K PiArCQkgICAgICBzdHJ1Y3QgYXJtX3Byb2xvZ3VlX2NhY2hlICpjYWNoZSwNCj4gKwkJICAgICAg Y29uc3QgYXJtX2luc3RydWN0aW9uX3JlYWRlciAmaW5zbl9yZWFkZXIpDQo+IHsNCj4gICBlbnVt IGJmZF9lbmRpYW4gYnl0ZV9vcmRlcl9mb3JfY29kZSA9IGdkYmFyY2hfYnl0ZV9vcmRlcl9mb3Jf Y29kZSAoZ2RiYXJjaCk7DQo+ICAgaW50IHJlZ25vOw0KPiBAQCAtMTUyNCw4ICsxNTcxLDcgQEAg YXJtX2FuYWx5emVfcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiAgICAgICAg Y3VycmVudF9wYyA8IHByb2xvZ3VlX2VuZDsNCj4gICAgICAgIGN1cnJlbnRfcGMgKz0gNCkNCj4g ICAgIHsNCj4gLSAgICAgIHVuc2lnbmVkIGludCBpbnNuDQo+IC0JPSByZWFkX2NvZGVfdW5zaWdu ZWRfaW50ZWdlciAoY3VycmVudF9wYywgNCwgYnl0ZV9vcmRlcl9mb3JfY29kZSk7DQo+ICsgICAg ICB1aW50MzJfdCBpbnNuID0gaW5zbl9yZWFkZXIucmVhZCAoY3VycmVudF9wYywgYnl0ZV9vcmRl cl9mb3JfY29kZSk7DQo+IA0KPiAgICAgICBpZiAoaW5zbiA9PSAweGUxYTBjMDBkKQkJLyogbW92 IGlwLCBzcCAqLw0KPiAJew0KPiBAQCAtMTUzNSwyMCArMTU4MSwxNiBAQCBhcm1fYW5hbHl6ZV9w cm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICAgICAgIGVsc2UgaWYgKChpbnNu ICYgMHhmZmYwMDAwMCkgPT0gMHhlMjgwMDAwMAkvKiBhZGQgUmQsIFJuLCAjbiAqLw0KPiAJICAg ICAgICYmIHB2X2lzX3JlZ2lzdGVyIChyZWdzW2JpdHMgKGluc24sIDE2LCAxOSldLCBBUk1fU1Bf UkVHTlVNKSkNCj4gCXsNCj4gLQkgIHVuc2lnbmVkIGltbSA9IGluc24gJiAweGZmOyAgICAgICAg ICAgICAgICAgICAvKiBpbW1lZGlhdGUgdmFsdWUgKi8NCj4gLQkgIHVuc2lnbmVkIHJvdCA9IChp bnNuICYgMHhmMDApID4+IDc7ICAgICAgICAgICAvKiByb3RhdGUgYW1vdW50ICovDQo+ICsJICB1 aW50MzJfdCBpbW0gPSBhcm1fZXhwYW5kX2ltbWVkaWF0ZSAoaW5zbiAmIDB4ZmZmKTsNCj4gCSAg aW50IHJkID0gYml0cyAoaW5zbiwgMTIsIDE1KTsNCj4gLQkgIGltbSA9IChpbW0gPj4gcm90KSB8 IChpbW0gPDwgKDMyIC0gcm90KSk7DQo+IAkgIHJlZ3NbcmRdID0gcHZfYWRkX2NvbnN0YW50IChy ZWdzW2JpdHMgKGluc24sIDE2LCAxOSldLCBpbW0pOw0KPiAJICBjb250aW51ZTsNCj4gCX0NCj4g ICAgICAgZWxzZSBpZiAoKGluc24gJiAweGZmZjAwMDAwKSA9PSAweGUyNDAwMDAwCS8qIHN1YiBS ZCwgUm4sICNuICovDQo+IAkgICAgICAgJiYgcHZfaXNfcmVnaXN0ZXIgKHJlZ3NbYml0cyAoaW5z biwgMTYsIDE5KV0sIEFSTV9TUF9SRUdOVU0pKQ0KPiAJew0KPiAtCSAgdW5zaWduZWQgaW1tID0g aW5zbiAmIDB4ZmY7ICAgICAgICAgICAgICAgICAgIC8qIGltbWVkaWF0ZSB2YWx1ZSAqLw0KPiAt CSAgdW5zaWduZWQgcm90ID0gKGluc24gJiAweGYwMCkgPj4gNzsgICAgICAgICAgIC8qIHJvdGF0 ZSBhbW91bnQgKi8NCj4gKwkgIHVpbnQzMl90IGltbSA9IGFybV9leHBhbmRfaW1tZWRpYXRlIChp bnNuICYgMHhmZmYpOw0KPiAJICBpbnQgcmQgPSBiaXRzIChpbnNuLCAxMiwgMTUpOw0KPiAtCSAg aW1tID0gKGltbSA+PiByb3QpIHwgKGltbSA8PCAoMzIgLSByb3QpKTsNCj4gCSAgcmVnc1tyZF0g PSBwdl9hZGRfY29uc3RhbnQgKHJlZ3NbYml0cyAoaW5zbiwgMTYsIDE5KV0sIC1pbW0pOw0KPiAJ ICBjb250aW51ZTsNCj4gCX0NCj4gQEAgLTE2MDQsMTYgKzE2NDYsMTIgQEAgYXJtX2FuYWx5emVf cHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiAJfQ0KPiAgICAgICBlbHNlIGlm ICgoaW5zbiAmIDB4ZmZmZmYwMDApID09IDB4ZTI0Y2IwMDApCS8qIHN1YiBmcCwgaXAgI24gKi8N Cj4gCXsNCj4gLQkgIHVuc2lnbmVkIGltbSA9IGluc24gJiAweGZmOwkJCS8qIGltbWVkaWF0ZSB2 YWx1ZSAqLw0KPiAtCSAgdW5zaWduZWQgcm90ID0gKGluc24gJiAweGYwMCkgPj4gNzsJCS8qIHJv dGF0ZSBhbW91bnQgKi8NCj4gLQkgIGltbSA9IChpbW0gPj4gcm90KSB8IChpbW0gPDwgKDMyIC0g cm90KSk7DQo+ICsJICB1aW50MzJfdCBpbW0gPSBhcm1fZXhwYW5kX2ltbWVkaWF0ZSAoaW5zbiAm IDB4ZmZmKTsNCj4gCSAgcmVnc1tBUk1fRlBfUkVHTlVNXSA9IHB2X2FkZF9jb25zdGFudCAocmVn c1tBUk1fSVBfUkVHTlVNXSwgLWltbSk7DQo+IAl9DQo+ICAgICAgIGVsc2UgaWYgKChpbnNuICYg MHhmZmZmZjAwMCkgPT0gMHhlMjRkZDAwMCkJLyogc3ViIHNwLCBzcCAjbiAqLw0KPiAJew0KPiAt CSAgdW5zaWduZWQgaW1tID0gaW5zbiAmIDB4ZmY7CQkJLyogaW1tZWRpYXRlIHZhbHVlICovDQo+ IC0JICB1bnNpZ25lZCByb3QgPSAoaW5zbiAmIDB4ZjAwKSA+PiA3OwkJLyogcm90YXRlIGFtb3Vu dCAqLw0KPiAtCSAgaW1tID0gKGltbSA+PiByb3QpIHwgKGltbSA8PCAoMzIgLSByb3QpKTsNCj4g KwkgIHVpbnQzMl90IGltbSA9IGFybV9leHBhbmRfaW1tZWRpYXRlKGluc24gJiAweGZmZik7DQo+ IAkgIHJlZ3NbQVJNX1NQX1JFR05VTV0gPSBwdl9hZGRfY29uc3RhbnQgKHJlZ3NbQVJNX1NQX1JF R05VTV0sIC1pbW0pOw0KPiAJfQ0KPiAgICAgICBlbHNlIGlmICgoaW5zbiAmIDB4ZmZmZjdmZmYp ID09IDB4ZWQ2ZDAxMDMJLyogc3RmZSBmPywNCj4gQEAgLTE4NDEsNyArMTg3OSw4IEBAIGFybV9z Y2FuX3Byb2xvZ3VlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwNCj4gICBpZiAocHJl dl9wYyA8IHByb2xvZ3VlX2VuZCkNCj4gICAgIHByb2xvZ3VlX2VuZCA9IHByZXZfcGM7DQo+IA0K PiAtICBhcm1fYW5hbHl6ZV9wcm9sb2d1ZSAoZ2RiYXJjaCwgcHJvbG9ndWVfc3RhcnQsIHByb2xv Z3VlX2VuZCwgY2FjaGUpOw0KPiArICBhcm1fYW5hbHl6ZV9wcm9sb2d1ZSAoZ2RiYXJjaCwgcHJv bG9ndWVfc3RhcnQsIHByb2xvZ3VlX2VuZCwgY2FjaGUsDQo+ICsJCQl0YXJnZXRfYXJtX2luc3Ry dWN0aW9uX3JlYWRlciAoKSk7DQo+IH0NCj4gDQo+IHN0YXRpYyBzdHJ1Y3QgYXJtX3Byb2xvZ3Vl X2NhY2hlICoNCj4gQEAgLTk0OTIsNiArOTUzMSw3IEBAIGFybV9kdW1wX3RkZXAgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdWlfZmlsZSAqZmlsZSkNCj4gbmFtZXNwYWNlIHNlbGZ0 ZXN0cw0KPiB7DQo+IHN0YXRpYyB2b2lkIGFybV9yZWNvcmRfdGVzdCAodm9pZCk7DQo+ICtzdGF0 aWMgdm9pZCBhcm1fYW5hbHl6ZV9wcm9sb2d1ZV90ZXN0ICgpOw0KPiB9DQo+ICNlbmRpZg0KPiAN Cj4gQEAgLTk2MTgsNiArOTY1OCw3IEBAIHZmcCAtIFZGUCBjby1wcm9jZXNzb3IuIiksDQo+IA0K PiAjaWYgR0RCX1NFTEZfVEVTVA0KPiAgIHNlbGZ0ZXN0czo6cmVnaXN0ZXJfdGVzdCAoImFybS1y ZWNvcmQiLCBzZWxmdGVzdHM6OmFybV9yZWNvcmRfdGVzdCk7DQo+ICsgIHNlbGZ0ZXN0czo6cmVn aXN0ZXJfdGVzdCAoImFybV9hbmFseXplX3Byb2xvZ3VlIiwgc2VsZnRlc3RzOjphcm1fYW5hbHl6 ZV9wcm9sb2d1ZV90ZXN0KTsNCj4gI2VuZGlmDQoNCkdpdmVuIHRoZSBzaXplIG9mIHRoZSB0ZGVw IGZpbGVzLCBJIHdvbmRlciBpZiBpdOKAmXMgd29ydGggcHV0dGluZyB0aGUgdGVzdHMgaW50byBz ZXBhcmF0ZQ0KZmlsZXMsIGVnIGFybS10ZGVwLXNlbGZ0ZXN0cy5jDQooUHJvYmFibHkgbm90IGZv ciB0aGlzIHBhdGNoIHRob3VnaCkNCg0KDQo+IA0KPiB9DQo+IEBAIC0xMzI1NCw2ICsxMzI5NSw2 MyBAQCBhcm1fcmVjb3JkX3Rlc3QgKHZvaWQpDQo+ICAgICBTRUxGX0NIRUNLIChhcm1fcmVjb3Jk LmFybV9yZWdzWzBdID09IDcpOw0KPiAgIH0NCj4gfQ0KPiArDQo+ICsvKiBJbnN0cnVjdGlvbiBy ZWFkZXIgZnJvbSBtYW51YWxseSBjb29rZWQgaW5zdHJ1Y3Rpb24gc2VxdWVuY2VzLiAgKi8NCj4g Kw0KPiArY2xhc3MgdGVzdF9hcm1faW5zdHJ1Y3Rpb25fcmVhZGVyIDogcHVibGljIGFybV9pbnN0 cnVjdGlvbl9yZWFkZXINCj4gK3sNCj4gK3B1YmxpYzoNCj4gKyAgdGVtcGxhdGU8c2l6ZV90IFNJ WkU+DQo+ICsgIGV4cGxpY2l0IHRlc3RfYXJtX2luc3RydWN0aW9uX3JlYWRlciAoY29uc3QgdWlu dDMyX3QgKCZpbnNucylbU0laRV0pDQo+ICsgICAgOiBtX2luc25zIChpbnNucyksIG1faW5zbnNf c2l6ZSAoU0laRSkNCg0KV2h5IHRoZSBuZWVkIGZvciBhIHRlbXBsYXRlPw0KSXMgaXQganVzdCBz byB0aGF0IG1faW5zbnNfc2l6ZSBjYW4gYmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5Pw0KDQo+ ICsgIHt9DQo+ICsNCj4gKyAgdWludDMyX3QgcmVhZCAoQ09SRV9BRERSIG1lbWFkZHIsIGVudW0g YmZkX2VuZGlhbiBieXRlX29yZGVyKSBjb25zdCBvdmVycmlkZQ0KPiArICB7DQo+ICsgICAgU0VM Rl9DSEVDSyAobWVtYWRkciAlIDQgPT0gMCk7DQo+ICsgICAgU0VMRl9DSEVDSyAobWVtYWRkciAv IDQgPCBtX2luc25zX3NpemUpOw0KPiArDQo+ICsgICAgcmV0dXJuIG1faW5zbnNbbWVtYWRkciAv IDRdOw0KPiArICB9DQo+ICsNCj4gK3ByaXZhdGU6DQo+ICsgIGNvbnN0IHVpbnQzMl90ICptX2lu c25zOw0KPiArICBzaXplX3QgbV9pbnNuc19zaXplOw0KPiArfTsNCj4gKw0KPiArc3RhdGljIHZv aWQNCj4gK2FybV9hbmFseXplX3Byb2xvZ3VlX3Rlc3QgKCkNCj4gK3sNCj4gKyAgZm9yIChiZmRf ZW5kaWFuIGVuZGlhbm5lc3MgOiB7QkZEX0VORElBTl9MSVRUTEUsIEJGRF9FTkRJQU5fQklHfSkN Cj4gKyAgICB7DQo+ICsgICAgICBzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm87DQo+ICsgICAgICBn ZGJhcmNoX2luZm9faW5pdCAoJmluZm8pOw0KPiArICAgICAgaW5mby5ieXRlX29yZGVyID0gZW5k aWFubmVzczsNCj4gKyAgICAgIGluZm8uYnl0ZV9vcmRlcl9mb3JfY29kZSA9IGVuZGlhbm5lc3M7 DQo+ICsgICAgICBpbmZvLmJmZF9hcmNoX2luZm8gPSBiZmRfc2Nhbl9hcmNoICgiYXJtIik7DQo+ ICsNCj4gKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2RiYXJjaF9maW5kX2J5X2lu Zm8gKGluZm8pOw0KPiArDQo+ICsgICAgICBTRUxGX0NIRUNLIChnZGJhcmNoICE9IE5VTEwpOw0K PiArDQo+ICsgICAgICAvKiBUaGUgInN1YiIgaW5zdHJ1Y3Rpb24gY29udGFpbnMgYW4gaW1tZWRp YXRlIHZhbHVlIHJvdGF0ZSBjb3VudCBvZiAwLA0KPiArCSB3aGljaCByZXN1bHRlZCBpbiBhIDMy LWJpdCBzaGlmdCBvZiBhIDMyLWJpdCB2YWx1ZSwgY2F1Z2h0IGJ5DQo+ICsJIFVCU2FuLiAgKi8N Cj4gKyAgICAgIGNvbnN0IHVpbnQzMl90IGluc25zW10gPSB7DQo+ICsJICAweGU5MmQ0ZmYwLCAv KiBwdXNoICAgIHtyNCwgcjUsIHI2LCByNywgcjgsIHI5LCBzbCwgZnAsIGxyfSAqLw0KPiArCSAg MHhlMWEwNTAwMCwgLyogbW92ICAgICByNSwgcjAgKi8NCj4gKwkgIDB4ZTU5MDMwMjAsIC8qIGxk ciAgICAgcjMsIFtyMCwgIzMyXSAqLw0KPiArCSAgMHhlMjRkZDA0NCwgLyogc3ViICAgICBzcCwg c3AsICM2OCAgICAgOyAweDQ0ICovDQo+ICsgICAgICB9Ow0KPiArDQo+ICsgICAgICB0ZXN0X2Fy bV9pbnN0cnVjdGlvbl9yZWFkZXIgbWVtX3JlYWRlciAoaW5zbnMpOw0KPiArICAgICAgYXJtX3By b2xvZ3VlX2NhY2hlIGNhY2hlOw0KPiArICAgICAgY2FjaGUuc2F2ZWRfcmVncyA9IHRyYWRfZnJh bWVfYWxsb2Nfc2F2ZWRfcmVncyAoZ2RiYXJjaCk7DQo+ICsNCj4gKyAgICAgIGFybV9hbmFseXpl X3Byb2xvZ3VlIChnZGJhcmNoLCAwLCBzaXplb2YgKGluc25zKSAtIDEsICZjYWNoZSwgbWVtX3Jl YWRlcik7DQo+ICsgICAgfQ0KPiArfQ0KPiArDQo+IH0gLy8gbmFtZXNwYWNlIHNlbGZ0ZXN0cw0K PiAjZW5kaWYgLyogR0RCX1NFTEZfVEVTVCAqLw0KPiANCj4gLS0gDQo+IDIuMjYuMg0KPiANCg0K