From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 458243858401 for ; Thu, 2 Feb 2023 06:24:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 458243858401 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3125jlgZ001648; Thu, 2 Feb 2023 06:24:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pp1; bh=gR/T46zGgjIb1CPdLlNJEvJ9yh2HxXaeu0ghVCNRdh4=; b=XWJETVYkXCtk5NQJN4i2+cs79NsSpjyRoWbtjypJqmbpLXM2TlecKVjQfuwdoLJjukTM qa4v2iX3wME0/FtJEgn82WssdXVktb3/hUqpGODk1Rb+mpbw5yOvQFYYN2BdsHGanAHU fRjCjeTTiQoLjbtbtzPKlYxN1vHFvHiPj3pmili9HV/EuQ8VOkFxLUJmZ2Ff5vCxHJnO u1CC6zgjiLEuWGkAEkubnrqgz+uEnY5SIUI+FIAnDTmw0rBqDPkCykODPZVPTjdQl9h5 IC/vrhx0sPJgez3pKrwNFiuu+0zseXTno2ks46MRUSCJZBGs/ihew6ximuTsdG7j1uxG qQ== Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2168.outbound.protection.outlook.com [104.47.56.168]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3ng7ad0txm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 02 Feb 2023 06:24:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T1c7YDhhr2NleaShquwwHzGb42iSnAdPOzoq+wskcoLCAEZdOqxqm7hSduq81lan3SkfRYl1cKguoVA0G5XI2yiTb8xlbzg63VcXrddwvYSyiSyOU8Ckx9aFT6dQcliJZqPIsdrfTVf1wx2q5zXDQ0e5xpogVQTciYUwNiLuipMEwpWO0fUn8a4ANWGFr8CnNXFis2Y/dE+pCOzcINSyNSTU/ZSv9zeVzT2QnW3EQratKxl/hjip3tgMrnstOYOfsLybC4YuFh+RfznYsJIk/qcFRfPslTaWl8DaE4We4kxSwpiJGskbD7bds3mdGxAOv5hIPfhyzS4SEMrwafbDEg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gR/T46zGgjIb1CPdLlNJEvJ9yh2HxXaeu0ghVCNRdh4=; b=VsBUzfodskGVEv+lz2aCHG//oe84EH6MbB1w33BcP2wJ2wcIVSf0mz1UqSt8XVrrndJiTWZeFejdsGtpESpcheOa/zq7xuwb+qB06vV4sTfV+o2uvedJTS4TtUJs782v3gsEV/5o0jY43YkTjLGrbx4rFPMe5YvTYx5bjkn4etFFHHP3bVzrp1j9IwePrAvfs28qpjk6cwIUt7IwsC+n1dcqoBaddxLOqV2UcbV6r5jO64cWg/PjSXp6qTztnzD+g+noGvPfwpjb8tOpsle5jdzbpFgZ0pxxcKa8XO8s0BxDyfffVKafKt5i2FhYWJC6GrEBluVflOb9TLQtP1zuMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from CH2PR15MB3544.namprd15.prod.outlook.com (2603:10b6:610:5::26) by MW4PR15MB5134.namprd15.prod.outlook.com (2603:10b6:303:182::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36; Thu, 2 Feb 2023 06:24:30 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::1e54:c91e:9426:8880]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::1e54:c91e:9426:8880%5]) with mapi id 15.20.6043.038; Thu, 2 Feb 2023 06:24:29 +0000 From: Aditya Kamath1 To: Ulrich Weigand , "simark@simark.ca" , "gdb-patches@sourceware.org" CC: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Topic: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Thread-Index: AQHY6DximDPpCqTL9kGyFvcEZokFBq4jlIiAgBFljYeAAA2HgIAIORaygAMrdQCACMPAdYADi8KAgAAbf+aAABUYgIAADhDtgAjHItiAAgYnAIACq/WKgAVsGwCABC6K8oAAZcYAgAq8WQ+AADoMgIAFnB/fgAUxEICABkBkK4AWHiQAgAFvY+iAAawUgIADF3ySgAshzACACvn7HoAI6B4p Date: Thu, 2 Feb 2023 06:24:29 +0000 Message-ID: References: <0866c91331b08f2870fad6e6a13fbcd1a9823b48.camel@de.ibm.com> <5df6ab523034d1997ffda5bb06c3bd87777dcccb.camel@de.ibm.com> <0dba07cfad3da44c0281c53702d73f807bca7d06.camel@de.ibm.com> <5956432ab1e0eedc8f65e01d3793a80ccf3a3a1f.camel@de.ibm.com> <139ff3da5e35905c963869569bebf280733740c2.camel@de.ibm.com> <8302c3570292b864ab21176e58bdee546f6e4544.camel@de.ibm.com> <5324a4027099ed44a32b3de8db71df875e034deb.camel@de.ibm.com> <37f1252e8d8bc1bad3f7a4ac9b38749ee6791e17.camel@de.ibm.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-IN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR15MB3544:EE_|MW4PR15MB5134:EE_ x-ms-office365-filtering-correlation-id: 6548d11b-767f-4846-ebfb-08db04e6240f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Uz4u9xY6XaqzxSrdxcGoYlG24t60F4kq4DFIzyg3RTZqxZT9/ZC2yIDIkiJNJDR70d2uetI0llK2DprIKGi1z02/WVGNFxIpbrIpkGVq6x25nwxl+/l0kE7Nxry0wGh5BHe3Wok4JVPKdRX1rJUGe95+OT5H40ObnV9VyOUsccoYcOjT6uC0XIJPilLkb970btme9V8uvIr8CemYDbbE1QlAO/DgRnoMT3a7TaSLlArOnhPW+9pR5GJLrOoVv8UyC/8kPv7IvIETCdtxEf/Dgys+1Fzsb8le3K4nZf6DSRpvG004Y0PaDkRABjcu2bO60ZKL5v7CZY0wBUiqiSkOHTYlX3qBYdzZhrVlgtp222cGtZvU9KZXK2AYraVIvQTIzD73n847WBqE1AzT/1kT2qEwGPau7ZknK9W1S4xUML23oRl0fB0xiBwA5caqruXUft2SLQ4Ev8H4soxfgYLlyVTeqMNn/F/uuT6bn9gYkMSuRv0zWpTFqnZIxn8+yApEiyYxVmTmKjyDWewu/HD0ZBEvzbPqRzFdtVoL2hFnHdFpZDmuwGh5qDRpWZLB+T4ZD57k/kGnDP4v7IUsRr4JspJoWV54sje2HHUHnUHP+TwyI8k4WAjol2w4atMuqFveCZfmUmThmKKcravcD6oLfWSL185ryFQth0DkhcoE7t2U1hnKxOeNPycRkmuC2o43DYZ8+oRrz/QqHxg6rOrSYg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR15MB3544.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(136003)(346002)(376002)(396003)(39860400002)(366004)(451199018)(19627405001)(110136005)(91956017)(66476007)(4326008)(76116006)(64756008)(66446008)(8676002)(66946007)(122000001)(8936002)(52536014)(5660300002)(316002)(38100700002)(86362001)(66556008)(38070700005)(33656002)(99936003)(71200400001)(53546011)(186003)(9686003)(6506007)(55016003)(30864003)(478600001)(2906002)(83380400001)(7696005)(41300700001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?a9rODk/EtYb1RrTmc8ShRkB0UUj6fz3pa9cjHEOPN9VydOicZyTJXQblOM?= =?iso-8859-1?Q?YcnAQ1Y4obfERv4Xmnjb2uboelE9//RJ/iqAVglbuOy2WR9NCaO2paxEZJ?= =?iso-8859-1?Q?Qy+d0bLQFZOWSaB9lMG4WeA8EkqeKaCiN+Vl1oor1dGmTJpfbDOCqIcKQ2?= =?iso-8859-1?Q?/HZBaAv1LOLELYS8ECDFoqJAJBFZtGd9FBOGEjxJ8Oxi7jfCur+WoD0js1?= =?iso-8859-1?Q?J27Q1bSckjIB+/4pPpfgrl16QOzF9IrDVAZtyBwpG5CLkdabbbyhCNOQTR?= =?iso-8859-1?Q?brojFTJOMCgLEmJZ9dxIy1a9hpAOx1yThmv8JxR71QouSK4BsZq02h/GzG?= =?iso-8859-1?Q?X30e0Uc7sr+x8eLiPrZ8YgBOm2bqUFEdsPud/VkEZYYwzWg8MURt37dzeS?= =?iso-8859-1?Q?UejBnY4ENtBVtYHQl1mKxhMh//QR4LKaDJLNekyF1A9lukC9LB5VG6s9j9?= =?iso-8859-1?Q?5WIoUBdZBbP7wT3V3hTf9a9EMcKlcSJ4uskEKLaWBd3bpm/t08qt3iCssG?= =?iso-8859-1?Q?GSftPG/59Al9KuNNmJKmjFGfoauHmXlR6MTrOkKEl2YL2cERyxMS2gb6gk?= =?iso-8859-1?Q?65NQUwv4jdV3eT2P6VRldoWTxY1D1PYKAf7WvOfLo993zrV08Byy7GFN/C?= =?iso-8859-1?Q?nWEtRLHRprvYXXCyZdESkwqpW974itzq8i9SHmj8iIRWG3sJ4mHq9qbKPo?= =?iso-8859-1?Q?ZfdknOl3NZqVrx+zZCUnmdGM8of5v+7+kJd7Z2HS5DyqDTtv46iig4w1Gw?= =?iso-8859-1?Q?UjeBbJCBplR2lfuZ+7TsGwZ3xNJ4wqi/Q7iBQIrEbXG1CuGy7VWg4OWMqN?= =?iso-8859-1?Q?Wl6sAxQUR4qz78E4lhS1ScdOOB/RVlONq3K/rF7A1TSPpRns9JktdnvFi6?= =?iso-8859-1?Q?wYUfNiIkfxFM7c6wI8mLPbWfC3AojuNqUfrYFikjmPrpv5KHDZDi8kBFlw?= =?iso-8859-1?Q?UiYCMeKg6GEE0G5ucPCLJWNJbGQvkmi4xeBB9Cbtjzu/Vj1Ec0To9Ym6kU?= =?iso-8859-1?Q?MqmN+DqqEgbExegrzdEPllqTOO0vSvkR0wD2p4XoSmXD9eTg1IyhxrVQcQ?= =?iso-8859-1?Q?uNmOIQbPSQvLbv//VrvqUjh0aHt297oHcH4KdQ8hvXWqUnIcXnvzvuVhn3?= =?iso-8859-1?Q?yJSxRxL2TTf3aDOPmLwYa11sCsJPZZxzqBFStQnJ3dIuwAEGnNkTtExS95?= =?iso-8859-1?Q?OlDvYLsmg2cdijrfyOI46uAJEXUmyfrBTvpvl3O/0fjXwcB+veDG76Wadn?= =?iso-8859-1?Q?pWc2ZltKWQrIIzevSD3P8GoyYzjr418MJCx39m+X3SsWYEE1EotLY8nVAw?= =?iso-8859-1?Q?fMZtJRuzDiE/+Gm7nbxRQj78jhZd2Tj7R9lIHOrdTM1b/ulqpmRqkgKVrs?= =?iso-8859-1?Q?Z68nsljE5LIRV8ZpkQWa+/z4pBZfpHEvWnCSy4FozE5K0WNL3zjqyTG1y6?= =?iso-8859-1?Q?0irRDh0eiNIEriSaeQP9agAACv3HwQ8Zv2MVG7apI95CZ0pX/+GUkdldoM?= =?iso-8859-1?Q?iC+jdsOWH6VbnTXHBpA3O9mxt5r2K/5HXL0DogTlqsTkfPfYEWvF0/FOM2?= =?iso-8859-1?Q?AJS9TkHwy8+3brQAt/g6KXtFuyzWWiU2Q8fCweRpYSvgw4kHqZ1iK3U3YD?= =?iso-8859-1?Q?N746UVisuLdcdSPuRBQXrMCo/A66EelJhJE24KPYh22tQ3hyLq/UlMc8V0?= =?iso-8859-1?Q?S32iXVcDrjpRRBCtBaKye83ydf5fAVAfd3sfRb7u?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB35441F7D3B1CDE3E82AFC505D6D69CH2PR15MB3544namp_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR15MB3544.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6548d11b-767f-4846-ebfb-08db04e6240f X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Feb 2023 06:24:29.6600 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bcilUWCdquma/6JXDOmeQsORfn7NpiAfFMDecZIwuTlRZHOW7Y/mGQPVdQl/ikNhlnHtfCk0+JOUwpO4HZxd/A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR15MB5134 X-Proofpoint-ORIG-GUID: OiYVy-jO1vqOb3qBqCAu3BQkHLh659IE X-Proofpoint-GUID: OiYVy-jO1vqOb3qBqCAu3BQkHLh659IE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-01_15,2023-01-31_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=999 priorityscore=1501 malwarescore=0 suspectscore=0 mlxscore=0 clxscore=1015 adultscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302020056 X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_004_CH2PR15MB35441F7D3B1CDE3E82AFC505D6D69CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB35441F7D3B1CDE3E82AFC505D6D69CH2PR15MB3544namp_" --_000_CH2PR15MB35441F7D3B1CDE3E82AFC505D6D69CH2PR15MB3544namp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Tom, Ulrich and community, Thank you for the feedback for the fix of this bug. Please find attached th= e patch. {See: 0001-Fix-multi-thread-debug-bug-in-AIX.patch}. So, I have fixed the bug and it works alright. Please find the test program= , output with patch and without patch pasted below this email. >> We now have all variables {pd_able, pd_active and pd_session} now in a >> map of process ID and structure. This will help us make AIX GDB code >> easy to manage them per process in the aix-thread.c file. >I don't really know what this is about, but it's probably better to >attach the data directly to the inferior using the registry system. >(You can't use private_inferior as apparently that's reserved for the >process stratum.) >Search for registry for some examples. >It's better to pass in a ptid or even the aix_thread_variables object >itself than to rely on globals in low-level functions like this. So, I have taken care of this. Now we use the registry. Thank you for this = suggestion. I was not knowing this. This is a very nice feature. >> Secondly, in the function pid_to_str () there is a beneath () call, >> which is why I had to put this function in rs6000-aix-nat.c file. >I wonder why it's necessary, as it seems to me that >aix_thread_target::pid_to_str should have already handled the 'thread' >case, so the inherited method ought to be good enough. This I have removed. I made a mistake while analysing this solution. Thank = you for pointing it out. It works without it. Kindly check the output below. >Is there an existing gdb test case that exercises this code? >If not then it seems like a new test is warranted. This I am not aware of at least when I tried finding. What we need is a tes= t case to check if the shared library is loaded for every new inferior born= and the top target is set correctly in case of thread debugging. If something exists, I would like to know. >> + return object_bfd; >> + it++; >This doesn't look right to me at all. Using a global means that BFDs >from one inferior might "leak" to another, based solely on whether a >certain name was ever seen. Also nothing ever cleans out the global >vector. >It's better to attach this data to the relevant BFD using the registry >system, and not use a global at all. So we already attach this data using the lines here in the same function. std::string fname =3D string_printf ("%s%s", bfd_get_filename (archive_bfd.get ()), sep); bfd_set_filename (object_bfd.get (), fname.c_str ()); All we need to the right match for the name of the shared library. So, we a= lready have a pathname variable. I used it and removed the vector. Kindly s= ee it in the patch. You were right. There is nothing that could have clean = that vector. Kindly give me feedback if we can do anything better or is incorrect. If no= t, kindly push this patch so that AIX folks can have a better debugging exp= erience. Have a nice day ahead. Thanks and regards, Aditya. ------------------------------------------- Code:- #include #include #include #include #include pthread_barrier_t barrier; #define NUM_THREADS 2 void * thread_function (void *arg) { /* This ensures that the breakpoint is only hit after both threads are created, so the test can always switch to the non-event thread when the breakpoint triggers. */ pthread_barrier_wait (&barrier); pid_t child; child =3D fork (); if (child > 0) printf ("I am parent \n"); else { child =3D fork (); if (child > 0) printf ("I am child \n"); else printf ("I am grandchild \n"); } while (1); /* break here */ } int main (void) { int i; pthread_t thread[NUM_THREADS]; alarm (300); pthread_barrier_init (&barrier, NULL, NUM_THREADS); for (i =3D 0; i < NUM_THREADS; i++) { int res; res =3D pthread_create (&thread[i], NULL, thread_function, NULL); assert (res =3D=3D 0); } while (1) { sleep (15); } return 0; } ------------------------ Output with patch:- Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... (gdb) set detach-on-fork off (gdb) r Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork [New Thread 258] [New Thread 515] [New inferior 2 (process 15728962)] I am parent [New inferior 3 (process 20382144)] I am parent ^C Thread 1.1 received signal SIGINT, Interrupt. [Switching to Thread 1] 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info threads Id Target Id Frame * 1.1 Thread 1 (tid 34144675, running) 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.2 Thread 258 (tid 30146951, running) thread_function (arg=3D0x0) at /home/aditya/gdb_tests/ultimate-multi-thread-fork.c:32 1.3 Thread 515 (tid 37159321, running) thread_function (arg=3Dwarning: (= Internal error: pc 0x0 in read in psymtab, but not in symtab.) 0x0) at /home/aditya/gdb_tests/ultimate-multi-thread-fork.c:32 2.1 process 15728962 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) 3.1 process 20382144 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info sharedlibrary =46rom To Syms Read Shared Object Library 0xd05bc124 0xd05bf194 Yes (*) /usr/lib/libpthreads.a(shr_comm.o) 0xd05bb240 0xd05bb9a1 Yes (*) /usr/lib/libcrypt.a(shr.o) 0xd0576180 0xd05ba731 Yes (*) /usr/lib/libpthread.a(shr_xpg5.o) 0xd0100e00 0xd0575123 Yes (*) /usr/lib/libc.a(shr.o) (*): Shared library is missing debugging information. (gdb) inferior 2 [Switching to inferior 2 [process 15728962] (/home/aditya/gdb_tests/ultimat= e-multi-thread-fork)] [Switching to thread 2.1 (process 15728962)] #0 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) ---------------------------- Output without patch:- Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... (gdb) set detach-on-fork off (gdb) r Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork [New Thread 1] [New Thread 258] [New Thread 515] [New inferior 2 (process 11731200)] I am parent [New inferior 3 (process 16843200)] I am parent ^C Thread 1.1 received signal SIGINT, Interrupt. 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) inferior 2 [Switching to inferior 2 [process 11731200] (/home/aditya/gdb_tests/ultimat= e-multi-thread-fork)] [Switching to thread 2.1 (process 11731200)] #0 0xd0594fc8 in ?? () (gdb) info threads Id Target Id Frame 1.1 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.2 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.3 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.4 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) * 2.1 process 11731200 0xd0594fc8 in ?? () 3.1 process 16843200 0xd0594fc8 in ?? () (gdb) info sharedlibrary warning: "/usr/lib/libpthreads.a": member "shr_comm.o" missing. warning: "/usr/lib/libcrypt.a": member "shr.o" missing. warning: "/usr/lib/libpthread.a": member "shr_xpg5.o" missing. warning: "/usr/lib/libc.a": member "shr.o" missing. warning: Could not load shared library symbols for 4 libraries, e.g. /usr/l= ib/libpthreads.a(shr_comm.o). Use the "info sharedlibrary" command to see the complete listing. Do you need "set solib-search-path" or "set sysroot"? =46rom To Syms Read Shared Object Library No /usr/lib/libpthreads.a(shr_comm.o) No /usr/lib/libcrypt.a(shr.o) No /usr/lib/libpthread.a(shr_xpg5.o) No /usr/lib/libc.a(shr.o) (gdb) ________________________________ From: Gdb-patches on behalf of Aditya Kamath1 via Gdb-patches Sent: 27 January 2023 20:10 To: Ulrich Weigand ; simark@simark.ca ; gdb-patches@sourceware.org Cc: Sangamesh Mallayya Subject: [EXTERNAL] Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Hi Ulrich and community, Thank you for the feedback for the fix of this bug. Please find attached th= e patch. {See: 0001-Fix-multi-thread-debug-bug-in-AIX.patch} So, I have fixed the bug and it works alright. Please find the test program= , output with patch and without patch pasted below this email. >+ if (s.find (member_name) !=3D std::string::npos) >+ { >+ return object_bfd; >+ } >This matches the member name *anywhere* in the full >filename, >which could lead to spurious matches, I think. The test >should be more specific. This I have taken care in the patch. There are a few changes for which I want to explain below. We now have all variables {pd_able, pd_active and pd_session} now in a map = of process ID and structure. This will help us make AIX GDB code easy to ma= nage them per process in the aix-thread.c file. Secondly, in the function pid_to_str () there is a beneath () call, which i= s why I had to put this function in rs6000-aix-nat.c file. Third thing is previously if there was no object file, we would use pd_disa= ble () to disable thread debugging. This is incorrect now that we support m= ultiple inferiors. Since we rely on inferior_ptid with new object file func= tion till a point, we must disable only when we mourn the inferior or a pro= cess dies. Otherwise, there is every chance we will disable thread debuggin= g for a wrong inferior that can be currently inferior_ptid. It also creates= a mess disabling the pd_active for the wrong inferior in cases where a new= inferior is born who object file is being loaded. This change can be seen = in the patch. I have written comments for the remaining changes in the patch. Kindly give me feedback if we can do anything better or is incorrect. If no= t, kindly push this patch so that AIX folks can have a better debugging exp= erience. Have a nice day ahead. Thanks and regards, Aditya. ------------------------------------------- Code:- #include #include #include #include #include pthread_barrier_t barrier; #define NUM_THREADS 2 void * thread_function (void *arg) { /* This ensures that the breakpoint is only hit after both threads are created, so the test can always switch to the non-event thread when the breakpoint triggers. */ pthread_barrier_wait (&barrier); pid_t child; child =3D fork (); if (child > 0) printf ("I am parent \n"); else { child =3D fork (); if (child > 0) printf ("I am child \n"); else printf ("I am grandchild \n"); } while (1); /* break here */ } int main (void) { int i; pthread_t thread[NUM_THREADS]; alarm (300); pthread_barrier_init (&barrier, NULL, NUM_THREADS); for (i =3D 0; i < NUM_THREADS; i++) { int res; res =3D pthread_create (&thread[i], NULL, thread_function, NULL); assert (res =3D=3D 0); } while (1) { sleep (15); } return 0; } --------------------------------------------------- Output with patch applied:- Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... (gdb) set detach-on-fork off (gdb) r Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork [New Thread 258] [New Thread 515] [New inferior 2 (Process 17498448)] I am parent [New inferior 3 (Process 11731454)] I am parent ^C Thread 1.1 received signal SIGINT, Interrupt. [Switching to Thread 1] 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) inferior 2 [Switching to inferior 2 [Process 17498448] (/home/aditya/gdb_tests/ultimat= e-multi-thread-fork)] [Switching to thread 2.1 (Process 17498448)] #0 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info threads Id Target Id Frame 1.1 Thread 1 (tid 25231849, running) 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.2 Thread 258 (tid 33227061, running) thread_function (arg=3D0x0) at /home/aditya/gdb_tests/ultimate-multi-thread-fork.c:32 1.3 Thread 515 (tid 23069149, running) thread_function (arg=3Dwarning: (= Internal error: pc 0x0 in read in psymtab, but not in symtab.) 0x0) at /home/aditya/gdb_tests/ultimate-multi-thread-fork.c:32 * 2.1 Process 17498448 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) 3.1 Process 11731454 0xd0594fc8 in _sigsetmask () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) info sharedlibrary =46rom To Syms Read Shared Object Library 0xd05bc124 0xd05bf194 Yes (*) /usr/lib/libpthreads.a(shr_comm.o) 0xd05bb240 0xd05bb9a1 Yes (*) /usr/lib/libcrypt.a(shr.o) 0xd0576180 0xd05ba731 Yes (*) /usr/lib/libpthread.a(shr_xpg5.o) 0xd0100e00 0xd0575123 Yes (*) /usr/lib/libc.a(shr.o) (*): Shared library is missing debugging information. -------------------------------------------------------- Output without patch:- Reading symbols from /home/aditya/gdb_tests/ultimate-multi-thread-fork... (gdb) set detach-on-fork off (gdb) r Starting program: /home/aditya/gdb_tests/ultimate-multi-thread-fork [New Thread 1] [New Thread 258] [New Thread 515] [New inferior 2 (process 11731200)] I am parent [New inferior 3 (process 16843200)] I am parent ^C Thread 1.1 received signal SIGINT, Interrupt. 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) inferior 2 [Switching to inferior 2 [process 11731200] (/home/aditya/gdb_tests/ultimat= e-multi-thread-fork)] [Switching to thread 2.1 (process 11731200)] #0 0xd0594fc8 in ?? () (gdb) info threads Id Target Id Frame 1.1 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.2 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.3 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) 1.4 process 15270316 0xd0595fb0 in _p_nsleep () from /usr/lib/libpthread.a(shr_xpg5.o) * 2.1 process 11731200 0xd0594fc8 in ?? () 3.1 process 16843200 0xd0594fc8 in ?? () (gdb) info sharedlibrary warning: "/usr/lib/libpthreads.a": member "shr_comm.o" missing. warning: "/usr/lib/libcrypt.a": member "shr.o" missing. warning: "/usr/lib/libpthread.a": member "shr_xpg5.o" missing. warning: "/usr/lib/libc.a": member "shr.o" missing. warning: Could not load shared library symbols for 4 libraries, e.g. /usr/l= ib/libpthreads.a(shr_comm.o). Use the "info sharedlibrary" command to see the complete listing. Do you need "set solib-search-path" or "set sysroot"? =46rom To Syms Read Shared Object Library No /usr/lib/libpthreads.a(shr_comm.o) No /usr/lib/libcrypt.a(shr.o) No /usr/lib/libpthread.a(shr_xpg5.o) No /usr/lib/libc.a(shr.o) (gdb) ________________________________ From: Ulrich Weigand Sent: 20 January 2023 20:14 To: simark@simark.ca ; Aditya Kamath1 ; gdb-patches@sourceware.org Cc: Sangamesh Mallayya Subject: Re: [PATCH] 0001-Fix-multi-thread-debug-bug-in-AIX.patch Aditya Kamath1 wrote: >Inorder to resolve the same I request for one information. How can we iter= ate_over_threads >of a particular process. What is that function. Is there any built-in avai= lable?? >Kindly let me know and that should solve this issue. Instead of iterate_over_threads you could use the all_threads() iterator di= rectly; this can be specialized to only return threads of one inferior like this: for (thread_info *tp : all_threads (proc_target, ptid_t (pid))) { ... } >Also kindly give me feedback on this patch if I need to change anything. I think this change in solib-aix.c is not quite correct: + std::string s =3D bfd_get_filename (object_bfd.get ()); + if (s.find (member_name) !=3D std::string::npos) + { + return object_bfd; + } This matches the member name *anywhere* in the full filename, which could lead to spurious matches, I think. The test should be more specific. Bye, Ulrich --_000_CH2PR15MB35441F7D3B1CDE3E82AFC505D6D69CH2PR15MB3544namp_-- --_004_CH2PR15MB35441F7D3B1CDE3E82AFC505D6D69CH2PR15MB3544namp_ Content-Type: application/octet-stream; name="0001-Fix-multi-thread-debug-bug-in-AIX.patch" Content-Description: 0001-Fix-multi-thread-debug-bug-in-AIX.patch Content-Disposition: attachment; filename="0001-Fix-multi-thread-debug-bug-in-AIX.patch"; size=20504; creation-date="Thu, 02 Feb 2023 06:22:46 GMT"; modification-date="Thu, 02 Feb 2023 06:22:47 GMT" Content-Transfer-Encoding: base64 RnJvbSA0MTRlZWY4YTk1ZTYwMDJmN2M5NmE0M2Y5Yjg0YWFhNWJkZTg1NzBj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogV2Vk LCAxIEZlYiAyMDIzIDIzOjU0OjExIC0wNjAwClN1YmplY3Q6IFtQQVRDSF0g Rml4IE11bHRpIHRocmVhZCBkZWJ1ZyBidWcgZml4IGluIEFJWAoKIEluIHRo ZSByZWNlbnQgY29tbWl0IDk4ZWQyNGZiMzVkODllYjIwMTc5ZWRmNmMxMmY1 OTljN2E5ZTIyOGUgbWFkZSBieSBNci4gVG9tIHRoZXJlIGlzIGEgY2hhbmdl IGluIGFpeC10aHJlYWQuYyBmaWxlIHRoYXQgY2hhbmdlcwoKIHN0YXRpY19j YXN0IDxhaXhfdGhyZWFkX2luZm8gKj4gaW4gZ2RiIHRvIGdkYjo6Y2hlY2tl ZF9zdGF0aWNfY2FzdCA8YWl4X3RocmVhZF9pbmZvICo+CgogQUlYIGZvbGtz IHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiB3aWxsIG5vdCBiZSBhYmxlIHRv IGRlYnVnIG11bHRpIHRocmVhZCBwcm9ncmFtcyBhcyBhIHJlc3VsdCBvZiBp dAoKVGhlIGVycm9yIGluIEFJWCBpcyBhcyBmb2xsb3dzOi0KCmludGVybmFs LWVycm9yIGNoZWNrZWRfc3RhdGljX2Nhc3QgQXNzZXJ0aW9uIHJlc3VsdCAh PSBudWxscHRyIGZhaWxlZC4KClRoZSByZWFzb24gYmVpbmcgQUlYIHNoYXJl ZCBsaWJyYXJ5IHdlcmUgbm90IGJlaW5nIGxvYWRlZCBmb3IgYSBuZXcgaW5m ZXJpb3IgYW5kIHRvcCB0YXJnZXQgd2FzIG5vdCBzZXQgcHJvcGVybHkuCgpU aGlzIHBhdGNoIGlzIGEgZml4IGZvciB0aGUgc2FtZS4KLS0tCiBnZGIvYWl4 LXRocmVhZC5jIHwgMjc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCiBnZGIvc29saWItYWl4LmMgIHwgIDEwICsr CiAyIGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCA4MCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nZGIvYWl4LXRocmVhZC5jIGIvZ2Ri L2FpeC10aHJlYWQuYwppbmRleCBlNTU2YzE1MzU3Ni4uYWRjMTdjODZkNjYg MTAwNjQ0Ci0tLSBhL2dkYi9haXgtdGhyZWFkLmMKKysrIGIvZ2RiL2FpeC10 aHJlYWQuYwpAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgYm9vbCBkZWJ1Z19h aXhfdGhyZWFkOwogCiAvKiBSZXR1cm4gd2hldGhlciB0byB0cmVhdCBQSUQg YXMgYSBkZWJ1Z2dhYmxlIHRocmVhZCBpZC4gICovCiAKLSNkZWZpbmUgUERf VElEKHB0aWQpCShwZF9hY3RpdmUgJiYgcHRpZC50aWQgKCkgIT0gMCkKKyNk ZWZpbmUgUERfVElEKHB0aWQsIGRhdGEpCShkYXRhLT5wZF9hY3RpdmUgJiYg cHRpZC50aWQgKCkgIT0gMCkKIAogLyogU3VjY2VzcyBhbmQgZmFpbHVyZSB2 YWx1ZXMgcmV0dXJuZWQgYnkgcHRoZGIgY2FsbGJhY2tzLiAgKi8KIApAQCAt MTQ5LDE0ICsxNDksNiBAQCBzdGF0aWMgYWl4X3RocmVhZF90YXJnZXQgYWl4 X3RocmVhZF9vcHM7CiAKIHN0YXRpYyBDT1JFX0FERFIgcGRfYnJrX2FkZHI7 CiAKLS8qIFdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gaXMgZGVi dWdnYWJsZSBieSBwdGhkYi4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWJsZSA9 IDA7Ci0KLS8qIFdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlvbiBpcyBi ZWluZyBkZWJ1Z2dlZC4gICovCi0KLXN0YXRpYyBpbnQgcGRfYWN0aXZlID0g MDsKLQogLyogV2hldGhlciB0aGUgY3VycmVudCBhcmNoaXRlY3R1cmUgaXMg NjQtYml0LiAgCiAgICBPbmx5IHZhbGlkIHdoZW4gcGRfYWJsZSBpcyB0cnVl LiAgKi8KIApAQCAtMTkxLDkgKzE4Myw2MCBAQCBzdGF0aWMgcHRoZGJfY2Fs bGJhY2tzX3QgcGRfY2FsbGJhY2tzID0gewogICBOVUxMCiB9OwogCi0vKiBD dXJyZW50IHB0aGRiIHNlc3Npb24uICAqLworLyogQWl4IHZhcmlhYmxlIHN0 cnVjdHVyZS4gICovCitzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgCit7 CisgIC8qIFdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24gaXMgZGVi dWdnYWJsZSBieSBwdGhkYi4gICovCisgIGludCBwZF9hYmxlOworCisgIC8q IFdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlvbiBpcyBiZWluZyBkZWJ1 Z2dlZC4gICovCisgIGludCBwZF9hY3RpdmU7CisKKyAgLyogQ3VycmVudCBw dGhkYiBzZXNzaW9uLiAgKi8KKyAgcHRoZGJfc2Vzc2lvbl90IHBkX3Nlc3Np b247Cit9OworCisvKiBLZXkgdG8gb3VyIHBlci1pbmZlcmlvciBkYXRhLiAg Ki8KK3N0YXRpYyBjb25zdCByZWdpc3RyeTxpbmZlcmlvcj46OmtleTxhaXhf dGhyZWFkX3ZhcmlhYmxlcz4KKyAgYWl4X3RocmVhZF92YXJpYWJsZXNfaGFu ZGxlOworCisvKiBGdW5jdGlvbiB0byBHZXQgYWl4X3RocmVhZF92YXJpYWJs ZXMgZGF0YS4gICovCitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFi bGVzKgorZ2V0X2FpeF90aHJlYWRfdmFyaWFibGVzX2RhdGEgKHN0cnVjdCBp bmZlcmlvciAqaW5mKQoreworICBpZiAoaW5mID09IE5VTEwpCisgICAgcmV0 dXJuIE5VTEw7CisKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzKiBk YXRhOworCisgIGRhdGEgPSBhaXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUu Z2V0IChpbmYpOworICBpZiAoZGF0YSA9PSBOVUxMKQorICAgIGRhdGEgPSBh aXhfdGhyZWFkX3ZhcmlhYmxlc19oYW5kbGUuZW1wbGFjZSAoaW5mKTsKIAot c3RhdGljIHB0aGRiX3Nlc3Npb25fdCBwZF9zZXNzaW9uOworICByZXR1cm4g ZGF0YTsKK30KKworLyogSGVscGVyIHRvIGdldCBkYXRhIGZvciBwdGlkIGlu IGEgZnVuY3Rpb24uICAqLworCitzdGF0aWMgc3RydWN0IGFpeF90aHJlYWRf dmFyaWFibGVzKgorZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAo cHRpZF90IHB0aWQpCit7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxl cyAqZGF0YTsKKyAgaW5mZXJpb3IgKmluZiA9IGZpbmRfaW5mZXJpb3JfcHRp ZCAoY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCksCisJ CQkJCXB0aWQpOworICByZXR1cm4gZ2V0X2FpeF90aHJlYWRfdmFyaWFibGVz X2RhdGEgKGluZik7Cit9CisKKy8qIEhlbHBlciB0byBnZXQgZGF0YSBmb3Ig cGlkIGluIGEgZnVuY3Rpb24uICAqLworCitzdGF0aWMgc3RydWN0IGFpeF90 aHJlYWRfdmFyaWFibGVzKgorZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3Jf cGlkIChwaWRfdCBwaWQpCit7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3Zhcmlh YmxlcyAqZGF0YTsKKyAgaW5mZXJpb3IgKmluZiA9IGZpbmRfaW5mZXJpb3Jf cGlkIChjdXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQp OworICByZXR1cm4gZ2V0X2FpeF90aHJlYWRfdmFyaWFibGVzX2RhdGEgKGlu Zik7Cit9CiAKIC8qIFJldHVybiBhIHByaW50YWJsZSByZXByZXNlbnRhdGlv biBvZiBwdGhkZWJ1ZyBmdW5jdGlvbiByZXR1cm4KICAgIFNUQVRVUy4gICov CkBAIC0zMTYsOSArMzU5LDExIEBAIHN0YXRpYyB2b2lkCiBwaWRfdG9fcHJj IChwdGlkX3QgKnB0aWRwKQogewogICBwdGlkX3QgcHRpZDsKKyAgc3RydWN0 IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3Ro cmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAoKnB0aWRwKTsKIAogICBwdGlk ID0gKnB0aWRwOwotICBpZiAoUERfVElEIChwdGlkKSkKKyAgaWYgKFBEX1RJ RCAocHRpZCwgZGF0YSkpCiAgICAgKnB0aWRwID0gcHRpZF90IChwdGlkLnBp ZCAoKSk7CiB9CiAKQEAgLTUwOCwxNCArNTUzLDEzIEBAIHBkY19yZWFkX2Rh dGEgKHB0aGRiX3VzZXJfdCB1c2VyX2N1cnJlbnRfcGlkLCB2b2lkICpidWYs CiAgIC8qIFRoaXMgaXMgbmVlZGVkIHRvIGVsaW1pbmF0ZSB0aGUgZGVwZW5k ZW5jeSBvZiBjdXJyZW50IHRocmVhZAogICAgICB3aGljaCBpcyBudWxsIHNv IHRoYXQgdGhyZWFkIHJlYWRzIHRoZSBjb3JyZWN0IHRhcmdldCBtZW1vcnku ICAqLwogICB7Ci0gICAgc2NvcGVkX3Jlc3RvcmVfY3VycmVudF90aHJlYWQg cmVzdG9yZV9jdXJyZW50X3RocmVhZDsKKyAgICBzY29wZWRfcmVzdG9yZSBz YXZlX2luZmVyaW9yX3B0aWQgPSBtYWtlX3Njb3BlZF9yZXN0b3JlICgmaW5m ZXJpb3JfcHRpZCk7CiAgICAgLyogQmVmb3JlIHRoZSBmaXJzdCBpbmZlcmlv ciBpcyBhZGRlZCwgd2UgcGFzcyBpbmZlcmlvcl9wdGlkLnBpZCAoKQogICAg ICAgIGZyb20gcGRfZW5hYmxlICgpIHdoaWNoIGlzIDAuICBUaGVyZSBpcyBu byBuZWVkIHRvIHN3aXRjaCB0aHJlYWRzCiAgICAgICAgZHVyaW5nIGZpcnN0 IGluaXRpYWxpc2F0aW9uLiAgSW4gdGhlIHJlc3Qgb2YgdGhlIGNhbGxiYWNr cyB0aGUKICAgICAgICBjdXJyZW50IHRocmVhZCBuZWVkcyB0byBiZSBjb3Jy ZWN0LiAgKi8KICAgICBpZiAodXNlcl9jdXJyZW50X3BpZCAhPSAwKQotICAg ICAgc3dpdGNoX3RvX3RocmVhZCAoY3VycmVudF9pbmZlcmlvciAoKS0+cHJv Y2Vzc190YXJnZXQgKCksCi0JCQlwdGlkX3QgKHVzZXJfY3VycmVudF9waWQp KTsKKyAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkX3QgKHVzZXJfY3VycmVu dF9waWQpOwogICAgIHN0YXR1cyA9IHRhcmdldF9yZWFkX21lbW9yeSAoYWRk ciwgKGdkYl9ieXRlICopIGJ1ZiwgbGVuKTsKICAgfQogICByZXQgPSBzdGF0 dXMgPT0gMCA/IFBEQ19TVUNDRVNTIDogUERDX0ZBSUxVUkU7CkBAIC02Mzks MzYgKzY4MywzMiBAQCBwY21wIChjb25zdCB2b2lkICpwMXYsIGNvbnN0IHZv aWQgKnAydikKICAgcmV0dXJuIHAxLT5wdGhpZCA8IHAyLT5wdGhpZCA/IC0x IDogcDEtPnB0aGlkID4gcDItPnB0aGlkOwogfQogCi0vKiBpdGVyYXRlX292 ZXJfdGhyZWFkcygpIGNhbGxiYWNrIGZvciBjb3VudGluZyBHREIgdGhyZWFk cy4KLQotICAgRG8gbm90IGNvdW50IHRoZSBtYWluIHRocmVhZCAod2hvc2Ug dGlkIGlzIHplcm8pLiAgVGhpcyBtYXRjaGVzCi0gICB0aGUgbGlzdCBvZiB0 aHJlYWRzIHByb3ZpZGVkIGJ5IHRoZSBwdGhyZWFkZGVidWcgbGlicmFyeSwg d2hpY2gKLSAgIGRvZXMgbm90IGluY2x1ZGUgdGhhdCBtYWluIHRocmVhZCBl aXRoZXIsIGFuZCB0aHVzIGFsbG93cyB1cwotICAgdG8gY29tcGFyZSB0aGUg dHdvIGxpc3RzLiAgKi8KKy8qIENhbGxiYWNrIGZvciBjb3VudGluZyBHREIg dGhyZWFkcyBmb3IgcHJvY2VzcyBwaWQuICAqLwogCiBzdGF0aWMgaW50Ci1n aXRlcl9jb3VudCAoc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQsIHZvaWQg KmNvdW50cCkKK2dpdGVyX2NvdW50IChwaWRfdCBwaWQpCiB7Ci0gIGlmIChQ RF9USUQgKHRocmVhZC0+cHRpZCkpCi0gICAgKCooaW50ICopIGNvdW50cCkr KzsKLSAgcmV0dXJuIDA7CisgIGludCBnY291bnQgPSAwOworICBwcm9jZXNz X3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAorICAgID0gY3VycmVudF9p bmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCk7CisgIGZvciAodGhyZWFk X2luZm8gKnRwIDogYWxsX3RocmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlkX3Qg KHBpZCkpKQorICAgIGdjb3VudCsrOworICByZXR1cm4gZ2NvdW50OwogfQog Ci0vKiBpdGVyYXRlX292ZXJfdGhyZWFkcygpIGNhbGxiYWNrIGZvciBhY2N1 bXVsYXRpbmcgR0RCIHRocmVhZCBwaWRzLgotCi0gICBEbyBub3QgaW5jbHVk ZSB0aGUgbWFpbiB0aHJlYWQgKHdob3NlIHRpZCBpcyB6ZXJvKS4gIFRoaXMg bWF0Y2hlcwotICAgdGhlIGxpc3Qgb2YgdGhyZWFkcyBwcm92aWRlZCBieSB0 aGUgcHRocmVhZGRlYnVnIGxpYnJhcnksIHdoaWNoCi0gICBkb2VzIG5vdCBp bmNsdWRlIHRoYXQgbWFpbiB0aHJlYWQgZWl0aGVyLCBhbmQgdGh1cyBhbGxv d3MgdXMKLSAgIHRvIGNvbXBhcmUgdGhlIHR3byBsaXN0cy4gICovCisvKiBD YWxsYmFjayBmb3IgYWNjdW11bGF0aW5nIEdEQiB0aHJlYWQgcGlkcy4gICov CiAKIHN0YXRpYyBpbnQKLWdpdGVyX2FjY3VtIChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRocmVhZCwgdm9pZCAqYnVmcCkKK2dpdGVyX2FjY3VtICh2b2lkICpi dWZwLCBwaWRfdCBwaWQpCiB7Ci0gIGlmIChQRF9USUQgKHRocmVhZC0+cHRp ZCkpCi0gICAgewotICAgICAgKiooc3RydWN0IHRocmVhZF9pbmZvICoqKikg YnVmcCA9IHRocmVhZDsKLSAgICAgICgqKHN0cnVjdCB0aHJlYWRfaW5mbyAq KiopIGJ1ZnApKys7Ci0gICAgfQorICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0 ICpwcm9jX3RhcmdldAorICAgID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHJv Y2Vzc190YXJnZXQgKCk7CisgIGZvciAodGhyZWFkX2luZm8gKnRwIDogYWxs X3RocmVhZHMgKHByb2NfdGFyZ2V0LCBwdGlkX3QgKHBpZCkpKQorICB7Cisg ICAgKiooc3RydWN0IHRocmVhZF9pbmZvICoqKikgYnVmcCA9IHRwOworICAg ICgqKHN0cnVjdCB0aHJlYWRfaW5mbyAqKiopIGJ1ZnApKys7CisgIH0KKwog ICByZXR1cm4gMDsKIH0KIApAQCAtNzE5LDcgKzc1OSwxMCBAQCBnZXRfc2ln bmFsZWRfdGhyZWFkIChpbnQgcGlkKQogCQkgICAgc2l6ZW9mICh0aHJpbmYp LCAma3RpZCwgMSkgIT0gMSkKIAlicmVhazsKIAotICAgICAgaWYgKHRocmlu Zi50aV9jdXJzaWcgPT0gU0lHVFJBUCkKKyAgICAgIC8qIFdlIGFsc28gbmVl ZCB0byBrZWVwIGluIG1pbmQgVHJhcCBhbmQgaW50ZXJydXB0IG9yIGFueQor ICAgICAgICAgc2lnbmFsIHRoYXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBw ZF91cGRhdGUgKCkuICAqLworCisgICAgICBpZiAodGhyaW5mLnRpX2N1cnNp ZykKIAlyZXR1cm4gdGhyaW5mLnRpX3RpZDsKICAgICB9CiAKQEAgLTc1MCw2 ICs3OTMsMTEgQEAgc3luY190aHJlYWRsaXN0cyAoaW50IHBpZCkKICAgcHRo ZGJfcHRocmVhZF90IHBkdGlkOwogICBwdGhyZWFkX3QgcHRoaWQ7CiAgIHB0 aGRiX3RpZF90IHRpZDsKKyAgcHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqcHJv Y190YXJnZXQKKyAgICAgICAgICAgID0gY3VycmVudF9pbmZlcmlvciAoKS0+ cHJvY2Vzc190YXJnZXQgKCk7CisgIHRocmVhZF9pbmZvICAqdHA7CisgIHN0 cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdl dF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3BpZCAocGlkKTsKIAogICAvKiBB Y2N1bXVsYXRlIGFuIGFycmF5IG9mIGxpYnB0aGRlYnVnIHRocmVhZHMgc29y dGVkIGJ5IHB0aHJlYWQgaWQuICAqLwogCkBAIC03NTksMTEgKzgwNywxMSBA QCBzeW5jX3RocmVhZGxpc3RzIChpbnQgcGlkKQogCiAgIGZvciAoY21kID0g UFRIREJfTElTVF9GSVJTVDs7IGNtZCA9IFBUSERCX0xJU1RfTkVYVCkKICAg ICB7Ci0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkIChwZF9zZXNzaW9u LCAmcGR0aWQsIGNtZCk7CisgICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk IChkYXRhLT5wZF9zZXNzaW9uLCAmcGR0aWQsIGNtZCk7CiAgICAgICBpZiAo c3RhdHVzICE9IFBUSERCX1NVQ0NFU1MgfHwgcGR0aWQgPT0gUFRIREJfSU5W QUxJRF9QVEhSRUFEKQogCWJyZWFrOwogCi0gICAgICBzdGF0dXMgPSBwdGhk Yl9wdGhyZWFkX3B0aWQgKHBkX3Nlc3Npb24sIHBkdGlkLCAmcHRoaWQpOwor ICAgICAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9wdGlkIChkYXRhLT5wZF9z ZXNzaW9uLCBwZHRpZCwgJnB0aGlkKTsKICAgICAgIGlmIChzdGF0dXMgIT0g UFRIREJfU1VDQ0VTUyB8fCBwdGhpZCA9PSBQVEhEQl9JTlZBTElEX1BUSUQp CiAJY29udGludWU7CiAKQEAgLTc4MCw3ICs4MjgsNyBAQCBzeW5jX3RocmVh ZGxpc3RzIChpbnQgcGlkKQogCiAgIGZvciAocGkgPSAwOyBwaSA8IHBjb3Vu dDsgcGkrKykKICAgICB7Ci0gICAgICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFk X3RpZCAocGRfc2Vzc2lvbiwgcGJ1ZltwaV0ucGR0aWQsICZ0aWQpOworICAg ICAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF90aWQgKGRhdGEtPnBkX3Nlc3Np b24sIHBidWZbcGldLnBkdGlkLCAmdGlkKTsKICAgICAgIGlmIChzdGF0dXMg IT0gUFRIREJfU1VDQ0VTUykKIAl0aWQgPSBQVEhEQl9JTlZBTElEX1RJRDsK ICAgICAgIHBidWZbcGldLnRpZCA9IHRpZDsKQEAgLTc5MCwxMCArODM4LDEx IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAKICAgLyogQWNjdW11 bGF0ZSBhbiBhcnJheSBvZiBHREIgdGhyZWFkcyBzb3J0ZWQgYnkgcGlkLiAg Ki8KIAotICBnY291bnQgPSAwOwotICBpdGVyYXRlX292ZXJfdGhyZWFkcyAo Z2l0ZXJfY291bnQsICZnY291bnQpOworICAvKiBnY291bnQgaXMgR0RCIHRo cmVhZCBjb3VudCBhbmQgcGNvdW50IGlzIHB0aHJlYWRsaWIgdGhyZWFkIGNv dW50LiAgKi8KKworICBnY291bnQgPSBnaXRlcl9jb3VudCAocGlkKTsKICAg ZyA9IGdidWYgPSBYTkVXVkVDIChzdHJ1Y3QgdGhyZWFkX2luZm8gKiwgZ2Nv dW50KTsKLSAgaXRlcmF0ZV9vdmVyX3RocmVhZHMgKGdpdGVyX2FjY3VtLCAm Zyk7CisgIGdpdGVyX2FjY3VtICgmZywgcGlkKTsKICAgcXNvcnQgKGdidWYs IGdjb3VudCwgc2l6ZW9mICpnYnVmLCBnY21wKTsKIAogICAvKiBBcHBseSBk aWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gYXJyYXlzIHRvIEdEQidzIHRo cmVhZCBsaXN0LiAgKi8KQEAgLTgxMCw4ICs4NTksNiBAQCBzeW5jX3RocmVh ZGxpc3RzIChpbnQgcGlkKQogCSAgcHJpdi0+cGR0aWQgPSBwYnVmW3BpXS5w ZHRpZDsKIAkgIHByaXYtPnRpZCA9IHBidWZbcGldLnRpZDsKIAotCSAgcHJv Y2Vzc19zdHJhdHVtX3RhcmdldCAqcHJvY190YXJnZXQKLQkgICAgPSBjdXJy ZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3RhcmdldCAoKTsKIAkgIHRocmVh ZCA9IGFkZF90aHJlYWRfd2l0aF9pbmZvIChwcm9jX3RhcmdldCwKIAkJCQkJ IHB0aWRfdCAocGlkLCAwLCBwYnVmW3BpXS5wdGhpZCksCiAJCQkJCSBwcml2 KTsKQEAgLTgzMCw2ICs4NzcsMjMgQEAgc3luY190aHJlYWRsaXN0cyAoaW50 IHBpZCkKIAogCSAgY21wX3Jlc3VsdCA9IHB0aWRfY21wIChwcHRpZCwgZ3B0 aWQpOwogCisJICAvKiBJZiB0aGVyZSBpcyBvbmx5IG9uZSB0aHJlYWQgdGhl biB3ZSBuZWVkIG5vdCBtYWtlIHRoZSBtYWluIAorCSAgICAgdGhyZWFkIGxv b2sgbGlrZSBhIHRocmVhZC4gIEl0IGNhbiBzdGF5IGFzIGEgcHJvY2Vzcy4g VGhpcworCSAgICAgaXMgdXNlZnVsIHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBp bmZlcmlvcnMsIGJ1dCBvbmx5IG9uZSBpcworCSAgICAgdGhyZWFkZWQuICBT byB3ZSBuZWVkIG5vdCBtYWtlIHRoZSBvdGhlciBpbmZlcmlvcnMgd2l0aCBv bmx5CisJICAgICBtYWluIHRocmVhZCwgbG9vayBsaWtlIGEgdGhyZWFkZWQg b25lLiAgRm9yIGV4YW1wbGUsIFRocmVhZAorCSAgICAgMS4xLCAxLjIsIDIu MSwgMy4xIGV4aXN0cyB0aGVuIGl0IGlzIHVzZWZ1bCB0byBza2lwIHRoaXMg Zm9yCisJICAgICBsb29wIGZvciAyLjEgYW5kIDMuMSBsZWF2aW5nIHRoZW0g YXMgbWFpbiBwcm9jZXNzIHRocmVhZCB3aXRoCisJICAgICBhIGR1bW15IHBy aXYgc2V0LiAgKi8KKworCSAgaWYgKHBjb3VudCA9PSAxICYmIGdjb3VudCA9 PSAxKQorCSAgeworCSAgICBhaXhfdGhyZWFkX2luZm8gKnByaXYgPSBuZXcg YWl4X3RocmVhZF9pbmZvOworCSAgICB0cCA9IGZpbmRfdGhyZWFkX3B0aWQg KHByb2NfdGFyZ2V0LCBncHRpZCk7CisJICAgIHRwLT5wcml2LnJlc2V0IChw cml2KTsKKwkgICAgYnJlYWs7CisJICB9CisKIAkgIGlmIChjbXBfcmVzdWx0 ID09IDApCiAJICAgIHsKIAkgICAgICBhaXhfdGhyZWFkX2luZm8gKnByaXYg PSBnZXRfYWl4X3RocmVhZF9pbmZvIChnYnVmW2dpXSk7CkBAIC04NDEsOCAr OTA1LDI1IEBAIHN5bmNfdGhyZWFkbGlzdHMgKGludCBwaWQpCiAJICAgIH0K IAkgIGVsc2UgaWYgKGNtcF9yZXN1bHQgPiAwKQogCSAgICB7Ci0JICAgICAg ZGVsZXRlX3RocmVhZCAoZ2J1ZltnaV0pOwotCSAgICAgIGdpKys7CisJICAg ICAgLyogVGhpcyBpcyB0byBtYWtlIHRoZSBtYWluIHByb2Nlc3MgdGhyZWFk IG5vdyBsb29rCisJCSBsaWtlIGEgdGhyZWFkLiAgKi8KKworCSAgICAgIGlm IChncHRpZC5pc19waWQgKCkgJiYgZ3B0aWQucGlkICgpID09IHBwdGlkLnBp ZCAoKSkKKwkgICAgICB7CisJCXRocmVhZF9jaGFuZ2VfcHRpZCAocHJvY190 YXJnZXQsIGdwdGlkLCBwcHRpZCk7CisJCWFpeF90aHJlYWRfaW5mbyAqcHJp diA9IG5ldyBhaXhfdGhyZWFkX2luZm87CisJCXByaXYtPnBkdGlkID0gcGJ1 ZltwaV0ucGR0aWQ7CisJCXByaXYtPnRpZCA9IHBidWZbcGldLnRpZDsKKwkJ dHAgPSBmaW5kX3RocmVhZF9wdGlkIChwcm9jX3RhcmdldCwgcHB0aWQpOwor CQl0cC0+cHJpdi5yZXNldCAocHJpdik7CisJCXBpKys7CisJCWdpKys7CisJ ICAgICAgfQorCSAgICAgIGVsc2UKKwkgICAgICB7CisJCWRlbGV0ZV90aHJl YWQgKGdidWZbZ2ldKTsKKwkJZ2krKzsKKwkgICAgICB9CiAJICAgIH0KIAkg IGVsc2UKIAkgICAgewpAQCAtODg4LDEwICs5NjksMTMgQEAgcGRfdXBkYXRl IChpbnQgcGlkKQogICBwdGhkYl90aWRfdCB0aWQ7CiAgIHN0cnVjdCB0aHJl YWRfaW5mbyAqdGhyZWFkID0gTlVMTDsKIAotICBpZiAoIXBkX2FjdGl2ZSkK KyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRh ID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcGlkIChwaWQpOworCisg IGlmICghZGF0YS0+cGRfYWN0aXZlKQogICAgIHJldHVybiBwdGlkX3QgKHBp ZCk7CiAKLSAgc3RhdHVzID0gcHRoZGJfc2Vzc2lvbl91cGRhdGUgKHBkX3Nl c3Npb24pOworICBzdGF0dXMgPSBwdGhkYl9zZXNzaW9uX3VwZGF0ZSAoZGF0 YS0+cGRfc2Vzc2lvbik7CiAgIGlmIChzdGF0dXMgIT0gUFRIREJfU1VDQ0VT UykKICAgICByZXR1cm4gcHRpZF90IChwaWQpOwogCkBAIC05MTgsMTUgKzEw MDIsMTcgQEAgc3RhdGljIHB0aWRfdAogcGRfYWN0aXZhdGUgKGludCBwaWQp CiB7CiAgIGludCBzdGF0dXM7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3Zhcmlh YmxlcyAqZGF0YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJf Zm9yX3BpZCAocGlkKTsKIAkJCiAgIHN0YXR1cyA9IHB0aGRiX3Nlc3Npb25f aW5pdCAocGlkLCBhcmNoNjQgPyBQRU1fNjRCSVQgOiBQRU1fMzJCSVQsCiAJ CQkgICAgICAgUFRIREJfRkxBR19SRUdTLCAmcGRfY2FsbGJhY2tzLCAKLQkJ CSAgICAgICAmcGRfc2Vzc2lvbik7CisJCQkgICAgICAgJmRhdGEtPnBkX3Nl c3Npb24pOwogICBpZiAoc3RhdHVzICE9IFBUSERCX1NVQ0NFU1MpCiAgICAg ewogICAgICAgcmV0dXJuIHB0aWRfdCAocGlkKTsKICAgICB9Ci0gIHBkX2Fj dGl2ZSA9IDE7CisgIGRhdGEtPnBkX2FjdGl2ZSA9IDE7CiAgIHJldHVybiBw ZF91cGRhdGUgKHBpZCk7CiB9CiAKQEAgLTkzNSwxMiArMTAyMSwxNSBAQCBw ZF9hY3RpdmF0ZSAoaW50IHBpZCkKIHN0YXRpYyB2b2lkCiBwZF9kZWFjdGl2 YXRlICh2b2lkKQogewotICBpZiAoIXBkX2FjdGl2ZSkKKyAgc3RydWN0IGFp eF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVh ZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAoaW5mZXJpb3JfcHRpZCk7CisKKyAg aWYgKCFkYXRhLT5wZF9hY3RpdmUpCiAgICAgcmV0dXJuOwotICBwdGhkYl9z ZXNzaW9uX2Rlc3Ryb3kgKHBkX3Nlc3Npb24pOworICBwdGhkYl9zZXNzaW9u X2Rlc3Ryb3kgKGRhdGEtPnBkX3Nlc3Npb24pOwogICAKICAgcGlkX3RvX3By YyAoJmluZmVyaW9yX3B0aWQpOwotICBwZF9hY3RpdmUgPSAwOworICBkYXRh LT5wZF9hY3RpdmUgPSAwOwogfQogCiAvKiBBbiBvYmplY3QgZmlsZSBoYXMg anVzdCBiZWVuIGxvYWRlZC4gIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQK QEAgLTk1Myw4ICsxMDQyLDE0IEBAIHBkX2VuYWJsZSAodm9pZCkKICAgY2hh ciAqc3R1Yl9uYW1lOwogICBzdHJ1Y3QgYm91bmRfbWluaW1hbF9zeW1ib2wg bXM7CiAKKyAgaWYgKCFpbmZlcmlvcl9wdGlkLnBpZCAoKSkKKyAgICByZXR1 cm47CisgIAorICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7 CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChp bmZlcmlvcl9wdGlkKTsKKwogICAvKiBEb24ndCBpbml0aWFsaXplIHR3aWNl LiAgKi8KLSAgaWYgKHBkX2FibGUpCisgIGlmIChkYXRhLT5wZF9hYmxlKQog ICAgIHJldHVybjsKIAogICAvKiBDaGVjayBhcHBsaWNhdGlvbiB3b3JkIHNp emUuICAqLwpAQCAtOTc4LDcgKzEwNzMsNyBAQCBwZF9lbmFibGUgKHZvaWQp CiAKICAgLyogUHJlcGFyZSBmb3IgdGhyZWFkIGRlYnVnZ2luZy4gICovCiAg IGN1cnJlbnRfaW5mZXJpb3IgKCktPnB1c2hfdGFyZ2V0ICgmYWl4X3RocmVh ZF9vcHMpOwotICBwZF9hYmxlID0gMTsKKyAgZGF0YS0+cGRfYWJsZSA9IDE7 IAogCiAgIC8qIElmIHdlJ3JlIGRlYnVnZ2luZyBhIGNvcmUgZmlsZSBvciBh biBhdHRhY2hlZCBpbmZlcmlvciwgdGhlCiAgICAgIHB0aHJlYWQgbGlicmFy eSBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQsIHNvIHRyeSB0 bwpAQCAtOTkxLDI4ICsxMDg2LDI4IEBAIHBkX2VuYWJsZSAodm9pZCkKIHN0 YXRpYyB2b2lkCiBwZF9kaXNhYmxlICh2b2lkKQogewotICBpZiAoIXBkX2Fi bGUpCisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsKKyAg ZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGluZmVy aW9yX3B0aWQpOworCisgIGlmICghZGF0YS0+cGRfYWJsZSkKICAgICByZXR1 cm47Ci0gIGlmIChwZF9hY3RpdmUpCisgIGlmIChkYXRhLT5wZF9hY3RpdmUp CiAgICAgcGRfZGVhY3RpdmF0ZSAoKTsKLSAgcGRfYWJsZSA9IDA7CisgIGRh dGEtPnBkX2FibGUgPSAwOwogICBjdXJyZW50X2luZmVyaW9yICgpLT51bnB1 c2hfdGFyZ2V0ICgmYWl4X3RocmVhZF9vcHMpOworICAvL3RtYXAuZXJhc2Ug KGluZmVyaW9yX3B0aWQucGlkICgpKTsKIH0KIAogLyogbmV3X29iamZpbGUg b2JzZXJ2ZXIgY2FsbGJhY2suCiAKICAgIElmIE9CSkZJTEUgaXMgbm9uLW51 bGwsIGNoZWNrIHdoZXRoZXIgYSB0aHJlYWRlZCBhcHBsaWNhdGlvbiBpcwot ICAgYmVpbmcgZGVidWdnZWQsIGFuZCBpZiBzbywgcHJlcGFyZSBmb3IgdGhy ZWFkIGRlYnVnZ2luZy4KLQotICAgSWYgT0JKRklMRSBpcyBudWxsLCBzdG9w IGRlYnVnZ2luZyB0aHJlYWRzLiAgKi8KKyAgIGJlaW5nIGRlYnVnZ2VkLCBh bmQgaWYgc28sIHByZXBhcmUgZm9yIHRocmVhZCBkZWJ1Z2dpbmcuICAqLwog CiBzdGF0aWMgdm9pZAogbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKQogewogICBpZiAob2JqZmlsZSkKICAgICBwZF9lbmFibGUgKCk7 Ci0gIGVsc2UKLSAgICBwZF9kaXNhYmxlICgpOwogfQogCiAvKiBBdHRhY2gg dG8gcHJvY2VzcyBzcGVjaWZpZWQgYnkgQVJHUy4gICovCkBAIC0xMDQyLDgg KzExMzcsMTAgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnJlc3VtZSAocHRpZF90 IHB0aWQsIGludCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQogewogICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZDsKICAgcHRoZGJfdGlkX3QgdGlk WzJdOworICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7Cisg IGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChwdGlk KTsKIAotICBpZiAoIVBEX1RJRCAocHRpZCkpCisgIGlmICghUERfVElEIChw dGlkLCBkYXRhKSkKICAgICB7CiAgICAgICBzY29wZWRfcmVzdG9yZSBzYXZl X2luZmVyaW9yX3B0aWQgPSBtYWtlX3Njb3BlZF9yZXN0b3JlICgmaW5mZXJp b3JfcHRpZCk7CiAgICAgICAKQEAgLTEwOTUsOCArMTE5MiwxMSBAQCBhaXhf dGhyZWFkX3RhcmdldDo6d2FpdCAocHRpZF90IHB0aWQsIHN0cnVjdCB0YXJn ZXRfd2FpdHN0YXR1cyAqc3RhdHVzLAogICAgICBwaWQtb25seSBwdGlkcy4g ICovCiAgIGdkYl9hc3NlcnQgKHB0aWQuaXNfcGlkICgpKTsKIAorICBzdHJ1 Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIGRhdGEgPSBnZXRf dGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChwdGlkKTsKKwogICAvKiBD aGVjayB3aGV0aGVyIGxpYnB0aGRlYnVnIG1pZ2h0IGJlIHJlYWR5IHRvIGJl IGluaXRpYWxpemVkLiAgKi8KLSAgaWYgKCFwZF9hY3RpdmUgJiYgc3RhdHVz LT5raW5kICgpID09IFRBUkdFVF9XQUlUS0lORF9TVE9QUEVECisgIGlmICgh ZGF0YS0+cGRfYWN0aXZlICYmIHN0YXR1cy0+a2luZCAoKSA9PSBUQVJHRVRf V0FJVEtJTkRfU1RPUFBFRAogICAgICAgJiYgc3RhdHVzLT5zaWcgKCkgPT0g R0RCX1NJR05BTF9UUkFQKQogICAgIHsKICAgICAgIHByb2Nlc3Nfc3RyYXR1 bV90YXJnZXQgKnByb2NfdGFyZ2V0CkBAIC0xMjI5LDExICsxMzI5LDEzIEBA IGZldGNoX3JlZ3NfdXNlcl90aHJlYWQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIHB0aGRiX3B0aHJlYWRfdCBwZHRpZCkKICAgcHBjX2dkYmFyY2hf dGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcDxwcGNfZ2RiYXJjaF90ZGVwPiAo Z2RiYXJjaCk7CiAgIGludCBzdGF0dXMsIGk7CiAgIHB0aGRiX2NvbnRleHRf dCBjdHg7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0YTsK KyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQgKGlu ZmVyaW9yX3B0aWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQogICAg IGdkYl9wcmludGYgKGdkYl9zdGRsb2csIAogCQkiZmV0Y2hfcmVnc191c2Vy X3RocmVhZCAlbHhcbiIsIChsb25nKSBwZHRpZCk7Ci0gIHN0YXR1cyA9IHB0 aGRiX3B0aHJlYWRfY29udGV4dCAocGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgp OworICBzdGF0dXMgPSBwdGhkYl9wdGhyZWFkX2NvbnRleHQgKGRhdGEtPnBk X3Nlc3Npb24sIHBkdGlkLCAmY3R4KTsKICAgaWYgKHN0YXR1cyAhPSBQVEhE Ql9TVUNDRVNTKQogICAgIGVycm9yIChfKCJhaXgtdGhyZWFkOiBmZXRjaF9y ZWdpc3RlcnM6IHB0aGRiX3B0aHJlYWRfY29udGV4dCByZXR1cm5lZCAlcyIp LAogCSAgIHBkX3N0YXR1czJzdHIgKHN0YXR1cykpOwpAQCAtMTM2Miw4ICsx NDY0LDEwIEBAIGFpeF90aHJlYWRfdGFyZ2V0OjpmZXRjaF9yZWdpc3RlcnMg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubykKIHsKICAg c3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQ7CiAgIHB0aGRiX3RpZF90IHRp ZDsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpkYXRhOworICBk YXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRpZCAocmVnY2Fj aGUtPnB0aWQgKCkpOwogCi0gIGlmICghUERfVElEIChyZWdjYWNoZS0+cHRp ZCAoKSkpCisgIGlmICghUERfVElEIChyZWdjYWNoZS0+cHRpZCAoKSwgZGF0 YSkpCiAgICAgYmVuZWF0aCAoKS0+ZmV0Y2hfcmVnaXN0ZXJzIChyZWdjYWNo ZSwgcmVnbm8pOwogICBlbHNlCiAgICAgewpAQCAtMTUxMSw2ICsxNjE1LDgg QEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogICBwdGhk Yl9jb250ZXh0X3QgY3R4OwogICB1aW50MzJfdCBpbnQzMjsKICAgdWludDY0 X3QgaW50NjQ7CisgIHN0cnVjdCBhaXhfdGhyZWFkX3ZhcmlhYmxlcyAqZGF0 YTsKKyAgZGF0YSA9IGdldF90aHJlYWRfZGF0YV9oZWxwZXJfZm9yX3B0aWQg KGluZmVyaW9yX3B0aWQpOwogCiAgIGlmIChkZWJ1Z19haXhfdGhyZWFkKQog ICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csIApAQCAtMTUxOCw3ICsxNjI0 LDcgQEAgc3RvcmVfcmVnc191c2VyX3RocmVhZCAoY29uc3Qgc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgcHRoZGJfcHRocmVhZF90IHBkdGlkKQogCiAg IC8qIFJldHJpZXZlIHRoZSB0aHJlYWQncyBjdXJyZW50IGNvbnRleHQgZm9y IGl0cyBub24tcmVnaXN0ZXIKICAgICAgdmFsdWVzLiAgKi8KLSAgc3RhdHVz ID0gcHRoZGJfcHRocmVhZF9jb250ZXh0IChwZF9zZXNzaW9uLCBwZHRpZCwg JmN0eCk7CisgIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRfY29udGV4dCAoZGF0 YS0+cGRfc2Vzc2lvbiwgcGR0aWQsICZjdHgpOwogICBpZiAoc3RhdHVzICE9 IFBUSERCX1NVQ0NFU1MpCiAgICAgZXJyb3IgKF8oImFpeC10aHJlYWQ6IHN0 b3JlX3JlZ2lzdGVyczogcHRoZGJfcHRocmVhZF9jb250ZXh0IHJldHVybmVk ICVzIiksCiAJICAgcGRfc3RhdHVzMnN0ciAoc3RhdHVzKSk7CkBAIC0xNTc2 LDcgKzE2ODIsNyBAQCBzdG9yZV9yZWdzX3VzZXJfdGhyZWFkIChjb25zdCBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBwdGhkYl9wdGhyZWFkX3QgcGR0 aWQpCiAJY3R4LmZwc2NyID0gdG1wX2Zwc2NyOwogICAgIH0KIAotICBzdGF0 dXMgPSBwdGhkYl9wdGhyZWFkX3NldGNvbnRleHQgKHBkX3Nlc3Npb24sIHBk dGlkLCAmY3R4KTsKKyAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9zZXRjb250 ZXh0IChkYXRhLT5wZF9zZXNzaW9uLCBwZHRpZCwgJmN0eCk7CiAgIGlmIChz dGF0dXMgIT0gUFRIREJfU1VDQ0VTUykKICAgICBlcnJvciAoXygiYWl4LXRo cmVhZDogc3RvcmVfcmVnaXN0ZXJzOiAiCiAJICAgICAicHRoZGJfcHRocmVh ZF9zZXRjb250ZXh0IHJldHVybmVkICVzIiksCkBAIC0xNzAyLDggKzE4MDgs MTAgQEAgYWl4X3RocmVhZF90YXJnZXQ6OnN0b3JlX3JlZ2lzdGVycyAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQogewogICBzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRocmVhZDsKICAgcHRoZGJfdGlkX3QgdGlkOwor ICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMgKmRhdGE7CisgIGRhdGEg PSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9wdGlkIChpbmZlcmlvcl9w dGlkKTsKIAotICBpZiAoIVBEX1RJRCAocmVnY2FjaGUtPnB0aWQgKCkpKQor ICBpZiAoIVBEX1RJRCAocmVnY2FjaGUtPnB0aWQgKCksIGRhdGEpKQogICAg IGJlbmVhdGggKCktPnN0b3JlX3JlZ2lzdGVycyAocmVnY2FjaGUsIHJlZ25v KTsKICAgZWxzZQogICAgIHsKQEAgLTE3NDEsNyArMTg0OSw3IEBAIGFpeF90 aHJlYWRfdGFyZ2V0Ojptb3Vybl9pbmZlcmlvciAoKQogewogICB0YXJnZXRf b3BzICpiZW5lYXRoID0gdGhpcy0+YmVuZWF0aCAoKTsKIAotICBwZF9kZWFj dGl2YXRlICgpOworICBwZF9kaXNhYmxlICgpOwogICBiZW5lYXRoLT5tb3Vy bl9pbmZlcmlvciAoKTsKIH0KIApAQCAtMTc1MCw3ICsxODU4LDEwIEBAIGFp eF90aHJlYWRfdGFyZ2V0Ojptb3Vybl9pbmZlcmlvciAoKQogYm9vbAogYWl4 X3RocmVhZF90YXJnZXQ6OnRocmVhZF9hbGl2ZSAocHRpZF90IHB0aWQpCiB7 Ci0gIGlmICghUERfVElEIChwdGlkKSkKKyAgc3RydWN0IGFpeF90aHJlYWRf dmFyaWFibGVzICpkYXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hl bHBlcl9mb3JfcHRpZCAoaW5mZXJpb3JfcHRpZCk7CisKKyAgaWYgKCFQRF9U SUQgKHB0aWQsIGRhdGEpKQogICAgIHJldHVybiBiZW5lYXRoICgpLT50aHJl YWRfYWxpdmUgKHB0aWQpOwogCiAgIC8qIFdlIHVwZGF0ZSB0aGUgdGhyZWFk IGxpc3QgZXZlcnkgdGltZSB0aGUgY2hpbGQgc3RvcHMsIHNvIGFsbApAQCAt MTc2Niw3ICsxODc3LDEwIEBAIGFpeF90aHJlYWRfdGFyZ2V0Ojp0aHJlYWRf YWxpdmUgKHB0aWRfdCBwdGlkKQogc3RkOjpzdHJpbmcKIGFpeF90aHJlYWRf dGFyZ2V0OjpwaWRfdG9fc3RyIChwdGlkX3QgcHRpZCkKIHsKLSAgaWYgKCFQ RF9USUQgKHB0aWQpKQorICBzdHJ1Y3QgYWl4X3RocmVhZF92YXJpYWJsZXMg KmRhdGE7CisgIGRhdGEgPSBnZXRfdGhyZWFkX2RhdGFfaGVscGVyX2Zvcl9w dGlkIChwdGlkKTsKKworICBpZiAoIVBEX1RJRCAocHRpZCwgZGF0YSkpCiAg ICAgcmV0dXJuIGJlbmVhdGggKCktPnBpZF90b19zdHIgKHB0aWQpOwogCiAg IHJldHVybiBzdHJpbmdfcHJpbnRmIChfKCJUaHJlYWQgJXMiKSwgcHVsb25n ZXN0IChwdGlkLnRpZCAoKSkpOwpAQCAtMTc4Niw4ICsxOTAwLDEwIEBAIGFp eF90aHJlYWRfdGFyZ2V0OjpleHRyYV90aHJlYWRfaW5mbyAoc3RydWN0IHRo cmVhZF9pbmZvICp0aHJlYWQpCiAgIHB0aGRiX2RldGFjaHN0YXRlX3QgZGV0 YWNoc3RhdGU7CiAgIGludCBjYW5jZWxwZW5kOwogICBzdGF0aWMgY2hhciAq cmV0ID0gTlVMTDsKKyAgc3RydWN0IGFpeF90aHJlYWRfdmFyaWFibGVzICpk YXRhOworICBkYXRhID0gZ2V0X3RocmVhZF9kYXRhX2hlbHBlcl9mb3JfcHRp ZCAodGhyZWFkLT5wdGlkKTsKIAotICBpZiAoIVBEX1RJRCAodGhyZWFkLT5w dGlkKSkKKyAgaWYgKCFQRF9USUQgKHRocmVhZC0+cHRpZCwgZGF0YSkpCiAg ICAgcmV0dXJuIE5VTEw7CiAKICAgc3RyaW5nX2ZpbGUgYnVmOwpAQCAtMTgw MCwyNCArMTkxNiwyNCBAQCBhaXhfdGhyZWFkX3RhcmdldDo6ZXh0cmFfdGhy ZWFkX2luZm8gKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkKQogICAgIC8q IGkxOG46IExpa2UgInRocmVhZC1pZGVudGlmaWVyICVkLCBbc3RhdGVdIHJ1 bm5pbmcsIHN1c3BlbmRlZCIgKi8KICAgICBidWYucHJpbnRmIChfKCJ0aWQg JWQiKSwgKGludCl0aWQpOwogCi0gIHN0YXR1cyA9IHB0aGRiX3B0aHJlYWRf c3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAmc3RhdGUpOworICBzdGF0dXMg PSBwdGhkYl9wdGhyZWFkX3N0YXRlIChkYXRhLT5wZF9zZXNzaW9uLCBwZHRp ZCwgJnN0YXRlKTsKICAgaWYgKHN0YXR1cyAhPSBQVEhEQl9TVUNDRVNTKQog ICAgIHN0YXRlID0gUFNUX05PVFNVUDsKICAgYnVmLnByaW50ZiAoIiwgJXMi LCBzdGF0ZTJzdHIgKHN0YXRlKSk7CiAKLSAgc3RhdHVzID0gcHRoZGJfcHRo cmVhZF9zdXNwZW5kc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAKKyAgc3Rh dHVzID0gcHRoZGJfcHRocmVhZF9zdXNwZW5kc3RhdGUgKGRhdGEtPnBkX3Nl c3Npb24sIHBkdGlkLCAKIAkJCQkgICAgICAgJnN1c3BlbmRzdGF0ZSk7CiAg IGlmIChzdGF0dXMgPT0gUFRIREJfU1VDQ0VTUyAmJiBzdXNwZW5kc3RhdGUg PT0gUFNTX1NVU1BFTkRFRCkKICAgICAvKiBpMThuOiBMaWtlICJUaHJlYWQt SWQgJWQsIFtzdGF0ZV0gcnVubmluZywgc3VzcGVuZGVkIiAqLwogICAgIGJ1 Zi5wcmludGYgKF8oIiwgc3VzcGVuZGVkIikpOwogCi0gIHN0YXR1cyA9IHB0 aGRiX3B0aHJlYWRfZGV0YWNoc3RhdGUgKHBkX3Nlc3Npb24sIHBkdGlkLCAK KyAgc3RhdHVzID0gcHRoZGJfcHRocmVhZF9kZXRhY2hzdGF0ZSAoZGF0YS0+ cGRfc2Vzc2lvbiwgcGR0aWQsIAogCQkJCSAgICAgICZkZXRhY2hzdGF0ZSk7 CiAgIGlmIChzdGF0dXMgPT0gUFRIREJfU1VDQ0VTUyAmJiBkZXRhY2hzdGF0 ZSA9PSBQRFNfREVUQUNIRUQpCiAgICAgLyogaTE4bjogTGlrZSAiVGhyZWFk LUlkICVkLCBbc3RhdGVdIHJ1bm5pbmcsIGRldGFjaGVkIiAqLwogICAgIGJ1 Zi5wcmludGYgKF8oIiwgZGV0YWNoZWQiKSk7CiAKLSAgcHRoZGJfcHRocmVh ZF9jYW5jZWxwZW5kIChwZF9zZXNzaW9uLCBwZHRpZCwgJmNhbmNlbHBlbmQp OworICBwdGhkYl9wdGhyZWFkX2NhbmNlbHBlbmQgKGRhdGEtPnBkX3Nlc3Np b24sIHBkdGlkLCAmY2FuY2VscGVuZCk7CiAgIGlmIChzdGF0dXMgPT0gUFRI REJfU1VDQ0VTUyAmJiBjYW5jZWxwZW5kKQogICAgIC8qIGkxOG46IExpa2Ug IlRocmVhZC1JZCAlZCwgW3N0YXRlXSBydW5uaW5nLCBjYW5jZWwgcGVuZGlu ZyIgKi8KICAgICBidWYucHJpbnRmIChfKCIsIGNhbmNlbCBwZW5kaW5nIikp OwpkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWFpeC5jIGIvZ2RiL3NvbGliLWFp eC5jCmluZGV4IGY0ODNmNTRkZTEzLi4wOWQwMzNlZjQ3MyAxMDA2NDQKLS0t IGEvZ2RiL3NvbGliLWFpeC5jCisrKyBiL2dkYi9zb2xpYi1haXguYwpAQCAt NTY1LDYgKzU2NSw3IEBAIHNvbGliX2FpeF9iZmRfb3BlbiAoY29uc3QgY2hh ciAqcGF0aG5hbWUpCiAgIGNvbnN0IGNoYXIgKnNlcDsKICAgaW50IGZpbGVu YW1lX2xlbjsKICAgaW50IGZvdW5kX2ZpbGU7CisgIHN0ZDo6c3RyaW5nIHN0 cmluZ19wYXRoID0gcGF0aG5hbWU7CiAKICAgaWYgKHBhdGhuYW1lW3BhdGhf bGVuIC0gMV0gIT0gJyknKQogICAgIHJldHVybiBzb2xpYl9iZmRfb3BlbiAo cGF0aG5hbWUpOwpAQCAtNjE4LDYgKzYxOSwxNSBAQCBzb2xpYl9haXhfYmZk X29wZW4gKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQogICAgICAgaWYgKG1lbWJl cl9uYW1lID09IGJmZF9nZXRfZmlsZW5hbWUgKG9iamVjdF9iZmQuZ2V0ICgp KSkKIAlicmVhazsKIAorICAgICAgc3RkOjpzdHJpbmcgcyA9IGJmZF9nZXRf ZmlsZW5hbWUgKG9iamVjdF9iZmQuZ2V0ICgpKTsKKworICAgICAgLyogRm9y IGV2ZXJ5IGluZmVyaW9yIGFmdGVyIGZpcnN0IGludCBiZmQgc3lzdGVtIHdl IAorCSB3aWxsIGhhdmUgdGhlIHBhdGhuYW1lIGluc3RlYWQgb2YgdGhlIG1l bWJlciBuYW1lCisJIHJlZ2lzdGVyZWQuIEhlbmNlIHRoZSBiZWxvdyBjb25k aXRpb24gZXhpc3RzLiAgKi8KKworICAgICAgaWYgKHN0cmluZ19wYXRoLmNv bXBhcmUgKHMpID09IDApCisJcmV0dXJuIG9iamVjdF9iZmQ7CisKICAgICAg IG9iamVjdF9iZmQgPSBnZGJfYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmls ZSAoYXJjaGl2ZV9iZmQuZ2V0ICgpLAogCQkJCQkJICAgICBvYmplY3RfYmZk LmdldCAoKSk7CiAgICAgfQotLSAKMi4zMS4xCgo= --_004_CH2PR15MB35441F7D3B1CDE3E82AFC505D6D69CH2PR15MB3544namp_--