From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx08-00271601.pphosted.com (mx08-00271601.pphosted.com [62.209.51.218]) by sourceware.org (Postfix) with ESMTPS id 792F13944437 for ; Tue, 20 Oct 2020 14:00:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 792F13944437 Received: from pps.filterd (m0107398.ppops.net [127.0.0.1]) by mx08-00271601.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 09KDtFkb015919; Tue, 20 Oct 2020 16:00:45 +0200 Received: from eur03-db5-obe.outbound.protection.outlook.com (mail-db5eur03lp2058.outbound.protection.outlook.com [104.47.10.58]) by mx08-00271601.pphosted.com with ESMTP id 347pkepa6r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 20 Oct 2020 16:00:45 +0200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dm/2O2C5mnIOTSf09wOhZu531AJRsCsrCCC+Tp15tChDR9THaqyxNwR//Zyd+zklM9lHqfP3rSrrgCqo4+u2PJ2wvfSOnU/8oP6welOPxPlQ9OZf21K9Jbl2S1boiZ28T72XYu68z8s91DybOMaEtcWSYQYY+pmYSQXeeEnq39JHvGGrw6KKWQ8Z1ehgzGdd+UAaq32rBmljz4Zs1DxKQQomDQt86SIrl7KU/5zFwgIrp8JTY1dnZl4VsEtd5+Xmrz3c0fO4zwDKGliod6+Cn+p4IWhJbKHzyizlHr8YgABmnZS33Rj/WoM2aWNc+WzUyBRj+6PycPZV9uuXrIYCGA== 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=LvBRPI1U7SNyJ6QdPnJyZNnLu6jKuXhM6AIk/zYdxmw=; b=TpFHuOe30Cz1gCRbHeetD+ByBGi3htucrg851IQGe8RMsftt+vlKIZHN/n0jB3Wv6qwyhjbm62Tgnuwqa8Kys5U2T9s8xOCJo+HxnAcHpxNNhBc6sPcs2QPfjvk+nxcQOchTrNTzqfKxyDJMUfMSiBy5s1yfVTl2Ff5tOZqrIQ4okAOvqDM4aat2HWmCNJNZ8FLkjUwfUwV7XaS0J9mvtjVO7j0IsZH8u0q+DMe1uWom5/+7sqz2lZPSHKyflC42FLK6oDidzlN/2pQv1E7yD/3N8cOZ4keTLqQuRzYNqmswTv5QUbyZvvHnneva6m3Gj7Q0oU/Q7G01/oHujALSTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=verisure.com; dmarc=pass action=none header.from=verisure.com; dkim=pass header.d=verisure.com; arc=none Received: from AM6PR10MB2150.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:4a::16) by AM5PR1001MB1172.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:203:12::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21; Tue, 20 Oct 2020 14:00:44 +0000 Received: from AM6PR10MB2150.EURPRD10.PROD.OUTLOOK.COM ([fe80::bcba:f0c0:8bd3:e7c]) by AM6PR10MB2150.EURPRD10.PROD.OUTLOOK.COM ([fe80::bcba:f0c0:8bd3:e7c%7]) with mapi id 15.20.3477.028; Tue, 20 Oct 2020 14:00:44 +0000 From: Fredrik Hederstierna To: Simon Marchi , Paul Mathieu CC: "gdb-patches@sourceware.org" , Luis Machado , Alan Hayward Subject: Re: [PATCH] gdb: add support for handling core dumps on arm-none-eabi Thread-Topic: [PATCH] gdb: add support for handling core dumps on arm-none-eabi Thread-Index: AQHWpBZY+9Zi3wcqSUekTcY7z7/HvameMTUAgADewoCAAVH60YAAEgcAgAAV7XI= Date: Tue, 20 Oct 2020 14:00:44 +0000 Message-ID: References: <688f8081-e972-2ca1-255a-14b63e9e173d@simark.ca> , In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [81.236.17.7] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7ccfbedf-f33b-4fe2-affb-08d8750089ab x-ms-traffictypediagnostic: AM5PR1001MB1172: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: S0eixTEsXs6CFHPbwRTUrqBn7ReLuurxz6jrA4lWF1wPE2UAfyWIridpJIb1seFYpPTMPOg8I7oJsXNcbE9fumgGB7lAMmWK8/1OW+ysE8RxgyIBms5QBvgwlR72XNMJqFp8wQcSc6YarNDXttW8AJBJU6UyVO0YTwX5hcwB2aDt+pY5fbHIsCh9oKUgXqnhzNQGs/zWZjbpjzbHrQT+NNSmP2SzDekj2Siy+TKlhlDegZGW+zvPe0u+y9EWGZeL4sS+ASxzMg2Mqin615Xpn2F+7X+j6cYpndb09aOdgRmDsq3fcbLuocUMN0JJjGBZEWUQbxYjfTMAKCedMFMLzoAaFFvEyLhHQUzu32x0wRKceDfwwoV2PsKpQU/bM31f5K6mlaB8k9tHCSV6GV5Eyw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR10MB2150.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(4636009)(136003)(346002)(376002)(366004)(39860400002)(396003)(8676002)(54906003)(4326008)(71200400001)(2906002)(45080400002)(44832011)(83380400001)(110136005)(478600001)(966005)(7696005)(9686003)(4001150100001)(52536014)(8936002)(64756008)(66476007)(66946007)(66616009)(76116006)(66446008)(86362001)(99936003)(66556008)(53546011)(316002)(6506007)(186003)(26005)(55016002)(33656002)(5660300002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: V+W5r+aHs3Kr4toFmKFHprzzR1MROH0b1YmSEu5hIzPeW0ikRmp87tN2Oe7S6tGFyVRB3K4PSQ6jYR+SIpM7WBTvLXOukdeBDYrsBOVqbjRHU7Q9DEoiYhDesOFGY3u7Y1PXA/+ztV4wieWmkYBU4ZgRuQkXT1WbIhNuiU0moC0lnV2DH5cMT56ZJRM0uYeQ0MvUD/5NMXYfH+a+bdVif/ErmD0ozSMbbxDk+AqQf7BLAXP82CFSeUrI4oYhtEn6UP3UIhqi2Pequl+WpfbUnKjAbO91FTrX1/hzGHNyDGUfwcTT91d5rVQz7yx5GW208ZAySbit7ESInGiRpDgVzTmH3h0iyB33Gy4oOdW74E72Jpd0g/7LpwchIvoXCBYiBbZefig8zC9pwNTlPhKP6LmbZHth5JR466274AqKusCYxsAZKNW12Je7aNWzJizDsCpCpF5lmi5yp2rck4ChoJefTv0UT5jBIe2lDfXLRLLiV8PgO4t+0i4sct78L/2DB7LsYDi2fdx6gFtisH+DZc49fygaDX56GJi2wHocFIXzahFBx1/m7//YUzogi1cIgiK+DrOuvxuqZ1AFs0s1dYSS4kOfRWNQtgL8yiWICrT/S6UqOPcifCqzvh7Pn+hwwIcoAfN+NUGL10iX0EA+9g== x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_AM6PR10MB2150ACB2E3637DBCD6EE2AA1EF1F0AM6PR10MB2150EURP_" MIME-Version: 1.0 X-OriginatorOrg: verisure.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR10MB2150.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 7ccfbedf-f33b-4fe2-affb-08d8750089ab X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Oct 2020 14:00:44.2385 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3055fa7f-a944-4927-801e-a62b63119e43 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0XfmMNttVWKEKgnaa5j5ix3uMq5T3zx5QwhOlmbGz5keGR6wCtDYTEXgXlTMgJmrzOWWh/yEMz36rL99R8yJZfDFu7LyXMq/GKu85fOYW1lfYeE/6cXz+CtPrDomb/Q7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR1001MB1172 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.737 definitions=2020-10-20_06:2020-10-20, 2020-10-20 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 mlxlogscore=999 clxscore=1015 mlxscore=0 priorityscore=1501 adultscore=0 bulkscore=0 malwarescore=0 suspectscore=0 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010200094 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , X-List-Received-Date: Tue, 20 Oct 2020 14:01:03 -0000 --_002_AM6PR10MB2150ACB2E3637DBCD6EE2AA1EF1F0AM6PR10MB2150EURP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable =0A= =0A= =0A= From: Simon Marchi =0A= Sent: Tuesday, October 20, 2020 2:39 PM=0A= To: Fredrik Hederstierna ; Paul Mathieu = =0A= Cc: gdb-patches@sourceware.org ; Luis Machado <= luis.machado@linaro.org>; Alan Hayward =0A= Subject: Re: [PATCH] gdb: add support for handling core dumps on arm-none-e= abi =0A= =A0=0A= =0A= On 2020-10-20 7:41 a.m., Fredrik Hederstierna wrote:=0A= > Hi all,=0A= >=0A= > I rebased and update my patch and it not run against GDB 10 / git-master,= available at=0A= >=0A= > https://urldefense.com/v3/__https://sourceware.org/bugzilla/show_bug.cgi?= id=3D14383__;!!BFCLnRDDbM3FOmw!sFHQSRGODtw_TucPLlwMNAMob6sJKx4DCgz3ryd9Vjcm= JNdXXPz78keCE4GRXIlJ9HDNheH5$ =0A= >=0A= > I debugged my remote arm-none bare-metal Cortex-M4 target app over openoc= d/JTAG,=0A= > and generate core-file:=0A= > (gdb) gcore bare_metal.core=0A= >=0A= > Then later off-line on my host PC, I successfully debugged it with regist= er, call-stack etc:=0A= > $ arm-none-eabi-gdb my_bare_metal_app.elf bare_metal.core=0A= >=0A= > So this patch 'works', but I'm not sure if this is the correct direction = to go,=0A= > but could be a start.=0A= > Besides this, next step could be to do this 'core-generator' tool that co= uld be used for embedded targets, running on host PC.=0A= >=0A= > Please check the patch out, it builds fine with GDB-10/master on my machi= ne.=0A= > Any comments are appreciated!=0A= >=0A= > Thanks, BR Fredrik=0A= =0A= =0A= > Can you please send it on this list using git-send-email?=A0 We don't do= =0A= > patch review on bugzilla (and it's not really practical).=0A= > =0A= > You can send it as a reply to your message (so it's threaded correctly)= =0A= > by mentioning the Message-Id of your message:=0A= > =0A= > =A0 git send-email --in-reply-to AM6PR10MB21504CBD56291D9C255739E1EF1F0@A= M6PR10MB2150.EURPRD10.PROD.OUTLOOK.COM =0A= > =0A= > Simon=0A= =0A= Sorry my crappy corporate Outlook SMTP doesnt support me sending through gi= t, and I had problems to using eg Google gmail,=0A= I try to attach the patch here and in the meantime try to solve this in a b= etter way, sorry for the inconvenience.=0A= =0A= Kindly, Fredrik=0A= --_002_AM6PR10MB2150ACB2E3637DBCD6EE2AA1EF1F0AM6PR10MB2150EURP_ Content-Type: text/x-patch; name="0001-corefiles-for-arm-none-eabi.patch" Content-Description: 0001-corefiles-for-arm-none-eabi.patch Content-Disposition: attachment; filename="0001-corefiles-for-arm-none-eabi.patch"; size=24757; creation-date="Tue, 20 Oct 2020 13:58:31 GMT"; modification-date="Tue, 20 Oct 2020 13:58:31 GMT" Content-Transfer-Encoding: base64 RnJvbSA0OGY3ZjcyYTRkNTBiNjk3NDgzY2I5Y2RlNTY0OTZmMDdjN2FlYzNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkcmlrIEhlZGVyc3RpZXJuYSA8ZnJlZHJpay5oZWRlcnN0 aWVybmFAdmVyaXN1cmUuY29tPgpEYXRlOiBUdWUsIDIwIE9jdCAyMDIwIDA5OjA2OjU1ICswMjAw ClN1YmplY3Q6IFtQQVRDSF0gZ2RiOiBTdXBwb3J0IGNvcmVmaWxlcyBmb3IgYXJtLW5vbmUtZWFi aQoKLS0tCiBnZGIvYXJtLW5vbmUtdGRlcC5jIHwgMzY4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBnZGIvYXJtLW5vbmUtdGRlcC5oIHwgIDYwICsrKysrKysr CiBnZGIvYXJtLXRkZXAuYyAgICAgIHwgICA4ICsKIGdkYi9jb25maWd1cmUudGd0ICAgfCAgIDYg Ky0KIGdkYi9ub25lLXRkZXAuYyAgICAgfCAyMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBnZGIvbm9uZS10ZGVwLmggICAgIHwgIDM5ICsrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDcxMSBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL2FybS1u b25lLXRkZXAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi9hcm0tbm9uZS10ZGVwLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvbm9uZS10ZGVwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvbm9u ZS10ZGVwLmgKCmRpZmYgLS1naXQgYS9nZGIvYXJtLW5vbmUtdGRlcC5jIGIvZ2RiL2FybS1ub25l LXRkZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45ZDgzYThiOTEz Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL2FybS1ub25lLXRkZXAuYwpAQCAtMCwwICsxLDM2OCBA QAorLyogbm9uZSBvbiBBUk0gdGFyZ2V0IHN1cHBvcnQuCisKKyAgIENvcHlyaWdodCAoQykgMjAy MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAiZGVm cy5oIgorI2luY2x1ZGUgInRhcmdldC5oIgorI2luY2x1ZGUgInZhbHVlLmgiCisjaW5jbHVkZSAi Z2RidHlwZXMuaCIKKyNpbmNsdWRlICJnZGJjb3JlLmgiCisjaW5jbHVkZSAiZnJhbWUuaCIKKyNp bmNsdWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyNpbmNsdWRlICJv c2FiaS5oIgorI2luY2x1ZGUgInJlZ3NldC5oIgorI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKKyNp bmNsdWRlICJ0cmFtcC1mcmFtZS5oIgorI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIKKyNpbmNsdWRl ICJhdXh2LmgiCisKKyNpbmNsdWRlICJhYXJjaDMyLXRkZXAuaCIKKyNpbmNsdWRlICJhcmNoL2Fy bS5oIgorI2luY2x1ZGUgImFybS10ZGVwLmgiCisjaW5jbHVkZSAiYXJtLW5vbmUtdGRlcC5oIgor I2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisjaW5jbHVk ZSAiaW5mZXJpb3IuaCIKKyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyNpbmNsdWRlICJzeW1maWxl LmgiCisKKyNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisjaW5jbHVkZSAic3RhcC1wcm9iZS5o IgorI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCisjaW5jbHVkZSAidXNlci1yZWdzLmgiCisjaW5j bHVkZSA8Y3R5cGUuaD4KKworI2luY2x1ZGUgImVsZi1iZmQuaCIKKyNpbmNsdWRlICJjb2ZmL2lu dGVybmFsLmgiCisjaW5jbHVkZSAiZWxmL2FybS5oIgorCisjaW5jbHVkZSAiZWxmL2NvbW1vbi5o IgorCisvKiAtLS0tIGJhc2VkIG9uIGFybS1saW51eC10ZGVwLmggLS0tLSAqLworCisjZGVmaW5l IEFSTV9OT05FX1NJWkVPRl9OV0ZQRSAoOCAqIEFSTV9GUF9SRUdJU1RFUl9TSVpFIFwKKwkJCQkr IDIgKiBBUk1fSU5UX1JFR0lTVEVSX1NJWkUgXAorCQkJCSsgOCArIEFSTV9JTlRfUkVHSVNURVJf U0laRSkKKworLyogVGhlIGluZGV4IHRvIGFjY2VzcyBDU1BSIGluIHVzZXJfcmVncyBkZWZpbmVk IGluIEdMSUJDLiAgKi8KKyNkZWZpbmUgQVJNX0NQU1JfR1JFR05VTSAxNgorCisvKiBTdXBwb3J0 IGZvciByZWdpc3RlciBmb3JtYXQgdXNlZCBieSB0aGUgTldGUEUgRlBBIGVtdWxhdG9yLiAgRWFj aAorICAgcmVnaXN0ZXIgdGFrZXMgdGhyZWUgd29yZHMsIHdoZXJlIGVpdGhlciB0aGUgZmlyc3Qg b25lLCB0d28sIG9yCisgICB0aHJlZSBob2xkIGEgc2luZ2xlLCBkb3VibGUsIG9yIGV4dGVuZGVk IHByZWNpc2lvbiB2YWx1ZSAoZGVwZW5kaW5nCisgICBvbiB0aGUgY29ycmVzcG9uZGluZyB0YWcp LiAgVGhlIHJlZ2lzdGVyIHNldCBpcyBlaWdodCByZWdpc3RlcnMsCisgICBmb2xsb3dlZCBieSB0 aGUgZnBzciBhbmQgZnBjciwgZm9sbG93ZWQgYnkgZWlnaHQgdGFnIGJ5dGVzLCBhbmQgYQorICAg ZmluYWwgd29yZCBmbGFnIHdoaWNoIGluZGljYXRlcyB3aGV0aGVyIE5XRlBFIGhhcyBiZWVuCisg ICBpbml0aWFsaXplZC4gICovCisKKyNkZWZpbmUgTldGUEVfRlBTUl9PRkZTRVQgKDggKiBBUk1f RlBfUkVHSVNURVJfU0laRSkKKyNkZWZpbmUgTldGUEVfRlBDUl9PRkZTRVQgKE5XRlBFX0ZQU1Jf T0ZGU0VUICsgQVJNX0lOVF9SRUdJU1RFUl9TSVpFKQorI2RlZmluZSBOV0ZQRV9UQUdTX09GRlNF VCAoTldGUEVfRlBDUl9PRkZTRVQgKyBBUk1fSU5UX1JFR0lTVEVSX1NJWkUpCisjZGVmaW5lIE5X RlBFX0lOSVRGTEFHX09GRlNFVCAoTldGUEVfVEFHU19PRkZTRVQgKyA4KQorCisvKiBSZXVzZSBB Uk0gR05VL0xpbnV4IEhXQ0FQIHZhbHVlcyBmb3Igbm9uZS4gIFRoZXNlIGFyZSBpbiBkZWZpbmVk IGluCisgICA8YXNtL2VsZi5oPiBpbiBjdXJyZW50IGtlcm5lbHMuICAqLworI2RlZmluZSBIV0NB UF9WRlAgICAgICAgNjQKKyNkZWZpbmUgSFdDQVBfSVdNTVhUICAgIDUxMgorI2RlZmluZSBIV0NB UF9ORU9OICAgICAgNDA5NgorI2RlZmluZSBIV0NBUF9WRlB2MyAgICAgODE5MgorI2RlZmluZSBI V0NBUF9WRlB2M0QxNiAgMTYzODQKKworLyogQ29yZSBmaWxlIGFuZCByZWdpc3RlciBzZXQgc3Vw cG9ydC4gICovCisKKyNkZWZpbmUgQVJNX05PTkVfU0laRU9GX0dSRUdTRVQgKDE4ICogQVJNX0lO VF9SRUdJU1RFUl9TSVpFKQorCisvKiAtLS0tIGJhc2VkIG9uIGFybS1saW51eC10ZGVwLmMgLS0t LSAqLworCit2b2lkCithcm1fbm9uZV9zdXBwbHlfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3Nl dCAqcmVnc2V0LAorCQkJICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCQkJICBpbnQgcmVn bnVtLCBjb25zdCB2b2lkICpncmVnc19idWYsIHNpemVfdCBsZW4pCit7CisgIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7CisgIGVudW0gYmZkX2VuZGlhbiBieXRl X29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKKyAgY29uc3QgZ2RiX2J5dGUg KmdyZWdzID0gKGNvbnN0IGdkYl9ieXRlICopIGdyZWdzX2J1ZjsKKyAgaW50IHJlZ25vOworICBD T1JFX0FERFIgcmVnX3BjOworICBnZGJfYnl0ZSBwY19idWZbQVJNX0lOVF9SRUdJU1RFUl9TSVpF XTsKKworICBmb3IgKHJlZ25vID0gQVJNX0ExX1JFR05VTTsgcmVnbm8gPCBBUk1fUENfUkVHTlVN OyByZWdubysrKQorICAgIGlmIChyZWdudW0gPT0gLTEgfHwgcmVnbnVtID09IHJlZ25vKQorICAg ICAgcmVnY2FjaGUtPnJhd19zdXBwbHkgKHJlZ25vLCBncmVncyArIEFSTV9JTlRfUkVHSVNURVJf U0laRSAqIHJlZ25vKTsKKworICBpZiAocmVnbnVtID09IEFSTV9QU19SRUdOVU0gfHwgcmVnbnVt ID09IC0xKQorICAgIHsKKyAgICAgIGlmIChhcm1fYXBjc18zMikKKwlyZWdjYWNoZS0+cmF3X3N1 cHBseSAoQVJNX1BTX1JFR05VTSwKKwkJCSAgICAgIGdyZWdzICsgQVJNX0lOVF9SRUdJU1RFUl9T SVpFICogQVJNX0NQU1JfR1JFR05VTSk7CisgICAgICBlbHNlCisJcmVnY2FjaGUtPnJhd19zdXBw bHkgKEFSTV9QU19SRUdOVU0sCisJCQkgICAgIGdyZWdzICsgQVJNX0lOVF9SRUdJU1RFUl9TSVpF ICogQVJNX1BDX1JFR05VTSk7CisgICAgfQorCisgIGlmIChyZWdudW0gPT0gQVJNX1BDX1JFR05V TSB8fCByZWdudW0gPT0gLTEpCisgICAgeworICAgICAgcmVnX3BjID0gZXh0cmFjdF91bnNpZ25l ZF9pbnRlZ2VyICgKKwkJIGdyZWdzICsgQVJNX0lOVF9SRUdJU1RFUl9TSVpFICogQVJNX1BDX1JF R05VTSwKKwkJIEFSTV9JTlRfUkVHSVNURVJfU0laRSwgYnl0ZV9vcmRlcik7CisgICAgICByZWdf cGMgPSBnZGJhcmNoX2FkZHJfYml0c19yZW1vdmUgKGdkYmFyY2gsIHJlZ19wYyk7CisgICAgICBz dG9yZV91bnNpZ25lZF9pbnRlZ2VyIChwY19idWYsIEFSTV9JTlRfUkVHSVNURVJfU0laRSwgYnl0 ZV9vcmRlciwKKwkJCSAgICAgIHJlZ19wYyk7CisgICAgICByZWdjYWNoZS0+cmF3X3N1cHBseSAo QVJNX1BDX1JFR05VTSwgcGNfYnVmKTsKKyAgICB9Cit9CisKK3ZvaWQKK2FybV9ub25lX2NvbGxl Y3RfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorCQkJICAgY29uc3Qgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKwkJCSAgIGludCByZWdudW0sIHZvaWQgKmdyZWdzX2J1 Ziwgc2l6ZV90IGxlbikKK3sKKyAgZ2RiX2J5dGUgKmdyZWdzID0gKGdkYl9ieXRlICopIGdyZWdz X2J1ZjsKKyAgaW50IHJlZ25vOworCisgIGZvciAocmVnbm8gPSBBUk1fQTFfUkVHTlVNOyByZWdu byA8IEFSTV9QQ19SRUdOVU07IHJlZ25vKyspCisgICAgaWYgKHJlZ251bSA9PSAtMSB8fCByZWdu dW0gPT0gcmVnbm8pCisgICAgICByZWdjYWNoZS0+cmF3X2NvbGxlY3QgKHJlZ25vLAorCQkJICAg IGdyZWdzICsgQVJNX0lOVF9SRUdJU1RFUl9TSVpFICogcmVnbm8pOworCisgIGlmIChyZWdudW0g PT0gQVJNX1BTX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisgICAgeworICAgICAgaWYgKGFybV9h cGNzXzMyKQorCXJlZ2NhY2hlLT5yYXdfY29sbGVjdCAoQVJNX1BTX1JFR05VTSwKKwkJCSAgICAg IGdyZWdzICsgQVJNX0lOVF9SRUdJU1RFUl9TSVpFICogQVJNX0NQU1JfR1JFR05VTSk7CisgICAg ICBlbHNlCisJcmVnY2FjaGUtPnJhd19jb2xsZWN0IChBUk1fUFNfUkVHTlVNLAorCQkJICAgICAg Z3JlZ3MgKyBBUk1fSU5UX1JFR0lTVEVSX1NJWkUgKiBBUk1fUENfUkVHTlVNKTsKKyAgICB9CisK KyAgaWYgKHJlZ251bSA9PSBBUk1fUENfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKyAgICByZWdj YWNoZS0+cmF3X2NvbGxlY3QgKEFSTV9QQ19SRUdOVU0sCisJCQkgICBncmVncyArIEFSTV9JTlRf UkVHSVNURVJfU0laRSAqIEFSTV9QQ19SRUdOVU0pOworfQorCisvKiBTdXBwb3J0IGZvciByZWdp c3RlciBmb3JtYXQgdXNlZCBieSB0aGUgTldGUEUgRlBBIGVtdWxhdG9yLiAgKi8KKworI2RlZmlu ZSB0eXBlTm9uZQkJMHgwMAorI2RlZmluZSB0eXBlU2luZ2xlCQkweDAxCisjZGVmaW5lIHR5cGVE b3VibGUJCTB4MDIKKyNkZWZpbmUgdHlwZUV4dGVuZGVkCQkweDAzCisKK3ZvaWQKK2FybV9ub25l X3N1cHBseV9ud2ZwZV9yZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJl Z25vLAorCQkJCWNvbnN0IGdkYl9ieXRlICpyZWdzKQoreworICBjb25zdCBnZGJfYnl0ZSAqcmVn X2RhdGE7CisgIGdkYl9ieXRlIHJlZ190YWc7CisgIGdkYl9ieXRlIGJ1ZltBUk1fRlBfUkVHSVNU RVJfU0laRV07CisKKyAgcmVnX2RhdGEgPSByZWdzICsgKHJlZ25vIC0gQVJNX0YwX1JFR05VTSkg KiBBUk1fRlBfUkVHSVNURVJfU0laRTsKKyAgcmVnX3RhZyA9IHJlZ3NbKHJlZ25vIC0gQVJNX0Yw X1JFR05VTSkgKyBOV0ZQRV9UQUdTX09GRlNFVF07CisgIG1lbXNldCAoYnVmLCAwLCBBUk1fRlBf UkVHSVNURVJfU0laRSk7CisKKyAgc3dpdGNoIChyZWdfdGFnKQorICAgIHsKKyAgICBjYXNlIHR5 cGVTaW5nbGU6CisgICAgICBtZW1jcHkgKGJ1ZiwgcmVnX2RhdGEsIDQpOworICAgICAgYnJlYWs7 CisgICAgY2FzZSB0eXBlRG91YmxlOgorICAgICAgbWVtY3B5IChidWYsIHJlZ19kYXRhICsgNCwg NCk7CisgICAgICBtZW1jcHkgKGJ1ZiArIDQsIHJlZ19kYXRhLCA0KTsKKyAgICAgIGJyZWFrOwor ICAgIGNhc2UgdHlwZUV4dGVuZGVkOgorICAgICAgLyogV2Ugd2FudCBzaWduIGFuZCBleHBvbmVu dCwgdGhlbiBsZWFzdCBzaWduaWZpY2FudCBiaXRzLAorCSB0aGVuIG1vc3Qgc2lnbmlmaWNhbnQu ICBOV0ZQRSBkb2VzIHNpZ24sIG1vc3QsIGxlYXN0LiAgKi8KKyAgICAgIG1lbWNweSAoYnVmLCBy ZWdfZGF0YSwgNCk7CisgICAgICBtZW1jcHkgKGJ1ZiArIDQsIHJlZ19kYXRhICsgOCwgNCk7Cisg ICAgICBtZW1jcHkgKGJ1ZiArIDgsIHJlZ19kYXRhICsgNCwgNCk7CisgICAgICBicmVhazsKKyAg ICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgICAgfQorCisgIHJlZ2NhY2hlLT5yYXdfc3VwcGx5 IChyZWdubywgYnVmKTsKK30KKwordm9pZAorYXJtX25vbmVfY29sbGVjdF9ud2ZwZV9yZWdpc3Rl ciAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAorCQkJCSBnZGJf Ynl0ZSAqcmVncykKK3sKKyAgZ2RiX2J5dGUgKnJlZ19kYXRhOworICBnZGJfYnl0ZSByZWdfdGFn OworICBnZGJfYnl0ZSBidWZbQVJNX0ZQX1JFR0lTVEVSX1NJWkVdOworCisgIHJlZ2NhY2hlLT5y YXdfY29sbGVjdCAocmVnbm8sIGJ1Zik7CisKKyAgLyogTk9URSBkcm93LzIwMDYtMDYtMDc6IFRo aXMgY29kZSB1c2VzIHRoZSB0YWcgYWxyZWFkeSBpbiB0aGUKKyAgICAgcmVnaXN0ZXIgYnVmZmVy LiAgSSd2ZSBwcmVzZXJ2ZWQgdGhhdCB3aGVuIG1vdmluZyB0aGUgY29kZQorICAgICBmcm9tIHRo ZSBuYXRpdmUgZmlsZSB0byB0aGUgdGFyZ2V0IGZpbGUuICBCdXQgdGhpcyBkb2Vzbid0CisgICAg IGFsd2F5cyBtYWtlIHNlbnNlLiAgKi8KKworICByZWdfZGF0YSA9IHJlZ3MgKyAocmVnbm8gLSBB Uk1fRjBfUkVHTlVNKSAqIEFSTV9GUF9SRUdJU1RFUl9TSVpFOworICByZWdfdGFnID0gcmVnc1so cmVnbm8gLSBBUk1fRjBfUkVHTlVNKSArIE5XRlBFX1RBR1NfT0ZGU0VUXTsKKworICBzd2l0Y2gg KHJlZ190YWcpCisgICAgeworICAgIGNhc2UgdHlwZVNpbmdsZToKKyAgICAgIG1lbWNweSAocmVn X2RhdGEsIGJ1ZiwgNCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIHR5cGVEb3VibGU6CisgICAg ICBtZW1jcHkgKHJlZ19kYXRhLCBidWYgKyA0LCA0KTsKKyAgICAgIG1lbWNweSAocmVnX2RhdGEg KyA0LCBidWYsIDQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSB0eXBlRXh0ZW5kZWQ6CisgICAg ICBtZW1jcHkgKHJlZ19kYXRhLCBidWYsIDQpOworICAgICAgbWVtY3B5IChyZWdfZGF0YSArIDQs IGJ1ZiArIDgsIDQpOworICAgICAgbWVtY3B5IChyZWdfZGF0YSArIDgsIGJ1ZiArIDQsIDQpOwor ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9p ZAorYXJtX25vbmVfc3VwcGx5X253ZnBlIChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisJ CQlzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCQkJaW50IHJlZ251bSwgY29uc3Qgdm9pZCAq cmVnc19idWYsIHNpemVfdCBsZW4pCit7CisgIGNvbnN0IGdkYl9ieXRlICpyZWdzID0gKGNvbnN0 IGdkYl9ieXRlICopIHJlZ3NfYnVmOworICBpbnQgcmVnbm87CisKKyAgaWYgKHJlZ251bSA9PSBB Uk1fRlBTX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisgICAgcmVnY2FjaGUtPnJhd19zdXBwbHkg KEFSTV9GUFNfUkVHTlVNLAorCQkJIHJlZ3MgKyBOV0ZQRV9GUFNSX09GRlNFVCk7CisKKyAgZm9y IChyZWdubyA9IEFSTV9GMF9SRUdOVU07IHJlZ25vIDw9IEFSTV9GN19SRUdOVU07IHJlZ25vKysp CisgICAgaWYgKHJlZ251bSA9PSAtMSB8fCByZWdudW0gPT0gcmVnbm8pCisgICAgICBhcm1fbm9u ZV9zdXBwbHlfbndmcGVfcmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgcmVncyk7Cit9CisKK3Zv aWQKK2FybV9ub25lX2NvbGxlY3RfbndmcGUgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwK KwkJCSBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCQkJIGludCByZWdudW0sIHZv aWQgKnJlZ3NfYnVmLCBzaXplX3QgbGVuKQoreworICBnZGJfYnl0ZSAqcmVncyA9IChnZGJfYnl0 ZSAqKSByZWdzX2J1ZjsKKyAgaW50IHJlZ25vOworCisgIGZvciAocmVnbm8gPSBBUk1fRjBfUkVH TlVNOyByZWdubyA8PSBBUk1fRjdfUkVHTlVNOyByZWdubysrKQorICAgIGlmIChyZWdudW0gPT0g LTEgfHwgcmVnbnVtID09IHJlZ25vKQorICAgICAgYXJtX25vbmVfY29sbGVjdF9ud2ZwZV9yZWdp c3RlciAocmVnY2FjaGUsIHJlZ25vLCByZWdzKTsKKworICBpZiAocmVnbnVtID09IEFSTV9GUFNf UkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKyAgICByZWdjYWNoZS0+cmF3X2NvbGxlY3QgKEFSTV9G UFNfUkVHTlVNLAorCQkJICAgcmVncyArIEFSTV9JTlRfUkVHSVNURVJfU0laRSAqIEFSTV9GUFNf UkVHTlVNKTsKK30KKworLyogU3VwcG9ydCBWRlAgcmVnaXN0ZXIgZm9ybWF0LiAgKi8KKworI2Rl ZmluZSBBUk1fTk9ORV9TSVpFT0ZfVkZQICgzMiAqIDggKyA0KQorCitzdGF0aWMgdm9pZAorYXJt X25vbmVfc3VwcGx5X3ZmcCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorCQkgICAgICBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCQkgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lk ICpyZWdzX2J1Ziwgc2l6ZV90IGxlbikKK3sKKyAgY29uc3QgZ2RiX2J5dGUgKnJlZ3MgPSAoY29u c3QgZ2RiX2J5dGUgKikgcmVnc19idWY7CisgIGludCByZWdubzsKKworICBpZiAocmVnbnVtID09 IEFSTV9GUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorICAgIHJlZ2NhY2hlLT5yYXdfc3Vw cGx5IChBUk1fRlBTQ1JfUkVHTlVNLCByZWdzICsgMzIgKiA4KTsKKworICBmb3IgKHJlZ25vID0g QVJNX0QwX1JFR05VTTsgcmVnbm8gPD0gQVJNX0QzMV9SRUdOVU07IHJlZ25vKyspCisgICAgaWYg KHJlZ251bSA9PSAtMSB8fCByZWdudW0gPT0gcmVnbm8pCisgICAgICByZWdjYWNoZS0+cmF3X3N1 cHBseSAocmVnbm8sIHJlZ3MgKyAocmVnbm8gLSBBUk1fRDBfUkVHTlVNKSAqIDgpOworfQorCitz dGF0aWMgdm9pZAorYXJtX25vbmVfY29sbGVjdF92ZnAgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJl Z3NldCwKKwkJCSBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCQkJIGludCByZWdu dW0sIHZvaWQgKnJlZ3NfYnVmLCBzaXplX3QgbGVuKQoreworICBnZGJfYnl0ZSAqcmVncyA9IChn ZGJfYnl0ZSAqKSByZWdzX2J1ZjsKKyAgaW50IHJlZ25vOworCisgIGlmIChyZWdudW0gPT0gQVJN X0ZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisgICAgcmVnY2FjaGUtPnJhd19jb2xsZWN0 IChBUk1fRlBTQ1JfUkVHTlVNLCByZWdzICsgMzIgKiA4KTsKKworICBmb3IgKHJlZ25vID0gQVJN X0QwX1JFR05VTTsgcmVnbm8gPD0gQVJNX0QzMV9SRUdOVU07IHJlZ25vKyspCisgICAgaWYgKHJl Z251bSA9PSAtMSB8fCByZWdudW0gPT0gcmVnbm8pCisgICAgICByZWdjYWNoZS0+cmF3X2NvbGxl Y3QgKHJlZ25vLCByZWdzICsgKHJlZ25vIC0gQVJNX0QwX1JFR05VTSkgKiA4KTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCByZWdzZXQgYXJtX25vbmVfZ3JlZ3NldCA9CisgIHsKKyAgICBOVUxM LCBhcm1fbm9uZV9zdXBwbHlfZ3JlZ3NldCwgYXJtX25vbmVfY29sbGVjdF9ncmVnc2V0CisgIH07 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnc2V0IGFybV9ub25lX2ZwcmVnc2V0ID0KKyAgewor ICAgIE5VTEwsIGFybV9ub25lX3N1cHBseV9ud2ZwZSwgYXJtX25vbmVfY29sbGVjdF9ud2ZwZQor ICB9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ3NldCBhcm1fbm9uZV92ZnByZWdzZXQgPQor ICB7CisgICAgTlVMTCwgYXJtX25vbmVfc3VwcGx5X3ZmcCwgYXJtX25vbmVfY29sbGVjdF92ZnAK KyAgfTsKKworLyogSXRlcmF0ZSBvdmVyIGNvcmUgZmlsZSByZWdpc3RlciBub3RlIHNlY3Rpb25z LiAgKi8KKwordm9pZAorYXJtX25vbmVfaXRlcmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9ucyAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCisJCQkJCWl0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnNf Y2IgKmNiLAorCQkJCQl2b2lkICpjYl9kYXRhLAorCQkJCQljb25zdCBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlKQoreworICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVw IChnZGJhcmNoKTsKKworICBjYiAoIi5yZWciLCBBUk1fTk9ORV9TSVpFT0ZfR1JFR1NFVCwgQVJN X05PTkVfU0laRU9GX0dSRUdTRVQsCisJJmFybV9ub25lX2dyZWdzZXQsIE5VTEwsIGNiX2RhdGEp OworCisgIGlmICh0ZGVwLT52ZnBfcmVnaXN0ZXJfY291bnQgPiAwKQorICAgIGNiICgiLnJlZy1h cm0tdmZwIiwgQVJNX05PTkVfU0laRU9GX1ZGUCwgQVJNX05PTkVfU0laRU9GX1ZGUCwKKwkmYXJt X25vbmVfdmZwcmVnc2V0LCAiVkZQIGZsb2F0aW5nLXBvaW50IiwgY2JfZGF0YSk7CisgIGVsc2Ug aWYgKHRkZXAtPmhhdmVfZnBhX3JlZ2lzdGVycykKKyAgICBjYiAoIi5yZWcyIiwgQVJNX05PTkVf U0laRU9GX05XRlBFLCBBUk1fTk9ORV9TSVpFT0ZfTldGUEUsCisJJmFybV9ub25lX2ZwcmVnc2V0 LCAiRlBBIGZsb2F0aW5nLXBvaW50IiwgY2JfZGF0YSk7Cit9CisKKy8qIERldGVybWluZSB0YXJn ZXQgZGVzY3JpcHRpb24gZnJvbSBjb3JlIGZpbGUuICAqLworCitjb25zdCBzdHJ1Y3QgdGFyZ2V0 X2Rlc2MgKgorYXJtX25vbmVfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKKwkJCQlzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LAorCQkJCWJmZCAqYWJmZCkK K3sKKyAgQ09SRV9BRERSIGFybV9od2NhcCA9IDA7CisgIGlmICh0YXJnZXRfYXV4dl9zZWFyY2gg KHRhcmdldCwgQVRfSFdDQVAsICZhcm1faHdjYXApICE9IDEpCisgICAgcmV0dXJuIG51bGxwdHI7 CisKKyAgaWYgKGFybV9od2NhcCAmIEhXQ0FQX1ZGUCkKKyAgICB7CisgICAgICAvKiBORU9OIGlt cGxpZXMgVkZQdjMtRDMyIG9yIG5vLVZGUCB1bml0LiAgU2F5IHRoYXQgd2Ugb25seSBzdXBwb3J0 CisgICAgICAgICBOZW9uIHdpdGggVkZQdjMtRDMyLiAgKi8KKyAgICAgIGlmIChhcm1faHdjYXAg JiBIV0NBUF9ORU9OKQorCXJldHVybiBhYXJjaDMyX3JlYWRfZGVzY3JpcHRpb24gKCk7CisgICAg ICBlbHNlIGlmICgoYXJtX2h3Y2FwICYgKEhXQ0FQX1ZGUHYzIHwgSFdDQVBfVkZQdjNEMTYpKSA9 PSBIV0NBUF9WRlB2MykKKwlyZXR1cm4gYXJtX3JlYWRfZGVzY3JpcHRpb24gKEFSTV9GUF9UWVBF X1ZGUFYzKTsKKworICAgICAgcmV0dXJuIGFybV9yZWFkX2Rlc2NyaXB0aW9uIChBUk1fRlBfVFlQ RV9WRlBWMik7CisgICAgfQorCisgIHJldHVybiBudWxscHRyOworfQpkaWZmIC0tZ2l0IGEvZ2Ri L2FybS1ub25lLXRkZXAuaCBiL2dkYi9hcm0tbm9uZS10ZGVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uNzkyN2MwYWZmMwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9h cm0tbm9uZS10ZGVwLmgKQEAgLTAsMCArMSw2MCBAQAorLyogbm9uZSBvbiBBUk0gdGFyZ2V0IHN1 cHBvcnQsIHByb3RvdHlwZXMuCisKKyAgIENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorCisgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWZuZGVmIEFSTV9OT05FX1RERVBfSAorI2Rl ZmluZSBBUk1fTk9ORV9UREVQX0gKKworI2luY2x1ZGUgImdkYmFyY2guaCIKKyNpbmNsdWRlICJ0 YXJnZXQuaCIKKyNpbmNsdWRlICJiZmQuaCIKKworc3RydWN0IHJlZ3NldDsKK3N0cnVjdCByZWdj YWNoZTsKKwordm9pZCBhcm1fbm9uZV9zdXBwbHlfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3Nl dCAqcmVnc2V0LAorCQkJICAgICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisJCQkgICAg ICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZ3JlZ3NfYnVmLCBzaXplX3QgbGVuKTsKK3ZvaWQg YXJtX25vbmVfY29sbGVjdF9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisJ CQkJY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKwkJCQlpbnQgcmVnbnVtLCB2b2lk ICpncmVnc19idWYsIHNpemVfdCBsZW4pOworCit2b2lkIGFybV9ub25lX3N1cHBseV9ud2ZwZV9y ZWdpc3RlciAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vLAorCQkJCSAgICAg Y29uc3QgZ2RiX2J5dGUgKnJlZ3MpOwordm9pZCBhcm1fbm9uZV9jb2xsZWN0X253ZnBlX3JlZ2lz dGVyIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8sCisJCQkJICAg ICAgZ2RiX2J5dGUgKnJlZ3MpOworCit2b2lkIGFybV9ub25lX3N1cHBseV9ud2ZwZSAoY29uc3Qg c3RydWN0IHJlZ3NldCAqcmVnc2V0LAorCQkJICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LAorCQkJICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICpyZWdzX2J1Ziwgc2l6ZV90IGxlbik7 Cit2b2lkIGFybV9ub25lX2NvbGxlY3RfbndmcGUgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3Nl dCwKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisJCQkgICAgICBp bnQgcmVnbnVtLCB2b2lkICpyZWdzX2J1Ziwgc2l6ZV90IGxlbik7CisKK3ZvaWQKK2FybV9ub25l X2l0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0ZV9vdmVyX3JlZ3Nl dF9zZWN0aW9uc19jYiAqY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpjYl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSk7CisKK2NvbnN0IHN0cnVjdCB0YXJnZXRf ZGVzYyAqCithcm1fbm9uZV9jb3JlX3JlYWRfZGVzY3JpcHRpb24gKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAorCQkJCXN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCisJCQkJYmZkICphYmZkKTsK KworI2VuZGlmIC8qIEFSTV9OT05FX1RERVBfSCAqLwpkaWZmIC0tZ2l0IGEvZ2RiL2FybS10ZGVw LmMgYi9nZGIvYXJtLXRkZXAuYwppbmRleCBhMjE0ZjIyZDdhLi5iZTQ3Y2MyMjI4IDEwMDY0NAot LS0gYS9nZGIvYXJtLXRkZXAuYworKysgYi9nZGIvYXJtLXRkZXAuYwpAQCAtNTAsNiArNTAsOCBA QAogI2luY2x1ZGUgImFyY2gvYXJtLmgiCiAjaW5jbHVkZSAiYXJjaC9hcm0tZ2V0LW5leHQtcGNz LmgiCiAjaW5jbHVkZSAiYXJtLXRkZXAuaCIKKyNpbmNsdWRlICJub25lLXRkZXAuaCIKKyNpbmNs dWRlICJhcm0tbm9uZS10ZGVwLmgiCiAjaW5jbHVkZSAiZ2RiL3NpbS1hcm0uaCIKIAogI2luY2x1 ZGUgImVsZi1iZmQuaCIKQEAgLTk0NTMsNiArOTQ1NSwxMiBAQCBhcm1fZ2RiYXJjaF9pbml0IChz dHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKICAg LyogVmlydHVhbCB0YWJsZXMuICAqLwogICBzZXRfZ2RiYXJjaF92Yml0X2luX2RlbHRhIChnZGJh cmNoLCAxKTsKIAorICAvKiBEZWZhdWx0IG5vbmUgY29yZSBmaWxlIHN1cHBvcnQsIGNhbiBiZSBv dmVycmlkZGVuIGJ5IG9zYWJpLiAqLworICBub25lX2luaXRfY29yZWZpbGUgKGluZm8sIGdkYmFy Y2gpOworICBzZXRfZ2RiYXJjaF9pdGVyYXRlX292ZXJfcmVnc2V0X3NlY3Rpb25zIChnZGJhcmNo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1fbm9uZV9p dGVyYXRlX292ZXJfcmVnc2V0X3NlY3Rpb25zKTsKKyAgc2V0X2dkYmFyY2hfY29yZV9yZWFkX2Rl c2NyaXB0aW9uIChnZGJhcmNoLCBhcm1fbm9uZV9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOworCiAg IC8qIEhvb2sgaW4gdGhlIEFCSS1zcGVjaWZpYyBvdmVycmlkZXMsIGlmIHRoZXkgaGF2ZSBiZWVu IHJlZ2lzdGVyZWQuICAqLwogICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdkYmFyY2gpOwog CmRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLnRndCBiL2dkYi9jb25maWd1cmUudGd0CmluZGV4 IGQ4NjVlY2RjYjYuLmY0YTE1NDA0NjQgMTAwNjQ0Ci0tLSBhL2dkYi9jb25maWd1cmUudGd0Cisr KyBiL2dkYi9jb25maWd1cmUudGd0CkBAIC02NCw3ICs2NCw4IEBAIGFyYyotKi0qKQogCiBhcm0q LSotKikKIAljcHVfb2JzPSJhYXJjaDMyLXRkZXAubyBhcmNoL2FhcmNoMzIubyBhcmNoL2FybS5v IFwKLQkJIGFyY2gvYXJtLWdldC1uZXh0LXBjcy5vIGFybS10ZGVwLm8iOzsKKwkJIGFyY2gvYXJt LWdldC1uZXh0LXBjcy5vIGFybS10ZGVwLm8gXAorCQkgbm9uZS10ZGVwLm8gYXJtLW5vbmUtdGRl cC5vIjs7CiAKIGhwcGEqLSotKikKIAkjIFRhcmdldDogSFAgUEEtUklTQwpAQCAtNzk4LDQgKzc5 OSw3IEBAIGZvciB0IGluIHggJHtnZGJfdGFyZ2V0X29ic307IGRvCiAgIGlmIHRlc3QgIiR0IiA9 IGxpbnV4LXRkZXAubzsgdGhlbgogICAgIGdkYl9oYXZlX2djb3JlPXRydWUKICAgZmkKKyAgaWYg dGVzdCAiJHQiID0gYXJtLW5vbmUtdGRlcC5vOyB0aGVuCisgICAgZ2RiX2hhdmVfZ2NvcmU9dHJ1 ZQorICBmaQogZG9uZQpkaWZmIC0tZ2l0IGEvZ2RiL25vbmUtdGRlcC5jIGIvZ2RiL25vbmUtdGRl cC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhjZDEzOWM1MDAKLS0t IC9kZXYvbnVsbAorKysgYi9nZGIvbm9uZS10ZGVwLmMKQEAgLTAsMCArMSwyMzEgQEAKKy8qIFRh cmdldC1kZXBlbmRlbnQgY29kZSBmb3Igbm9uZSwgYXJjaGl0ZWN0dXJlIGluZGVwZW5kZW50Lgor CisgICBDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJnZGJ0eXBlcy5oIgorI2luY2x1 ZGUgIm5vbmUtdGRlcC5oIgorI2luY2x1ZGUgImF1eHYuaCIKKyNpbmNsdWRlICJ0YXJnZXQuaCIK KyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyNpbmNsdWRlICJnZGJjb3JlLmgiCisjaW5jbHVkZSAi cmVnY2FjaGUuaCIKKyNpbmNsdWRlICJyZWdzZXQuaCIKKyNpbmNsdWRlICJlbGYvY29tbW9uLmgi CisjaW5jbHVkZSAiZWxmLWJmZC5oIiAgICAgICAgICAgIC8qIGZvciBlbGZjb3JlX3dyaXRlXyog Ki8KKyNpbmNsdWRlICJpbmZlcmlvci5oIgorI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKyNp bmNsdWRlICJhcmNoLXV0aWxzLmgiCisjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKKyNpbmNsdWRl ICJvYnNlcnZhYmxlLmgiCisjaW5jbHVkZSAib2JqZmlsZXMuaCIKKyNpbmNsdWRlICJpbmZjYWxs LmgiCisjaW5jbHVkZSAiZ2RiY21kLmgiCisjaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCisjaW5jbHVk ZSAiZ2Ric3VwcG9ydC9lbnVtLWZsYWdzLmgiCisjaW5jbHVkZSAiZ2Ric3VwcG9ydC9nZGJfb3B0 aW9uYWwuaCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKy8qIC0tLS0gYmFzZWQgb24gbGludXgt dGRlcC5jIC0tLS0gKi8KKworLyogU3RydWN0dXJlIGZvciBwYXNzaW5nIGluZm9ybWF0aW9uIGZy b20KKyAgIG5vbmVfY29sbGVjdF90aHJlYWRfcmVnaXN0ZXJzIHZpYSBhbiBpdGVyYXRvciB0bwor ICAgbm9uZV9jb2xsZWN0X3JlZ3NldF9zZWN0aW9uX2NiLiAqLworCitzdHJ1Y3Qgbm9uZV9jb2xs ZWN0X3JlZ3NldF9zZWN0aW9uX2NiX2RhdGEKK3sKKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7 CisgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGU7CisgIGJmZCAqb2JmZDsKKyAgY2hh ciAqbm90ZV9kYXRhOworICBpbnQgKm5vdGVfc2l6ZTsKKyAgdW5zaWduZWQgbG9uZyBsd3A7Cisg IGVudW0gZ2RiX3NpZ25hbCBzdG9wX3NpZ25hbDsKKyAgaW50IGFib3J0X2l0ZXJhdGlvbjsKK307 CisKKy8qIENhbGxiYWNrIGZvciBpdGVyYXRlX292ZXJfcmVnc2V0X3NlY3Rpb25zIHRoYXQgcmVj b3JkcyBhIHNpbmdsZQorICAgcmVnc2V0IGluIHRoZSBjb3JlZmlsZSBub3RlIHNlY3Rpb24uICAq LworCitzdGF0aWMgdm9pZAorbm9uZV9jb2xsZWN0X3JlZ3NldF9zZWN0aW9uX2NiIChjb25zdCBj aGFyICpzZWN0X25hbWUsIGludCBzdXBwbHlfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGNvbGxlY3Rfc2l6ZSwgY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpodW1hbl9uYW1lLCB2 b2lkICpjYl9kYXRhKQoreworICBzdHJ1Y3Qgbm9uZV9jb2xsZWN0X3JlZ3NldF9zZWN0aW9uX2Ni X2RhdGEgKmRhdGEKKyAgICA9IChzdHJ1Y3Qgbm9uZV9jb2xsZWN0X3JlZ3NldF9zZWN0aW9uX2Ni X2RhdGEgKikgY2JfZGF0YTsKKyAgYm9vbCB2YXJpYWJsZV9zaXplX3NlY3Rpb24gPSAocmVnc2V0 ICE9IE5VTEwKKwkJCQkmJiByZWdzZXQtPmZsYWdzICYgUkVHU0VUX1ZBUklBQkxFX1NJWkUpOwor CisgIGlmICghdmFyaWFibGVfc2l6ZV9zZWN0aW9uKQorICAgIGdkYl9hc3NlcnQgKHN1cHBseV9z aXplID09IGNvbGxlY3Rfc2l6ZSk7CisKKyAgaWYgKGRhdGEtPmFib3J0X2l0ZXJhdGlvbikKKyAg ICByZXR1cm47CisKKyAgZ2RiX2Fzc2VydCAocmVnc2V0ICYmIHJlZ3NldC0+Y29sbGVjdF9yZWdz ZXQpOworCisgIC8qIFRoaXMgaXMgaW50ZW50aW9uYWxseSB6ZXJvLWluaXRpYWxpemVkIGJ5IHVz aW5nIHN0ZDo6dmVjdG9yLCBzbworICAgICB0aGF0IGFueSBwYWRkaW5nIGJ5dGVzIGluIHRoZSBj b3JlIGZpbGUgd2lsbCBzaG93IGFzIDAuICAqLworICBzdGQ6OnZlY3RvcjxnZGJfYnl0ZT4gYnVm IChjb2xsZWN0X3NpemUpOworCisgIHJlZ3NldC0+Y29sbGVjdF9yZWdzZXQgKHJlZ3NldCwgZGF0 YS0+cmVnY2FjaGUsIC0xLCBidWYuZGF0YSAoKSwKKwkJCSAgY29sbGVjdF9zaXplKTsKKworICAv KiBQUlNUQVRVUyBzdGlsbCBuZWVkcyB0byBiZSB0cmVhdGVkIHNwZWNpYWxseS4gICovCisgIGlm IChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWciKSA9PSAwKQorICAgIGRhdGEtPm5vdGVfZGF0YSA9 IChjaGFyICopIGVsZmNvcmVfd3JpdGVfcHJzdGF0dXMKKyAgICAgIChkYXRhLT5vYmZkLCBkYXRh LT5ub3RlX2RhdGEsIGRhdGEtPm5vdGVfc2l6ZSwgZGF0YS0+bHdwLAorICAgICAgIGdkYl9zaWdu YWxfdG9faG9zdCAoZGF0YS0+c3RvcF9zaWduYWwpLCBidWYuZGF0YSAoKSk7CisgIGVsc2UKKyAg ICBkYXRhLT5ub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRlX3JlZ2lzdGVyX25vdGUK KyAgICAgIChkYXRhLT5vYmZkLCBkYXRhLT5ub3RlX2RhdGEsIGRhdGEtPm5vdGVfc2l6ZSwKKyAg ICAgICBzZWN0X25hbWUsIGJ1Zi5kYXRhICgpLCBjb2xsZWN0X3NpemUpOworCisgIGlmIChkYXRh LT5ub3RlX2RhdGEgPT0gTlVMTCkKKyAgICBkYXRhLT5hYm9ydF9pdGVyYXRpb24gPSAxOworfQor CisvKiBSZWNvcmRzIHRoZSB0aHJlYWQncyByZWdpc3RlciBzdGF0ZSBmb3IgdGhlIGNvcmVmaWxl IG5vdGUKKyAgIHNlY3Rpb24uICAqLworCitzdGF0aWMgY2hhciAqCitub25lX2NvbGxlY3RfdGhy ZWFkX3JlZ2lzdGVycyAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwdGlkX3QgcHRpZCwgYmZkICpvYmZkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5vdGVfZGF0YSwgaW50ICpub3RlX3NpemUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBnZGJfc2lnbmFsIHN0b3Bfc2lnbmFs KQoreworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOworICBz dHJ1Y3Qgbm9uZV9jb2xsZWN0X3JlZ3NldF9zZWN0aW9uX2NiX2RhdGEgZGF0YTsKKworICBkYXRh LmdkYmFyY2ggPSBnZGJhcmNoOworICBkYXRhLnJlZ2NhY2hlID0gcmVnY2FjaGU7CisgIGRhdGEu b2JmZCA9IG9iZmQ7CisgIGRhdGEubm90ZV9kYXRhID0gbm90ZV9kYXRhOworICBkYXRhLm5vdGVf c2l6ZSA9IG5vdGVfc2l6ZTsKKyAgZGF0YS5zdG9wX3NpZ25hbCA9IHN0b3Bfc2lnbmFsOworICBk YXRhLmFib3J0X2l0ZXJhdGlvbiA9IDA7CisKKyAgLyogRm9yIHJlbW90ZSB0YXJnZXRzIHRoZSBM V1AgbWF5IG5vdCBiZSBhdmFpbGFibGUsIHNvIHVzZSB0aGUgVElELiAgKi8KKyAgZGF0YS5sd3Ag PSBwdGlkLmx3cCAoKTsKKyAgaWYgKCFkYXRhLmx3cCkKKyAgICBkYXRhLmx3cCA9IHB0aWQudGlk ICgpOworCisgIGdkYmFyY2hfaXRlcmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9ucyAoZ2RiYXJjaCwK KwkJCQkJbm9uZV9jb2xsZWN0X3JlZ3NldF9zZWN0aW9uX2NiLAorCQkJCQkmZGF0YSwgcmVnY2Fj aGUpOworICByZXR1cm4gZGF0YS5ub3RlX2RhdGE7Cit9CisKKy8qIEZpbGxzIHRoZSAidG9fbWFr ZV9jb3JlZmlsZV9ub3RlIiB0YXJnZXQgdmVjdG9yLiAgQnVpbGRzIHRoZSBub3RlCisgICBzZWN0 aW9uIGZvciBhIGNvcmVmaWxlLCBhbmQgcmV0dXJucyBpdCBpbiBhIG1hbGxvYyBidWZmZXIuICAq LworCitjaGFyICoKK25vbmVfbWFrZV9jb3JlZmlsZV9ub3RlcyAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIGJmZCAqb2JmZCwgaW50ICpub3RlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vbmVfY29sbGVjdF90aHJlYWRfcmVnaXN0ZXJzX2Z0eXBlIGNvbGxlY3QpCit7CisgIGNo YXIgKm5vdGVfZGF0YSA9IE5VTEw7CisKKyAgLyogUHJvY2VzcyBpbmZvcm1hdGlvbi4gICovCisg IGlmIChnZXRfZXhlY19maWxlICgwKSkKKyAgICB7CisgICAgICBjb25zdCBjaGFyICpmbmFtZSA9 IGxiYXNlbmFtZSAoZ2V0X2V4ZWNfZmlsZSAoMCkpOworICAgICAgY2hhciAqcHNhcmdzID0geHN0 cmR1cCAoZm5hbWUpOworCisgICAgICBpZiAoZ2V0X2luZmVyaW9yX2FyZ3MgKCkpCisgICAgICAg IHBzYXJncyA9IHJlY29uY2F0IChwc2FyZ3MsIHBzYXJncywgIiAiLCBnZXRfaW5mZXJpb3JfYXJn cyAoKSwKKwkJCSAgIChjaGFyICopIE5VTEwpOworCisgICAgICBub3RlX2RhdGEgPSBlbGZjb3Jl X3dyaXRlX3BycHNpbmZvIChvYmZkLCBub3RlX2RhdGEsIG5vdGVfc2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLCBwc2FyZ3MpOworICAgICAgeGZy ZWUgKHBzYXJncyk7CisgICAgfQorCisgIGlmICghbm90ZV9kYXRhKQorICAgIHJldHVybiBOVUxM OworCisgIGlmIChub3RlX2RhdGEpCisgICAgeworICAgICAgcHRpZF90IHB0aWQ7CisgICAgICBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlOworICAgICAgcHJvY2Vzc19zdHJhdHVtX3RhcmdldCAq dGFyZyA9IE5VTEw7CisgICAgICBpbnQgZ2xvYmFsX2lkID0gMTsKKyAgICAgIHN0cnVjdCB0aHJl YWRfaW5mbyAqaW5mbyA9IGZpbmRfdGhyZWFkX2dsb2JhbF9pZCAoZ2xvYmFsX2lkKTsKKyAgICAg IGlmIChpbmZvKQorICAgICAgICB7CisgICAgICAgICAgcHRpZCA9IGluZm8tPnB0aWQ7CisgICAg ICAgICAgdGFyZyA9IGluZm8tPmluZi0+cHJvY2Vzc190YXJnZXQgKCk7CisgICAgICAgIH0KKyAg ICAgIGVsc2UKKyAgICAgICAgcHRpZCA9IG1pbnVzX29uZV9wdGlkOworICAgICAgcmVnY2FjaGUg PSBnZXRfdGhyZWFkX2FyY2hfcmVnY2FjaGUgKHRhcmcsIHB0aWQsIGdkYmFyY2gpOworCisgICAg ICBub3RlX2RhdGEgPSBjb2xsZWN0IChyZWdjYWNoZSwKKwkJCSAgIHB0aWQsCisJCQkgICBvYmZk LAorCQkJICAgbm90ZV9kYXRhLAorCQkJICAgbm90ZV9zaXplLAorCQkJICAgR0RCX1NJR05BTF8w KTsKKyAgICAgIGlmICghbm90ZV9kYXRhKQorCXJldHVybiBOVUxMOworCisgICAgICAvKiBBdXhp bGxhcnkgdmVjdG9yLiAgKi8KKyAgICAgIGdkYjo6b3B0aW9uYWw8Z2RiOjpieXRlX3ZlY3Rvcj4g YXV4diA9CisgICAgICAgIHRhcmdldF9yZWFkX2FsbG9jIChjdXJyZW50X3RvcF90YXJnZXQgKCks IFRBUkdFVF9PQkpFQ1RfQVVYViwgTlVMTCk7CisgICAgICBpZiAoYXV4diAmJiAhYXV4di0+ZW1w dHkgKCkpCisgICAgICAgIHsKKyAgICAgICAgICBub3RlX2RhdGEgPSBlbGZjb3JlX3dyaXRlX25v dGUgKG9iZmQsIG5vdGVfZGF0YSwgbm90ZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIkNPUkUiLCBOVF9BVVhWLCBhdXh2LT5kYXRhICgpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4di0+c2l6ZSAoKSk7CisgICAg ICAgICAgCisgICAgICAgICAgaWYgKCFub3RlX2RhdGEpCisgICAgICAgICAgICByZXR1cm4gTlVM TDsKKyAgICAgICAgfQorICAgIH0KKworICAvKiBtYWtlX2NsZWFudXAgKHhmcmVlLCBub3RlX2Rh dGEpOyAqLworICByZXR1cm4gbm90ZV9kYXRhOworfQorCitzdGF0aWMgY2hhciAqCitub25lX21h a2VfY29yZWZpbGVfbm90ZXNfMSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGJmZCAqb2JmZCwg aW50ICpub3RlX3NpemUpCit7CisgIHJldHVybiBub25lX21ha2VfY29yZWZpbGVfbm90ZXMgKGdk YmFyY2gsIG9iZmQsIG5vdGVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbm9uZV9jb2xsZWN0X3RocmVhZF9yZWdpc3RlcnMpOworfQorCisvKiBTZXR1cCBkZWZhdWx0 IGNvcmUgZmlsZSBzdXBwb3J0IGZvciBub25lIHRhcmdldHMuCisgICBDYW4gYmUgb3ZlcnJpZGRl biBsYXRlciBieSBPU0FCSS4gICovCisKK3ZvaWQKK25vbmVfaW5pdF9jb3JlZmlsZSAoc3RydWN0 IGdkYmFyY2hfaW5mbyBpbmZvLAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCkKK3sKKyAgLyogRGVmYXVsdCBjb3JlIGZpbGUgc3VwcG9ydC4gICovCisgIHNldF9n ZGJhcmNoX21ha2VfY29yZWZpbGVfbm90ZXMgKGdkYmFyY2gsIG5vbmVfbWFrZV9jb3JlZmlsZV9u b3Rlc18xKTsKK30KKworLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2lu Zy1wcm90b3R5cGVzLiAgKi8KK2V4dGVybiBpbml0aWFsaXplX2ZpbGVfZnR5cGUgX2luaXRpYWxp emVfbm9uZV90ZGVwOworCit2b2lkCitfaW5pdGlhbGl6ZV9ub25lX3RkZXAgKHZvaWQpCit7Cisg IC8qIE5vIHNwZWNpYWwgYWN0aW9ucy4gICovCit9CmRpZmYgLS1naXQgYS9nZGIvbm9uZS10ZGVw LmggYi9nZGIvbm9uZS10ZGVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uNGFlYTcwMDRkOAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9ub25lLXRkZXAuaApAQCAtMCww ICsxLDM5IEBACisvKiBUYXJnZXQtZGVwZW5kZW50IGNvZGUgZm9yIG5vbmUsIGFyY2hpdGVjdHVy ZSBpbmRlcGVuZGVudC4KKworICAgQ29weXJpZ2h0IChDKSAyMDIwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZm5kZWYgTk9ORV9UREVQX0gKKyNkZWZpbmUgTk9O RV9UREVQX0gKKworI2luY2x1ZGUgImJmZC5oIgorCitzdHJ1Y3QgcmVnY2FjaGU7CisKK3R5cGVk ZWYgY2hhciAqKCpub25lX2NvbGxlY3RfdGhyZWFkX3JlZ2lzdGVyc19mdHlwZSkgKGNvbnN0IHN0 cnVjdCByZWdjYWNoZSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHRpZF90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmZkICosIGNoYXIgKiwgaW50ICosCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGdkYl9zaWduYWwp OworY2hhciAqCitub25lX21ha2VfY29yZWZpbGVfbm90ZXMgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBiZmQgKm9iZmQsIGludCAqbm90ZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBub25lX2NvbGxlY3RfdGhyZWFkX3JlZ2lzdGVyc19mdHlwZSBjb2xsZWN0KTsKKwordm9pZAor bm9uZV9pbml0X2NvcmVmaWxlIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sCisgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKKworI2VuZGlmIC8qIG5vbmUtdGRl cC5oICovCi0tIAoyLjE3LjEKCg== --_002_AM6PR10MB2150ACB2E3637DBCD6EE2AA1EF1F0AM6PR10MB2150EURP_--