From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2073.outbound.protection.outlook.com [40.107.220.73]) by sourceware.org (Postfix) with ESMTPS id 93DAF3940CE1 for ; Tue, 17 Mar 2020 14:13:34 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A+udU5SckxjMKAi9j7CW8ikccbbLrHNR9Kj//YgqlfZnKzoHpk26kqsHX3BtpBx3aFi1/G2csP5m1TPDTLql4olRJ/ElRmO0ERGQOAyrTIG17lNEQxXfyEg5zad1X+Y80grHAcLvWZwsWQN+KzpYgnVeDVQ+GNCNivlQY85ysMnXHED/tICRsRWnXo64UsYwkpLG6/pwYucrn1yajZLTnkRAss0fC9gFMFEmy+S9P0mxMZLdHf/qsMz7R7d/dpqbYewur6B3WmKn4xFQYljsfRC/2xWCfe3Y5wQ0uoWtY+6K+Os8cm3KA+SX5Psqx/9/2MQcx4K05jXHbUdQzYnRhQ== 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=brASZ3ZzWlA1rpwcgUVUjEahjY/3S4xhBYTxZvRI/Cc=; b=BXNvPVCTOuj++TRfd83jo2qqBYqIAIO0hWmfMvowKP1EPRMjGyv4+12ESsy3vQ6MX+CBBxVu3M3Hu+JeO4de33z30wMKJIK45zBqss69kNP3FNy7/l36iFvu8qaQL4pBVdeJE7JfvTfgDW4zzALpw3uEk9X57IeJwuK7ZNmKQPMom2tDrPx+28yaL0gNyFrdUd/3CW3XKY8crqrC+FzCj+u2D/8R5v9GM3rOQH/OtNfbQV4ewPHx4XnzVnTKrb2ZxHEbAzZbQ4NE7UKuwhFG9sUG2qhh6ospUcLzjVmpvKOmqCWTUIt9MDB4pfcGqkSqOksc+QaRK6fDXDeD8jBN3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=brASZ3ZzWlA1rpwcgUVUjEahjY/3S4xhBYTxZvRI/Cc=; b=Nh2KRcU5tDXpSO+znPlyaa1u5OrYURL7HZHntNQ4hg49IHVsCbi3kU4wux6p6Ovrs95RWTxFKOQlIJcUgHcYapDBRcRMP2TrqN0A795MtVKKtZ4baGmgseDSNYSezOmUj82XOBIQm8GLSkEMoxkcbCtb6oZ2g0d5UDaFByV39Yc= Received: from DM6PR12MB3738.namprd12.prod.outlook.com (2603:10b6:5:1c7::17) by DM6PR12MB3001.namprd12.prod.outlook.com (2603:10b6:5:116::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2814.22; Tue, 17 Mar 2020 14:13:30 +0000 Received: from DM6PR12MB3738.namprd12.prod.outlook.com ([fe80::e907:575d:3cdc:7fef]) by DM6PR12MB3738.namprd12.prod.outlook.com ([fe80::e907:575d:3cdc:7fef%5]) with mapi id 15.20.2814.021; Tue, 17 Mar 2020 14:13:29 +0000 From: "Achra, Nitika" To: "gdb-patches@sourceware.org" , Tom Tromey , Ali Tamur CC: "George, Jini Susan" Subject: RE: [PATCH] Support for DW_AT_loclists_base and DW_FORM_loclistx. Thread-Topic: [PATCH] Support for DW_AT_loclists_base and DW_FORM_loclistx. Thread-Index: AdXPbYR2Abz0qRfJS0m9I2EtfSRFLQCzzN6IAXM5tlAAWyo8gARbD1WwBF00srA= Date: Tue, 17 Mar 2020 14:13:29 +0000 Message-ID: References: <87tv4lreki.fsf@tromey.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_Enabled=true; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_SetDate=2020-02-24T08:48:40Z; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_Method=Standard; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_Name=Internal Use Only - Unrestricted; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_ActionId=0ad23e21-8da5-4c40-aad0-0000e7772b7a; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_ContentBits=1 msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_enabled: true msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_setdate: 2020-03-17T14:13:25Z msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_method: Standard msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_name: Internal Use Only - Unrestricted msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_actionid: 6cd56086-d66d-4314-85ff-00001ae5ee06 msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_contentbits: 0 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Nitika.Achra@amd.com; x-originating-ip: [106.51.110.3] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 96581150-6594-4a99-f2d2-08d7ca7d5e66 x-ms-traffictypediagnostic: DM6PR12MB3001:|DM6PR12MB3001: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-forefront-prvs: 0345CFD558 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(396003)(376002)(136003)(39860400002)(346002)(366004)(199004)(33656002)(66446008)(66574012)(76116006)(71200400001)(5660300002)(66616009)(66946007)(66476007)(86362001)(478600001)(52536014)(64756008)(66556008)(9686003)(55016002)(4326008)(110136005)(2906002)(26005)(186003)(55236004)(8936002)(8676002)(81166006)(81156014)(6506007)(53546011)(7696005)(316002)(559001)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR12MB3001; H:DM6PR12MB3738.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 84JladFGrotrOoXHccc0mG3I8TFi1xZ33NVWjqzVSC7gksrOeapcoIKsCxPNBS9sGORYcr2G4KH6BcvTq8Yj433GauaUGnji6aSUko01QwvOfRLjhLF4PIuVsYVHNvt2gVI5TR1CbwXYsl7HghwwKRZUtysakmrJdcMcIIDEJiz9oeCSF48pZlPakH1dHmacjIqeXTNQNYHj7RTLAkS7+sdg2qYyITvhc8/0E1yu5wxMXWT29kdrrF+PPhj8feV42TrKVyCggX25Qf2qcd9e6RHXtG1L2rkJvQPppg2Pf8nW7n+eebK/4GAY4opTFz/715yqVtfnfM043/rQ8zu3vmUHR4pwDiBzyP35hgP/qPP1od8AhjDcyuQVzPLBDu9jeSu5bre+XS4oPGaKCefXt47hnXGecMn0awAHXzYqg/gT8C9p51ksxgt13F0q4aNDjo45fVUd8n8BRk44SxPdjmT8m0fUhRqMYNgR2T39aphrq+4XUSA9RVzyZxCz6Gxm+Y1vl/Y7h2al2lbgpVW53w== x-ms-exchange-antispam-messagedata: s4iYj1yw5gUc5jDVEqTbIIAKwfPRONVAsgQfrWCpqKmUcoJTkPHuXijkJaJVPhV96OC4sqklfKPsNNz59i9lz3Aymcqofn6wyDms2APpXavG0EQnR2Q0cglUIPkHCJvcACfvwsScikfRWRAdjweULQ== Content-Type: multipart/mixed; boundary="_004_DM6PR12MB37385B6B54BF950DD743F7969AF60DM6PR12MB3738namp_" MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96581150-6594-4a99-f2d2-08d7ca7d5e66 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Mar 2020 14:13:29.8433 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: szyKLNAU8pQBJgPlRgV02EROqu3hvpcDA96Blfq6GuJNsHsv8AWV0pOJ7A/IkNnmoGY8YzNWeIiA7NSJfZu3EA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3001 X-Spam-Status: No, score=-3.6 required=5.0 tests=DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_1, HTML_MESSAGE, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NONE 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-Content-Filtered-By: Mailman/MimeDel 2.1.29 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, 17 Mar 2020 14:13:37 -0000 --_004_DM6PR12MB37385B6B54BF950DD743F7969AF60DM6PR12MB3738namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [AMD Official Use Only - Internal Distribution Only] Hi Ali, Just a gentle reminder to look into the failing testcase as I am not able t= o reproduce the bug. Attached the new patch after rebasing. Regards, Nitika From: Achra, Nitika Sent: Monday, February 24, 2020 2:19 PM To: gdb-patches@sourceware.org; Tom Tromey ; Ali Tamur Cc: George, Jini Susan Subject: RE: [PATCH] Support for DW_AT_loclists_base and DW_FORM_loclistx. [AMD Official Use Only - Internal Distribution Only] Hi Tom, Hi Ali, Sorry for the delayed response. I was in a very poor internet connectivity = area. Please look for my comments below. From: Ali Tamur > Sent: Sunday, February 2, 2020 8:40 AM To: Achra, Nitika > Cc: Tom Tromey >; gdb-patches@sourcew= are.org; George, Jini Susan > Subject: Re: [PATCH] Support for DW_AT_loclists_base and DW_FORM_loclistx. Ali>Hi Nikita, Ali>Thank you for this patch. I think you have a bug. (At least the version= I have seems to have a bug) Ali>static CORE_ADDR Ali>read_loclist_index (struct dwarf2_cu *cu, ULONGEST loclist_index) Ali>{ Ali>... Ali> read_loclist_header (&header, section); // (*) Ali>} Ali>I think (*) would be correct only when there is a single location list = header in the .debug_loclists section. In the more general case where there= are many, Ali>info_ptr should start reading the header at: Ali>section->buffer + loclist_base - (LOCLIST_HEADER_SIZE32 or LOCLIST_HEAD= ER_SIZE64); Ali>Am I missing something? Ali>My example executable is: Ali>int main() { Ali> return 17; Ali>} Ali>compiled with clang++, -gdwarf-5 and no split dwarf but also linked wit= h libc++ library. With your code, gdb cannot read debug_info; with the corr= ection, Ali>everything seems fine. I am not able to reproduce this bug using the example executable. The examp= le is working fine with me. I have used the following command- clang++ -gdwarf-5 -O3 -stdlib=3Dlibc++ test.cpp Could you please look into this again? Am I doing something wrong here? I have used clang version 10.0.0. Ali>I have another suggestion/question. Is DW_AT_location allowed to have a= DW_FORM_loclistx form? In the dwarf-dump of my example, I see: Ali>0x00032ee5: DW_TAG_formal_parameter Ali> DW_AT_location (indexed (0x85c) loclist =3D 0x000109d5: Ali> [0x000000000033b5c0, 0x000000000033b5d0): DW_OP_reg5 RDI Ali> [0x000000000033b5d0, 0x000000000033b62b): DW_OP_reg15 R15 Ali> [0x000000000033b631, 0x000000000033b65e): DW_OP_reg15 R15= ) Ali> DW_AT_name ("ptr") Ali> DW_AT_decl_file ("/path/to/tcmalloc.cc") Ali> DW_AT_decl_line (1385) Ali> DW_AT_type (0x0003d6d6 "*") Ali> But then: Ali> partial_die_info::read ( ... Ali> switch (attr.name) case DW_AT_location: Ali> ... Ali> else if (attr_form_is_section_offset (&attr)) { Ali> dwarf2_complex_location_expr_complaint (); // *** Ali> *** fires, I think needlessly. Could this complaint be obsolete? As per the DWARFv5 standard DW_AT_location is allowed to have DW_FORM_locli= stx. So this complaint should be obsolete now if only DW_FORM_loclistx is b= eing used. But whether the section offsets like DW_FORM_sec_offset, DW_FORM= _data4 and DW_FORM_data8 can still be emitted under DWARFv5 or not? If yes = then the complaint should get fired for them but not for DW_FORM_loclistx. = Am I right? Ali>Thank you, Ali>Ali Regards, Nitika On Fri, Jan 31, 2020 at 12:55 AM Achra, Nitika > wrote: [AMD Official Use Only - Internal Distribution Only] Hello Tom, Thanks for the review. I have incorporated the review comments. Please have= a look. Nitika> *Support for DW_AT_loclists_base and DW_FORM_loclistx. Tom>Thanks for the patch. Tom>My comments below are primarily nits. Nitika> Tested by running the testsuite before and after the patch and Nitika> there is no increase in the number of test cases that fails. Nitika> Tested with both Nitika> -gdwarf-4 and -gdwarf-5 flags. Also tested -gslit-dwarf along Nitika> with Nitika> -gdwarf-4 as well as -gdwarf5 flags. Tom> I assume it fixed some tests with -gdwarf-5? Or else we'll need a new= test case. Added a new test case. This test checks if the file command passes without = any error with -g-dwarf-5 and -gsplit-dwarf. Gcc emits DW_FORM_loclistx only with -gsplit-dwarf. I can also check by pri= nting the variable value, but right now printing the value is throwing the error- " DWARF ERROR: Corrupted dwarf expression= " which is not related to this patch. I have submitted another patch which will fix that. Nitika> +/* Size of .debug_loclist section header for 32-bit DWARF Nitika> +format. */ #define LOCLIST_HEADER_SIZE32 12; Nitika> + Nitika> +/* Size of .debug_loclist section header for 64-bit DWARF Nitika> +format. */ #define LOCLIST_HEADER_SIZE64 20; Tom> The ";" at the end of these defines is weird. Removed Nitika> + /* Header data from the location list section. */ struct Nitika> + loclist_header* loclist_header; Tom> gdb style puts the "*" on the other side of the " " like Tom> struct loclist_header *loclist_header; Nitika> +static struct dwarf2_section_info* cu_debug_loc_section (struct Nitika> +dwarf2_cu* cu); Tom> Here too -- there are actually several instances in the patch. Done Nitika> +void Nitika> +read_loclist_header (struct dwarf2_cu* cu, struct Nitika> +dwarf2_section_info* section) { Tom> New functions should have an introductory comment explaining their pur= pose. Done Tom> The "static" should be repeated here, rather than rely on the declarat= ion. This affects all of the new functions, I think. Also, there's no nee= d to forward Tom>declare them if the uses come after the definition, so pro= bably some of those declarations can be removed as well. Tom>Added static in definitions also. Done Tom>It might be nicer if read_loclist_header took a pointer to the loclist_= header rather than a dwarf2_cu, and did not allocate. See below. Done Nitika> +ULONGEST Nitika> +lookup_loclist_base (struct dwarf2_cu* cu) { Nitika> + /* For the .dwo unit, the loclist_base points to the first offse= t following Nitika> + the header. The header consists of the following entities- Nitika> + 1. Unit Length (4 bytes for 32 bit DWARF format, and 12 bytes= for the 64 bit format) Nitika> + 2. version (2 bytes) Nitika> + 3. address size (1 byte) Nitika> + 4. segment selector size (1 byte) Nitika> + 5. offset entry count (4 bytes) Nitika> + These sizes are derived as per the DWARFv5 standard. */ Nitika> + if (cu->dwo_unit) Nitika> + { Nitika> + if (cu->header.initial_length_size =3D=3D 4) Nitika> + return LOCLIST_HEADER_SIZE32; Nitika> + return LOCLIST_HEADER_SIZE64; Tom>Is there some way to avoid hard-coding sizes here? I thought of using sizeof(struct loclist_header) in place of LOCLIST_HEADER= _SIZE32 and sizeof(struct loclist_header) + cu->initial_length_size in plac= e of LOCLIST_HEADER_SIZE_64. But I am not sure if this a correct way of doing th= is. Some compilers append some padding at the end of structure. So the size of structure might not be equal to the sum of size of its members. Siz= eof() is also compiler dependent. So, right now I cannot think of any other= way. Nitika> +/* Given a DW_FORM_loclistx value loclist_index, fetch the offset = from the array Nitika> + of offsets in the .debug_loclists section. */ CORE_ADDR Nitika> +read_loclist_index (struct dwarf2_cu* cu, ULONGEST Nitika> +loclist_index) { ... Nitika> + const gdb_byte* info_ptr; Tom> This can be declared later, when it's first initialized. Done Nitika> + if (section->buffer =3D=3D NULL) Nitika> + error(_("DW_FORM_loclistx used without .debug_loclist section = [in module %s]"), Nitika> + objfile_name (objfile)); Tom>I wonder whether errors here will really do something good. The proble= m is that the DWARF reader, in general, doesn't handle errors very well. Tom>It *should* -- but it doesn't. I don't know about this spot, but in ot= her places, calling error will mean that reading all of the debuginfo for t= he entire file Tom>will be aborted. (It can even cause worse problems, the= re's a bug in bugzilla about it ending a remote session.) Tom>Maybe complaint() and then a fallback would be preferable. Tom>Or, test the error() to make sure it's ok. Replaced with complaint() Nitika> + delete cu->loclist_header; Tom>This is created, only to be deleted in the same function. Tom>I think it would be better to just stack-allocate this. Done Tom>Or, should this be cached in the CU -- that is, read once and then reus= ed? Tom>If so then a different approach should be used. It wasn't clear to me = how often read_loclist_index is called. Nitika> + case DW_FORM_loclistx: Nitika> + { Nitika> + *need_reprocess =3D true; Nitika> + DW_UNSND(attr) =3D read_unsigned_leb128 (abfd, info_ptr, Nitika> + &bytes_read); Tom>Space before the first "(". Done Regards, Nitika Achra --_004_DM6PR12MB37385B6B54BF950DD743F7969AF60DM6PR12MB3738namp_ Content-Type: application/octet-stream; name="0001-Support-for-DW_AT_loclists_base-and-DW_FORM_loclistx.patch" Content-Description: 0001-Support-for-DW_AT_loclists_base-and-DW_FORM_loclistx.patch Content-Disposition: attachment; filename="0001-Support-for-DW_AT_loclists_base-and-DW_FORM_loclistx.patch"; size=12085; creation-date="Tue, 17 Mar 2020 14:06:26 GMT"; modification-date="Tue, 17 Mar 2020 14:06:26 GMT" Content-Transfer-Encoding: base64 RnJvbSBmMDc0NzllYTA3OGNiYjI5YWQxNGVmZWQ0MmJmMzllNWU4NTAzODAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBuaXRhY2hyYSA8Tml0aWthLkFjaHJhQGFtZC5jb20+CkRhdGU6 IFR1ZSwgMTcgTWFyIDIwMjAgMTY6MjU6NDEgKzA1MzAKU3ViamVjdDogW1BBVENIXSBTdXBwb3J0 IGZvciBEV19BVF9sb2NsaXN0c19iYXNlIGFuZCBEV19GT1JNX2xvY2xpc3R4LgoKVGhpcyBwYXRj aCBoYW5kbGVzIERXX0FUX2xvY2xpc3RzX2Jhc2UgYW5kIERXX0ZPUk1fbG9jbGlzdHguCkRXX0FU X2xvY2xpc3RzX2Jhc2UgaXMgYSBuZXcgYXR0cmlidXRlIGFkZGVkIGluIERXQVJGdjUgd2hpY2gK cG9pbnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG9mZnNldCB0YWJsZSBvZiAuZGVidWdfbG9j bGlzdApzZWN0aW9uLiBSZWZlcmVuY2UgdG8gdGhlIGxvY2F0aW9uIGxpc3QgKERXX0ZPUk1fbG9j bGlzdHgpIGlzCmludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoaXMgYmFzZS4gRFdfRk9STV9sb2Ns aXN0eCBpcyBhIG5ldwpmb3JtIGFkZGVkIGluIERXQVJGdjUgd2hpY2ggaXMgdXNlZCB0byBhY2Nl c3MgbG9jYXRpb24gbGlzdC4KClRlc3RlZCBieSBydW5uaW5nIHRoZSB0ZXN0c3VpdGUgYmVmb3Jl IGFuZCBhZnRlciB0aGUgcGF0Y2ggYW5kIHRoZXJlCmlzIG5vIGluY3JlYXNlIGluIHRoZSBudW1i ZXIgb2YgdGVzdCBjYXNlcyB0aGF0IGZhaWxzLiBUZXN0ZWQgd2l0aCBib3RoCi1nZHdhcmYtNCBh bmQgLWdkd2FyZi01IGZsYWdzLiBBbHNvIHRlc3RlZCAtZ3NsaXQtZHdhcmYgYWxvbmcgd2l0aAot Z2R3YXJmLTQgYXMgd2VsbCBhcyAtZ2R3YXJmNSBmbGFncy4gVXNlZCBnY2MtOS40IGZvciB0ZXN0 aW5nLgoKZ2RiL0NoYW5nZUxvZzoKCiAgICpkd2FyZjJyZWFkLmMgKGN1X2RlYnVnX2xvY19zZWN0 aW9uKTogQWRkZWQgdGhlIGRlY2xhcmF0aW9uIGZvciB0aGUgZnVuY3Rpb24uCiAgIChyZWFkX2xv Y2xpc3RfaW5kZXgpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb24uCiAgIChsb29rdXBfbG9jbGlz dF9iYXNlKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgogICAocmVhZF9sb2NsaXN0X2hlYWRl cik6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbgogICAoZHdhcmYyX2N1KTogQWRkZWQgbG9jbGlz dF9iYXNlIGFuZCBsb2NsaXN0X2hlYWRlciBmaWVsZC4KICAgKGR3YXJmMl9sb2NhdGVfZHdvX3Nl Y3Rpb25zKTogSGFuZGxlIC5kZWJ1Z19sb2NsaXN0LmR3byBzZWN0aW9uLgogICAocmVhZF9mdWxs X2RpZV8xKTogUmVhZCB0aGUgdmFsdWUgb2YgRFdfQVRfbG9jbGlzdHNfYmFzZS4KICAgKHJlYWRf YXR0cmlidXRlX3JlcHJvY2Vzcyk6IEhhbmRsZSBEV19GT1JNX2xvY2xpc3R4LgogICAocmVhZF9h dHRyaWJ1dGVfdmFsdWUpOiBIYW5kbGUgRFdfRk9STV9sb2NsaXN0eC4KICAgKHNraXBfb25lX2Rp ZSk6IEhhbmRsZSBEV19GT1JNX2xvY2xpc3R4LgogICAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zm c2V0KTogSGFuZGxlIERXX0ZPUk1fbG9jbGlzdHguCiAgIChyZWFkX2xvY2xpc3RfaW5kZXgpOiBG dW5jdGlvbiBkZWZpbml0aW9uLgogICAobG9va3VwX2xvY2xpc3RfYmFzZSk6IEZ1bmN0aW9uIGRl ZmluaXRpb24uCiAgIChyZWFkX2xvY2xpc3RfaGVhZGVyKTogRnVuY3Rpb24gZGVmaW5pdGlvbi4K ICAgKGxvY2xpc3RfaGVhZGVyKTogTmV3IHN0cnVjdHVyZSBkZWNsYXJhdGlvbi4KCmdkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nOgoKICAgKmdkYi5kd2FyZjIvZHc1LWZvcm0tbG9jbGlzdHguZXhwOiBO ZXcgZmlsZS4KICAgKmdkYi5kd2FyZjIvZHc1LWZvcm0tbG9jbGlzdHguYzogTmV3IGZpbGUuCi0t LQogZ2RiL2R3YXJmMi9yZWFkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI3ICsr KysrKysrKysrKysrKysrKwogZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1mb3JtLWxvY2xp c3R4LmMgIHwgIDE2ICsrKwogLi4uL2dkYi5kd2FyZjIvZHc1LWZvcm0tbG9jbGlzdHguZXhwICAg ICAgICAgIHwgIDQyICsrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxODUgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzUtZm9ybS1sb2Ns aXN0eC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1m b3JtLWxvY2xpc3R4LmV4cAoKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3 YXJmMi9yZWFkLmMKaW5kZXggODhhNjBjMWM3My4uNTI2NWVmMjA4ZCAxMDA2NDQKLS0tIGEvZ2Ri L2R3YXJmMi9yZWFkLmMKKysrIGIvZ2RiL2R3YXJmMi9yZWFkLmMKQEAgLTExMSw2ICsxMTEsMTIg QEAgc3RhdGljIGludCBkd2FyZjJfbG9jbGlzdF9pbmRleDsKIHN0YXRpYyBpbnQgZHdhcmYyX2xv Y2V4cHJfYmxvY2tfaW5kZXg7CiBzdGF0aWMgaW50IGR3YXJmMl9sb2NsaXN0X2Jsb2NrX2luZGV4 OwogCisvKiBTaXplIG9mIC5kZWJ1Z19sb2NsaXN0IHNlY3Rpb24gaGVhZGVyIGZvciAzMi1iaXQg RFdBUkYgZm9ybWF0LiAqLworI2RlZmluZSBMT0NMSVNUX0hFQURFUl9TSVpFMzIgMTIKKworLyog U2l6ZSBvZiAuZGVidWdfbG9jbGlzdCBzZWN0aW9uIGhlYWRlciBmb3IgNjQtYml0IERXQVJGIGZv cm1hdC4gKi8KKyNkZWZpbmUgTE9DTElTVF9IRUFERVJfU0laRTY0IDIwCisKIC8qIEFuIGluZGV4 IGludG8gYSAoQysrKSBzeW1ib2wgbmFtZSBjb21wb25lbnQgaW4gYSBzeW1ib2wgbmFtZSBhcwog ICAgcmVjb3JkZWQgaW4gdGhlIG1hcHBlZF9pbmRleCdzIHN5bWJvbCB0YWJsZS4gIEZvciBlYWNo IEMrKyBzeW1ib2wKICAgIGluIHRoZSBzeW1ib2wgdGFibGUsIHdlIHJlY29yZCBvbmUgZW50cnkg Zm9yIHRoZSBzdGFydCBvZiBlYWNoCkBAIC0zNDMsNiArMzQ5LDMwIEBAIGR3b3Bfc2VjdGlvbl9u YW1lcyA9CiAKIC8qIGxvY2FsIGRhdGEgdHlwZXMgKi8KIAorLyogVGhlIGxvY2F0aW9uIGxpc3Qg c2VjdGlvbiAoLmRlYnVnX2xvY2xpc3QpIGJlZ2lucyB3aXRoIGEgaGVhZGVyLAorICAgd2hpY2gg Y29udGFpbnMgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gKi8KK3N0cnVjdCBsb2NsaXN0X2hl YWRlcgoreworICAvKiBBIDQtYnl0ZSBvciAxMi1ieXRlIGxlbmd0aCBjb250YWluaW5nIHRoZSBs ZW5ndGggb2YgdGhlCisgIHNldCBvZiBlbnRyaWVzIGZvciB0aGlzIGNvbXBpbGF0aW9uIHVuaXQs IG5vdCBpbmNsdWRpbmcgdGhlCisgIGxlbmd0aCBmaWVsZCBpdHNlbGYuICovCisgIHVuc2lnbmVk IGludCBsZW5ndGg7CisKKyAgLyogQSAyLWJ5dGUgdmVyc2lvbiBpZGVudGlmaWVyLiAqLworICBz aG9ydCB2ZXJzaW9uOworCisgIC8qIEEgMS1ieXRlIHVuc2lnbmVkIGludGVnZXIgY29udGFpbmlu ZyB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhbiBhZGRyZXNzIG9uCisgICAgIHRoZSB0YXJnZXQgc3lz dGVtLiAqLworICB1bnNpZ25lZCBjaGFyIGFkZHJfc2l6ZTsKKworICAvKiBBIDEtYnl0ZSB1bnNp Z25lZCBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYSBzZWdtZW50IHNl bGVjdG9yCisgICAgIG9uIHRoZSB0YXJnZXQgc3lzdGVtLiAqLworICB1bnNpZ25lZCBjaGFyIHNl Z21lbnRfY29sbGVjdG9yX3NpemU7CisKKyAgLyogQSA0LWJ5dGUgY291bnQgb2YgdGhlIG51bWJl ciBvZiBvZmZzZXRzIHRoYXQgZm9sbG93IHRoZSBoZWFkZXIuICovCisgIHVuc2lnbmVkIGludCBv ZmZzZXRfZW50cnlfY291bnQ7Cit9OworCiAvKiBUeXBlIHVzZWQgZm9yIGRlbGF5aW5nIGNvbXB1 dGF0aW9uIG9mIG1ldGhvZCBwaHlzbmFtZXMuCiAgICBTZWUgY29tbWVudHMgZm9yIGNvbXB1dGVf ZGVsYXllZF9waHlzbmFtZXMuICAqLwogc3RydWN0IGRlbGF5ZWRfbWV0aG9kX2luZm8KQEAgLTQ5 Myw2ICs1MjMsOSBAQCBzdHJ1Y3QgZHdhcmYyX2N1CiAgICAgIHdoZXRoZXIgdGhlIERXX0FUX3Jh bmdlcyBhdHRyaWJ1dGUgY2FtZSBmcm9tIHRoZSBza2VsZXRvbiBvciBEV08uICAqLwogICBVTE9O R0VTVCByYW5nZXNfYmFzZSA9IDA7CiAKKyAgLyogVGhlIERXX0FUX2xvY2xpc3RzX2Jhc2UgYXR0 cmlidXRlIGlmIHByZXNlbnQuICovCisgIGdkYjo6b3B0aW9uYWw8VUxPTkdFU1Q+IGxvY2xpc3Rf YmFzZTsKKwogICAvKiBXaGVuIHJlYWRpbmcgZGVidWcgaW5mbyBnZW5lcmF0ZWQgYnkgb2xkZXIg dmVyc2lvbnMgb2YgcnVzdGMsIHdlCiAgICAgIGhhdmUgdG8gcmV3cml0ZSBzb21lIHVuaW9uIHR5 cGVzIHRvIGJlIHN0cnVjdCB0eXBlcyB3aXRoIGEKICAgICAgdmFyaWFudCBwYXJ0LiAgVGhpcyBy ZXdyaXRpbmcgbXVzdCBiZSBkb25lIGFmdGVyIHRoZSBDVSBpcyBmdWxseQpAQCAtMTM1Nyw2ICsx MzkwLDkgQEAgc3RhdGljIHZvaWQgcmVhZF92YXJpYWJsZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKIHN0YXRpYyBpbnQgZHdhcmYyX3Jhbmdlc19yZWFkICh1 bnNpZ25lZCwgQ09SRV9BRERSICosIENPUkVfQUREUiAqLAogCQkJICAgICAgIHN0cnVjdCBkd2Fy ZjJfY3UgKiwgZHdhcmYyX3BzeW10YWIgKik7CiAKKy8qIFJldHVybiB0aGUgLmRlYnVnX2xvY2xp c3Qgc2VjdGlvbiB0byB1c2UgZm9yIGN1LiAqLworc3RhdGljIHN0cnVjdCBkd2FyZjJfc2VjdGlv bl9pbmZvICpjdV9kZWJ1Z19sb2Nfc2VjdGlvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UpOworCiAv KiBIb3cgZHdhcmYyX2dldF9wY19ib3VuZHMgY29uc3RydWN0ZWQgaXRzICpMT1dQQyBhbmQgKkhJ R0hQQyByZXR1cm4KICAgIHZhbHVlcy4gIEtlZXAgdGhlIGl0ZW1zIG9yZGVyZWQgd2l0aCBpbmNy ZWFzaW5nIGNvbnN0cmFpbnRzIGNvbXBsaWFuY2UuICAqLwogZW51bSBwY19ib3VuZHNfa2luZApA QCAtODY3OCw2ICs4NzE0LDcgQEAgc2tpcF9vbmVfZGllIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRl cl9zcGVjcyAqcmVhZGVyLCBjb25zdCBnZGJfYnl0ZSAqaW5mb19wdHIsCiAJY2FzZSBEV19GT1JN X0dOVV9hZGRyX2luZGV4OgogCWNhc2UgRFdfRk9STV9HTlVfc3RyX2luZGV4OgogCWNhc2UgRFdf Rk9STV9ybmdsaXN0eDoKKwljYXNlIERXX0ZPUk1fbG9jbGlzdHg6CiAJICBpbmZvX3B0ciA9IHNh ZmVfc2tpcF9sZWIxMjggKGluZm9fcHRyLCBidWZmZXJfZW5kKTsKIAkgIGJyZWFrOwogCWNhc2Ug RFdfRk9STV9pbmRpcmVjdDoKQEAgLTEyMTM1LDYgKzEyMTcyLDExIEBAIGR3YXJmMl9sb2NhdGVf ZHdvX3NlY3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqZHdvX3NlY3Rp b25zX3B0cikKICAgICAgIGR3b19zZWN0aW9ucy0+bG9jLnMuc2VjdGlvbiA9IHNlY3RwOwogICAg ICAgZHdvX3NlY3Rpb25zLT5sb2Muc2l6ZSA9IGJmZF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKICAg ICB9CisgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5hbWUsICZuYW1lcy0+bG9jbGlz dHNfZHdvKSkKKyAgICB7CisgICAgICBkd29fc2VjdGlvbnMtPmxvY2xpc3RzLnMuc2VjdGlvbiA9 IHNlY3RwOworICAgICAgZHdvX3NlY3Rpb25zLT5sb2NsaXN0cy5zaXplID0gYmZkX3NlY3Rpb25f c2l6ZSAoc2VjdHApOworICAgIH0KICAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFt ZSwgJm5hbWVzLT5tYWNpbmZvX2R3bykpCiAgICAgewogICAgICAgZHdvX3NlY3Rpb25zLT5tYWNp bmZvLnMuc2VjdGlvbiA9IHNlY3RwOwpAQCAtMTc2MDgsNiArMTc2NTAsOSBAQCByZWFkX2Z1bGxf ZGllXzEgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCiAgIHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHIgPSBkd2FyZjJfYXR0cl9ub19mb2xsb3cgKGRpZSwgRFdfQVRfc3RyX29m ZnNldHNfYmFzZSk7CiAgIGlmIChhdHRyICE9IG51bGxwdHIpCiAgICAgY3UtPnN0cl9vZmZzZXRz X2Jhc2UgPSBEV19VTlNORCAoYXR0cik7CisgIGF0dHIgPSBkd2FyZjJfYXR0cl9ub19mb2xsb3cg KGRpZSwgRFdfQVRfbG9jbGlzdHNfYmFzZSk7CisgIGlmIChhdHRyKQorICAgIGN1LT5sb2NsaXN0 X2Jhc2UgPSBEV19VTlNORCAoYXR0cik7CiAKICAgYXV0byBtYXliZV9hZGRyX2Jhc2UgPSBsb29r dXBfYWRkcl9iYXNlKGRpZSk7CiAgIGlmIChtYXliZV9hZGRyX2Jhc2UuaGFzX3ZhbHVlICgpKQpA QCAtMTg0MTEsNiArMTg0NTYsNzggQEAgcGFydGlhbF9kaWVfaW5mbzo6Zml4dXAgKHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogICBmaXh1cF9jYWxsZWQgPSAxOwogfQogCitzdGF0aWMgdm9pZAorcmVh ZF9sb2NsaXN0X2hlYWRlciAoc3RydWN0IGxvY2xpc3RfaGVhZGVyICpoZWFkZXIsIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uKQoreworICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVh ZDsKKyAgYmZkICphYmZkID0gc2VjdGlvbi0+Z2V0X2JmZF9vd25lciAoKTsKKyAgY29uc3QgZ2Ri X2J5dGUgKmluZm9fcHRyID0gc2VjdGlvbi0+YnVmZmVyOworICBoZWFkZXItPmxlbmd0aCA9IHJl YWRfaW5pdGlhbF9sZW5ndGggKGFiZmQsIGluZm9fcHRyLCAmYnl0ZXNfcmVhZCk7CisgIGluZm9f cHRyICs9IGJ5dGVzX3JlYWQ7CisgIGhlYWRlci0+dmVyc2lvbiA9IHJlYWRfMl9ieXRlcyAoYWJm ZCwgaW5mb19wdHIpOworICBpbmZvX3B0ciArPSAyOworICBoZWFkZXItPmFkZHJfc2l6ZSA9IHJl YWRfMV9ieXRlIChhYmZkLCBpbmZvX3B0cik7CisgIGluZm9fcHRyICs9IDE7CisgIGhlYWRlci0+ c2VnbWVudF9jb2xsZWN0b3Jfc2l6ZSA9IHJlYWRfMV9ieXRlIChhYmZkLCBpbmZvX3B0cik7Cisg IGluZm9fcHRyICs9IDE7CisgIGhlYWRlci0+b2Zmc2V0X2VudHJ5X2NvdW50ID0gcmVhZF80X2J5 dGVzIChhYmZkLCBpbmZvX3B0cik7Cit9CisKKworc3RhdGljIFVMT05HRVNUCitsb29rdXBfbG9j bGlzdF9iYXNlIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK3sKKyAgLyogRm9yIHRoZSAuZHdvIHVu aXQsIHRoZSBsb2NsaXN0X2Jhc2UgcG9pbnRzIHRvIHRoZSBmaXJzdCBvZmZzZXQgZm9sbG93aW5n CisgICAgIHRoZSBoZWFkZXIuIFRoZSBoZWFkZXIgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBl bnRpdGllcy0KKyAgICAgMS4gVW5pdCBMZW5ndGggKDQgYnl0ZXMgZm9yIDMyIGJpdCBEV0FSRiBm b3JtYXQsIGFuZCAxMiBieXRlcyBmb3IgdGhlIDY0IGJpdCBmb3JtYXQpCisgICAgIDIuIHZlcnNp b24gKDIgYnl0ZXMpCisgICAgIDMuIGFkZHJlc3Mgc2l6ZSAoMSBieXRlKQorICAgICA0LiBzZWdt ZW50IHNlbGVjdG9yIHNpemUgKDEgYnl0ZSkKKyAgICAgNS4gb2Zmc2V0IGVudHJ5IGNvdW50ICg0 IGJ5dGVzKQorICAgICBUaGVzZSBzaXplcyBhcmUgZGVyaXZlZCBhcyBwZXIgdGhlIERXQVJGdjUg c3RhbmRhcmQuICovCisgIGlmIChjdS0+ZHdvX3VuaXQpCisgIHsKKyAgICBpZiAoY3UtPmhlYWRl ci5pbml0aWFsX2xlbmd0aF9zaXplID09IDQpCisgICAgICByZXR1cm4gTE9DTElTVF9IRUFERVJf U0laRTMyOworICAgIHJldHVybiBMT0NMSVNUX0hFQURFUl9TSVpFNjQ7CisgIH0KKyAgcmV0dXJu ICpjdS0+bG9jbGlzdF9iYXNlOworfQorCisvKiBHaXZlbiBhIERXX0ZPUk1fbG9jbGlzdHggdmFs dWUgbG9jbGlzdF9pbmRleCwgZmV0Y2ggdGhlIG9mZnNldCBmcm9tIHRoZSBhcnJheQorICAgb2Yg b2Zmc2V0cyBpbiB0aGUgLmRlYnVnX2xvY2xpc3RzIHNlY3Rpb24uICovCitzdGF0aWMgQ09SRV9B RERSCityZWFkX2xvY2xpc3RfaW5kZXggKHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBVTE9OR0VTVCBs b2NsaXN0X2luZGV4KQoreworICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkd2FyZjJfcGVy X29iamZpbGUKKwk9IGN1LT5wZXJfY3UtPmR3YXJmMl9wZXJfb2JqZmlsZTsKKyAgc3RydWN0IG9i amZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGU7CisgIGJmZCAqYWJm ZCA9IG9iamZpbGUtPm9iZmQ7CisgIFVMT05HRVNUIGxvY2xpc3RfYmFzZSA9IGxvb2t1cF9sb2Ns aXN0X2Jhc2UgKGN1KTsKKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24gPSBj dV9kZWJ1Z19sb2Nfc2VjdGlvbiAoY3UpOworICBzZWN0aW9uLT5yZWFkIChvYmpmaWxlKTsKKyAg aWYgKHNlY3Rpb24tPmJ1ZmZlciA9PSBOVUxMKQorICAgIGNvbXBsYWludChfKCJEV19GT1JNX2xv Y2xpc3R4IHVzZWQgd2l0aG91dCAuZGVidWdfbG9jbGlzdCBzZWN0aW9uIFtpbiBtb2R1bGUgJXNd IiksCisJb2JqZmlsZV9uYW1lIChvYmpmaWxlKSk7CisgIHN0cnVjdCBsb2NsaXN0X2hlYWRlciBo ZWFkZXI7CisgIHJlYWRfbG9jbGlzdF9oZWFkZXIgKCZoZWFkZXIsIHNlY3Rpb24pOworICBpZiAo bG9jbGlzdF9pbmRleCA+PSBoZWFkZXIub2Zmc2V0X2VudHJ5X2NvdW50KQorICAgIGNvbXBsYWlu dChfKCJEV19GT1JNX2xvY2xpc3R4IHBvaW50aW5nIG91dHNpZGUgb2YgIgorCSIuZGVidWdfbG9j bGlzdCBvZmZzZXQgYXJyYXkgW2luIG1vZHVsZSAlc10iKSwKKwlvYmpmaWxlX25hbWUgKG9iamZp bGUpKTsKKyAgaWYgKGxvY2xpc3RfYmFzZSArIGxvY2xpc3RfaW5kZXggKiBjdS0+aGVhZGVyLm9m ZnNldF9zaXplCisJPj0gc2VjdGlvbi0+c2l6ZSkKKyAgICBjb21wbGFpbnQoXygiRFdfRk9STV9s b2NsaXN0eCBwb2ludGluZyBvdXRzaWRlIG9mICIKKwkiLmRlYnVnX2xvY2xpc3Qgc2VjdGlvbiBb aW4gbW9kdWxlICVzXSIpLAorCW9iamZpbGVfbmFtZSAob2JqZmlsZSkpOworICBjb25zdCBnZGJf Ynl0ZSAqaW5mb19wdHIgPSAoc2VjdGlvbi0+YnVmZmVyICsgbG9jbGlzdF9iYXNlICsKKwlsb2Ns aXN0X2luZGV4ICogY3UtPmhlYWRlci5vZmZzZXRfc2l6ZSk7CisgIGlmIChjdS0+aGVhZGVyLm9m ZnNldF9zaXplID09IDQpCisgICAgcmV0dXJuIGJmZF9nZXRfMzIgKGFiZmQsIGluZm9fcHRyKSAr IGxvY2xpc3RfYmFzZTsKKyAgZWxzZQorICAgIHJldHVybiBiZmRfZ2V0XzY0IChhYmZkLCBpbmZv X3B0cikgKyBsb2NsaXN0X2Jhc2U7Cit9CisKIC8qIFByb2Nlc3MgdGhlIGF0dHJpYnV0ZXMgdGhh dCBoYWQgdG8gYmUgc2tpcHBlZCBpbiB0aGUgZmlyc3Qgcm91bmQuIFRoZXNlCiAgICBhdHRyaWJ1 dGVzIGFyZSB0aGUgb25lcyB0aGF0IG5lZWQgc3RyX29mZnNldHNfYmFzZSBvciBhZGRyX2Jhc2Ug YXR0cmlidXRlcy4KICAgIFRoZXkgY291bGQgbm90IGhhdmUgYmVlbiBwcm9jZXNzZWQgaW4gdGhl IGZpcnN0IHJvdW5kLCBiZWNhdXNlIGF0IHRoZSB0aW1lCkBAIC0xODQyNSw2ICsxODU0Miw5IEBA IHZvaWQgcmVhZF9hdHRyaWJ1dGVfcmVwcm9jZXNzIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9z cGVjcyAqcmVhZGVyLAogICAgICAgY2FzZSBEV19GT1JNX0dOVV9hZGRyX2luZGV4OgogICAgICAg ICBEV19BRERSIChhdHRyKSA9IHJlYWRfYWRkcl9pbmRleCAoY3UsIERXX1VOU05EIChhdHRyKSk7 CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBEV19GT1JNX2xvY2xpc3R4OgorCSBEV19VTlNO RCAoYXR0cikgPSByZWFkX2xvY2xpc3RfaW5kZXggKGN1LCBEV19VTlNORCAoYXR0cikpOworCSBi cmVhazsKICAgICAgIGNhc2UgRFdfRk9STV9zdHJ4OgogICAgICAgY2FzZSBEV19GT1JNX3N0cngx OgogICAgICAgY2FzZSBEV19GT1JNX3N0cngyOgpAQCAtMTg1MjksNiArMTg2NDksMTMgQEAgcmVh ZF9hdHRyaWJ1dGVfdmFsdWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIs CiAgICAgICBEV19VTlNORCAoYXR0cikgPSBjdS0+aGVhZGVyLnJlYWRfb2Zmc2V0IChhYmZkLCBp bmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwogICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKICAg ICAgIGJyZWFrOworICAgIGNhc2UgRFdfRk9STV9sb2NsaXN0eDoKKyAgICB7CisgICAgICAqbmVl ZF9yZXByb2Nlc3MgPSB0cnVlOworICAgICAgRFdfVU5TTkQgKGF0dHIpID0gcmVhZF91bnNpZ25l ZF9sZWIxMjggKGFiZmQsIGluZm9fcHRyLCAmYnl0ZXNfcmVhZCk7CisgICAgICBpbmZvX3B0ciAr PSBieXRlc19yZWFkOworICAgIH0KKyAgICAgIGJyZWFrOwogICAgIGNhc2UgRFdfRk9STV9zdHJp bmc6CiAgICAgICBEV19TVFJJTkcgKGF0dHIpID0gcmVhZF9kaXJlY3Rfc3RyaW5nIChhYmZkLCBp bmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwogICAgICAgRFdfU1RSSU5HX0lTX0NBTk9OSUNBTCAoYXR0 cikgPSAwOwpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1mb3JtLWxv Y2xpc3R4LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LWZvcm0tbG9jbGlzdHguYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hMmExNDU4M2JlCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3NS1mb3JtLWxvY2xpc3R4LmMK QEAgLTAsMCArMSwxNiBAQAorCisKK2ludCBmb28oaW50IGEsIGludCBiKQoreworICBhID0gYSti OworICBiID0gYS1iOworICBhID0gMipiOworICByZXR1cm4gYStiOworfQorCitpbnQgbWFpbigp Cit7CisgIGludCByZXN1bHQsYSxiOworICByZXN1bHQgPSBmb28oYSxiKTsKKyAgcmV0dXJuIHJl c3VsdDsKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzUtZm9ybS1s b2NsaXN0eC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LWZvcm0tbG9jbGlzdHgu ZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjE1ZDlhYzEzZTcKLS0t IC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHc1LWZvcm0tbG9jbGlz dHguZXhwCkBAIC0wLDAgKzEsNDIgQEAKKyMgQ29weXJpZ2h0IDIwMTItMjAyMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworbG9hZF9saWIgZHdh cmYuZXhwCisKKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1 cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KK2lmIHshW2R3YXJmMl9zdXBwb3J0XX0geworICAg IHJldHVybiAwICAKK30KKworc3RhbmRhcmRfdGVzdGZpbGUgLmMKKworCisjIFdlIGNhbid0IHVz ZSBwcmVwYXJlX2Zvcl90ZXN0aW5nIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHRvIGNoZWNrIHRoZQor IyAnZmlsZScgY29tbWFuZCdzIG91dHB1dC4KKworaWYgeyBbYnVpbGRfZXhlY3V0YWJsZSAke3Rl c3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfVwKKyAgIHthZGRpdGlvbmFsX2ZsYWdz PS1nZHdhcmYtNSBhZGRpdGlvbmFsX2ZsYWdzPS1nc3BsaXQtZHdhcmYgYWRkaXRpb25hbF9mbGFn cz0tTzJ9XSA9PSAtMSB9IHsKKyAgICByZXR1cm4gLTEKK30KKworZ2RiX2V4aXQKK2dkYl9zdGFy dAorZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisKKyMgQ2hlY2sgdGhhdCBm aWxlIGNvbW1hbmQgZ2l2ZXMgbm8gZXJyb3IuCitnZGJfdGVzdCAiZmlsZSAkYmluZmlsZSIgXAor ICAgICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAkYmluZmlsZVwuXC5cLiIKKworCi0tIAoyLjE3LjEK Cg== --_004_DM6PR12MB37385B6B54BF950DD743F7969AF60DM6PR12MB3738namp_--