From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id E9850382EF30 for ; Tue, 15 Nov 2022 07:13:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E9850382EF30 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=ibm.com Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2AF7AeK3034697; Tue, 15 Nov 2022 07:13:30 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=uVE7AnzudaIoTEDws3tizuXth+8WY8r3MfyeEY4FMUs=; b=P5p1ZeYleC92jmQmiTppV1EcfTgtE32uGRNCPWAyNqY1I8yq2sFZEoisNEiQ9aSoA80U fDEGN4ZxtqJmKkfEBk3W0L7uv7DsP3xsrS4n66ix5ZF9WxC6eDLfwv3a1aiQubTneVK4 5pLkAcBirwW+14ZQHTkaY493M5N9QwIbufZtXnPIs3CZ0vT130v3HArQ0ytdCde8bv8b S5DYuvWqrPHGSTCg/SxrLlIeUcbbJp9LP7NcIHDqDWDQ5/k84dWBzuZqLxnJqD8WKOvU W3Jegwi0rwyh+5mDrq7RwOf4556/Q735pKDlNfVBUYIeycwrBOIWnz3Y6xWNfjow53Jv ig== Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2172.outbound.protection.outlook.com [104.47.57.172]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3kv65b82df-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Nov 2022 07:13:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MQ/qQqVFKHlD8wtR9rGohQggDU1q9p7vjOUY2pWqu7kzyzICdCObvqqLVRzbgjuFvqibOx1+IdRRqh5Lq3WJHeODuxO/0oIIQTBUs0s3IedtNhifgdZmmTa6kdla33FlIHy6aOMsmjKv+fAQtNvrji8omkRzL9Txn3USsyD6fYcb10oEBAsiDdev8qRG45/1CjbL7vKsmwtKMn5QiJlckdsaIIRPOeGxRMlqNeaTtuPl71e24wAs4spx9N6DmRdN+NLNDW0l91/yqctbEl0k+itFZ6gkrH7u2jGriXFgcp28QVWO+Ems+HzzSJvHEacaDwZhy08LPwqG/wCHeMN5EA== 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=hLMf5gAaxQUnXSrBEDGN+VCdew/VpJXpmbrXaq/LFnk=; b=BOMAr58bc4FhfHgOCSsCVohpNujbqog1QXRu5SZiY6WWnojG8qt/7BemPxFUpwzn/0bvei68wgZhOzji3GtH6aQYxPQBG1exltknqbUHLdQKLtymwfprIcWqVxSdnwUTG8xE7NRKKtdFmqePEFVeIwG812uHPfRiz7WYtKYkRMIIo1pFwHiqr2eJXCOPvL8lhjqv86juzgwj0c+8pa29Cc673R6nCW3Xo90a3hMeVOBhB3rMzr2LT0jb/x4KZU6uTKWF5u1RwL4iEWHxbaG5c2ZzBPIubQlp+HvgvRWG5DWpwiWcMQRtpxIKEjP1zB7T/gyncvWQRE1j9xsXySDQUw== 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 BY5PR15MB3540.namprd15.prod.outlook.com (2603:10b6:a03:1b6::29) by BYAPR15MB3272.namprd15.prod.outlook.com (2603:10b6:a03:110::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.16; Tue, 15 Nov 2022 07:13:28 +0000 Received: from BY5PR15MB3540.namprd15.prod.outlook.com ([fe80::a9e0:881a:895f:5fb9]) by BY5PR15MB3540.namprd15.prod.outlook.com ([fe80::a9e0:881a:895f:5fb9%4]) with mapi id 15.20.5813.013; Tue, 15 Nov 2022 07:13:28 +0000 From: Aditya Kamath1 To: Ulrich Weigand , "simark@simark.ca" , "gdb-patches@sourceware.org" CC: Sangamesh Mallayya , Sanket Rathi Subject: Re: [PATCH] Enable multi process debugging for AIX Thread-Topic: [PATCH] Enable multi process debugging for AIX Thread-Index: AQHYtiqs7fBWvNWu7U6EFq8QRxtmC64V4wdUgA4pNoCABnmrI4ABP6GAgAymlimABtQZgIAA1h1f Date: Tue, 15 Nov 2022 07:13:27 +0000 Message-ID: References: <44ad453e-6196-d334-312f-d5d0414f4476@simark.ca> <709f1a28ed9d4b0d4aac5cb6d6946e2de452a3ec.camel@de.ibm.com> <6a7ce1e363a8f8621f5bab256d35b3af30d6a308.camel@de.ibm.com> In-Reply-To: <6a7ce1e363a8f8621f5bab256d35b3af30d6a308.camel@de.ibm.com> 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: BY5PR15MB3540:EE_|BYAPR15MB3272:EE_ x-ms-office365-filtering-correlation-id: 7ceb7c5a-dd5d-45d5-ae4b-08dac6d8e4be x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8ys2CmdK1u/MM8+PEuBPtAkcJ7rHYd+UAsvF89T8DX62ZvYso3s922fO32uqRd3KRMeW7ttlCAec3mpTsMlG7luAr8cVyGEMYBW8HVGDB5V2Wk3x2KRxs+SRDbEtVmEB6mINkOyxlEpj7RIB4E2dhhCz78VYV4rVVdNkdS4AwdnW1CnZv8SrqelJ7dycf4C4EFoCzG9b/oGqlmTd7semMHPmDhF6CfL6AL4db5Q3IaY7X5j98A6QQclS0BKoxdcpu0Fl8eqEWjRTLGMEA3tfEd17Bz2q4wZTxYzInImZuTUZV6/AbGwqoXMHztuZLNISPUVZXnkaFs7LU0wLzaCsvrR1uDQf/unWF6Ph5t4Df7HBrZt4SMLMg6yZVQF/EITWSVFmlNcN+8lX+wUk0SUnRaAP9gaPKWcepxclmQMPV06P/uNXqPqiNXefXP5VRenfSUBbjc4razjGxKB+l2pDY+2c2PtLdN1U08eYBFA3QuQ++fzWo7+5PP8qQeNSTwM4mUS3VhAGodJCgxMN+ay74Nz5oW+K4xYqxIuPTFWx/Zoan0BDpaNBAiEEjwvneZgLByEcFQNbpi6FbCm+zdf1zpopjAn6zOUP+614hkQ+kmCVrLQR/yLqgoctST2uisPrfms6K7cTuWQsgYASo/U2wqLV50+ARI2e0st4ROFP9Gu+ipovdok+jE+xWIcxXUGsw+UNbiz8XsWY0QKFkVW0AXZlDo0HALVWr6AaKF9bTtkDVmMhf/xk0fB4jVQ1yaFc6Dflp+z2T24bFZ0Bd/C2I2LAn0gadv8dnkyraXnCJF5WzsBxekuT1nCHnjdu8lNi x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR15MB3540.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(346002)(39860400002)(376002)(396003)(366004)(451199015)(53546011)(9686003)(186003)(316002)(54906003)(26005)(33656002)(478600001)(6506007)(55016003)(7696005)(19627405001)(2906002)(86362001)(41300700001)(91956017)(64756008)(66476007)(122000001)(66446008)(8676002)(166002)(66556008)(76116006)(66946007)(38100700002)(4326008)(38070700005)(83380400001)(966005)(99936003)(110136005)(5660300002)(52536014)(8936002)(71200400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?24Si4GxAs/+WYjmsW7F8UKnBakuq2jXB6EoVS4sRQIJVjJ6akq8VakH3E1VN?= =?us-ascii?Q?Uzr0/PD3UwtYYt4+gTpqx280XOcg4GenOgCUzbCHF8/y2ZpzI0uUXCsdh8uj?= =?us-ascii?Q?carCPvhd2Hl3CGD5zYJOoiCIpMsRaLKmayNdwBwa/Kgs5P+GqXgCsgQvEJXh?= =?us-ascii?Q?3lFkD59A2x8GVfhh9Z3/vq4s6w02LVgQ1WdQrAzMgtTm7s96ZNsSJTI1XyXc?= =?us-ascii?Q?R3/vGRE+7ol3y4e+pggwMPhtGPvc1QdkEdIoaHjJJLEMVcwDiXSAv/swE6DB?= =?us-ascii?Q?Tsf0DAo4CIzPWNwmgedQu8H6PsxwyGcppt+zHzaei1BeyBLSQIqWrGvU2Jvj?= =?us-ascii?Q?flZBZ8mA88/qG7VWoHB+hIuSErf8Plkr8TtoLmElWXPX9HtCxWY1MGqq67gI?= =?us-ascii?Q?80CzaSKhi9J6vAUzRt1YdjmsZI1u7pI7RcuDjzFljt5yigD89nnQnqtiGyk2?= =?us-ascii?Q?/HlVKUKYfDVGqP0u08/yUHNY8kKjgHmpBGwJPpChlSKgSpbhBdapiP52jdkX?= =?us-ascii?Q?RbxptYtNDb1Z2+RW6IMiq/OhAnPQU11XdpYE611iPR9CH/VVtgrjWruWpjuN?= =?us-ascii?Q?07sBFcLg4DnhxSjX8RSPiHFi5cyJFY62dOP4ouNQPVXB18g+pY53WWiQM3my?= =?us-ascii?Q?Y4CHgVdju0tDtXXRbn5PqzjpngK6YJA8HlCY8wN6GiidC3StuDVjRmW33j8F?= =?us-ascii?Q?l0wj4+RWJ9GXcO5JzujhZJBtuzQruDAOGxiuiTQ/paMG4wjfbG4yWE2iHosJ?= =?us-ascii?Q?682NZ+kSSfA0aj0jEU6lcbYcfEZcLyPTU1e8Htyd8+XkQANyFKqUjZ6RklVx?= =?us-ascii?Q?quV3A4WML0gz8GSNwAMyMlCt8xwGuTTyG7u9hwxdeGOyctv9ZIWpIznXQ38+?= =?us-ascii?Q?OjTGlsv28mCw+4nWhmtC3KBK19grJYR3FdtnTCKwnmcBb6ei1cANj6KUkgET?= =?us-ascii?Q?YMvK81GKI2WVcGpqyNI+p6GNI7nOO2q9Ld9xRGLgI8dc5C2/cbm+1V82mP12?= =?us-ascii?Q?JraEJqK+Xh7aXSXkWmbZ9HGBjFhBOsSsoqtdw1O0wfpsc4w51nPRbrtRc2fl?= =?us-ascii?Q?aRkH5ZuzN+64JYLWoLDWxWN7aPycgLikHvNzwVRIoQjoLu9GQlHQibMaS7qt?= =?us-ascii?Q?td6mnvEQwIt6h1T44dnXvFSc1L61On5bqEVGoNBhwW++2I+nYgqgbtqL2xRB?= =?us-ascii?Q?2Ga4SCELy8uW8QtZW607Cf/q+MviLuses7UfN7cX5MkOfktk+WgKL0aX7ONL?= =?us-ascii?Q?6TTl2bE+eM+xG7THCm73DWHUPOZe4hT/A6mOk0LlsOieVzM/sO0TEjfRZsdo?= =?us-ascii?Q?d4fJ/dgn9vdL0tRRNk/J+o1YPITlbEesB1FKCwBhOUOHyAurUpdjLJ9Uhed+?= =?us-ascii?Q?Wcr8BnBZ7UsfOuRwPhTaMBDEnZkV3Qi8fUuIuLUSQ+X3oLHwTsvLuyCf3So5?= =?us-ascii?Q?hOlEnqrpov+0gkus478sVshuTXx8G2wikMMkU5dU+s/xglQut5fUqI02O6x4?= =?us-ascii?Q?MVM67xJauautVb5qlB8lOb17fGmcd/VL4YkirdhlkCq2LIjs9D8LZjXgHSi2?= =?us-ascii?Q?sjFlMW7Ic2R6Mk/ICjr1+vj4un3k5EmUZuVNuxWK?= Content-Type: multipart/mixed; boundary="_004_BY5PR15MB3540691A4BF014D2D9A6D5FAD6049BY5PR15MB3540namp_" X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR15MB3540.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ceb7c5a-dd5d-45d5-ae4b-08dac6d8e4be X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2022 07:13:27.8815 (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: WHfr/mePlYhQeBJCBL6gFqdKht7Sx28OTFwDdQRgjCk59Wc6t+WrxRwOlLK/FG3RyobcMhbThEg3fQgy05W+Fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR15MB3272 X-Proofpoint-ORIG-GUID: pkVe4q8v0xUoFf8a5XvZGh2-RUYe0ToU X-Proofpoint-GUID: pkVe4q8v0xUoFf8a5XvZGh2-RUYe0ToU X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-15_02,2022-11-11_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 malwarescore=0 suspectscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 clxscore=1015 spamscore=0 priorityscore=1501 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211150051 X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_MSPIKE_H2,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_BY5PR15MB3540691A4BF014D2D9A6D5FAD6049BY5PR15MB3540namp_ Content-Type: multipart/alternative; boundary="_000_BY5PR15MB3540691A4BF014D2D9A6D5FAD6049BY5PR15MB3540namp_" --_000_BY5PR15MB3540691A4BF014D2D9A6D5FAD6049BY5PR15MB3540namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ulrich, I have made all the changes you mentioned for optimisation. Please find att= ached the patch. [See: 0001-Enable-multi-process-debugging-for-AIX.patch] If all looks good kindly push this patch. AIX folks have been waiting for a= while to use this feature. If anything, else needed from my end kindly let= me know. Have a nice day ahead. Thanks and regards, Aditya. ________________________________ From: Ulrich Weigand Sent: 14 November 2022 23:54 To: simark@simark.ca ; Aditya Kamath1 ; gdb-patches@sourceware.org Cc: Sangamesh Mallayya Subject: Re: [PATCH] Enable multi process debugging for AIX Aditya Kamath1 wrote: >I have taken care of parent child relationship. See find_my_aix_parent () = function. >You can refer the link https://www.ibm.com/docs/en/aix/7.2?topic=3Dg-getpr= ocs-subroutine >for the documentation of the same. > >I have also taken care of what if break points hit in other threads while = only a >child or a parent event is reported in another thread as you mentioned Ulr= ich or >any other event. [You can refer the output I have pasted below]. The while= loop >will take care. Thanks! I don't see any further functional problems with this version any more, but there are still a few options to simplify and improve performance. See the inline comments below. > +static pid_t > +find_my_aix_parent (pid_t child_pid) > +{ > + struct procsinfo ProcessBuffer1; > + int ProcessSize1; > + struct fdsinfo FileBuffer1; > + int FileSize1; > + pid_t IndexPointer1 =3D 0; > + int Count =3D 1; > + while (1) > + { > + if (getprocs (&ProcessBuffer1, sizeof (ProcessBuffer1), > + &FileBuffer1, sizeof (FileBuffer1), &IndexPointer1, > + Count) !=3D 1) If I understand the docs correctly, I think this can be simplified: if you set IndexPointer1 initially to child_pid, it should immediately return this process (if it exists), so you shouldn't have to loop, right? Also, as we don't use FileBuffer1, you can simply pass NULL. > +static pid_t > +has_my_aix_child_reported (pid_t parent_pid) > +{ > + auto it =3D aix_pending_children.begin (); > + pid_t child; > + pid_t my_parent; > + while (it !=3D aix_pending_children.end ()) > + { I guess the loop can be handled with std::find_if ? > + while (it !=3D aix_pending_parent.end ()) Here as well. > +static bool > +did_aix_inferior_fork (int status) > +{ > + /* If multi-process debug mode is enabled, the status > + location is set to W_SFWTED. */ > + > + status =3D status & 0xff; > + > + /* Eliminate the last few bits. If the W_SFWTED is set > + which is equal to 0x7e, it is a fork event otherwise > + it is not. */ > + > + if (status !=3D W_SFWTED) > + return false; > + else > + return true; This whole function is now simply return (status & 0xff) =3D=3D W_SFWTED; (and probably doen't need to be a separate function ...) > - pid_t pid; > + pid_t pid =3D -1; This doesn't seem necessary. > int status, save_errno; > > - do > + while (1) > { > set_sigint_trap (); > > @@ -514,7 +676,7 @@ rs6000_nat_target::wait (ptid_t ptid, struct target_w= aitstatus *ourstatus, > save_errno =3D errno; > } > while (pid =3D=3D -1 && errno =3D=3D EINTR); > - > + Remove this whitespace change. > @@ -530,22 +692,67 @@ rs6000_nat_target::wait (ptid_t ptid, struct target= _waitstatus *ourstatus, > /* Ignore terminated detached child processes. */ > if (!WIFSTOPPED (status) && find_inferior_pid (this, pid) =3D=3D n= ullptr) > pid =3D -1; > + > + if (pid !=3D -1) > + { Probably simpler to change the above "pid =3D -1" line to "continue". Then we'll never get here unless pid !=3D -1 already and don't need another if. > + /* AIX has a couple of strange returns from wait(). */ > + > + /* stop after load" status. */ > + if (status =3D=3D 0x57c) > + ourstatus->set_loaded (); > + /* 0x7f is signal 0. */ > + /* 0x17f and 0x137f in hexadecimal are status returned if > + if we follow parent, > + a switch is made to a child post parent execution > + and child continues its execution [user switches to child and > + presses continue]. */ > + else if (status =3D=3D 0x7f || status =3D=3D 0x17f || status =3D= =3D 0x137f) > + ourstatus->set_spurious (); I think those could probably be left after the loop as they are. Only the fork-event specific code needs to go in the loop. Bye, Ulrich --_000_BY5PR15MB3540691A4BF014D2D9A6D5FAD6049BY5PR15MB3540namp_-- --_004_BY5PR15MB3540691A4BF014D2D9A6D5FAD6049BY5PR15MB3540namp_ Content-Type: application/octet-stream; name="0001-Enable-multi-process-debugging-for-AIX.patch" Content-Description: 0001-Enable-multi-process-debugging-for-AIX.patch Content-Disposition: attachment; filename="0001-Enable-multi-process-debugging-for-AIX.patch"; size=8140; creation-date="Tue, 15 Nov 2022 07:11:13 GMT"; modification-date="Tue, 15 Nov 2022 07:11:24 GMT" Content-Transfer-Encoding: base64 RnJvbSAzMGNmMjM3YzgzZGVmYmJkZmU4OWM5MGNiYzY2NWUyNTkwZjg2ZTg3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogVHVl LCAxNSBOb3YgMjAyMiAwMTowNTo0OSAtMDYwMApTdWJqZWN0OiBbUEFUQ0hd IEVuYWJsZSBtdWx0aSBwcm9jZXNzIGRlYnVnZ2luZyBmb3IgQUlYCgpXaXRo IHRoaXMgcGF0Y2ggdXNlcnMgd2l0aCBBSVggb3BlcmF0aW5nIHN5c3RlbSB3 aWxsIGJlIGFibGUgdG8gZGVidWcgbXVsdGlwbGUgcHJvY2VzcyBzaW11bGF0 YW5lb3VzbHkgYmUgaXQgYSBwYXJlbnQgb3IgYSBjaGlsZCBwcm9jZXNzLgot LS0KIGdkYi9yczYwMDAtYWl4LW5hdC5jIHwgMTkxICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxODMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9nZGIvcnM2MDAwLWFpeC1uYXQuYyBiL2dkYi9yczYwMDAtYWl4LW5h dC5jCmluZGV4IGNiMTQxNDI3Njk2Li5hY2FjMGRkODQyOSAxMDA2NDQKLS0t IGEvZ2RiL3JzNjAwMC1haXgtbmF0LmMKKysrIGIvZ2RiL3JzNjAwMC1haXgt bmF0LmMKQEAgLTU0LDYgKzU0LDEwIEBACiAjaW5jbHVkZSA8c3lzL2xkci5o PgogI2luY2x1ZGUgPHN5cy9zeXN0ZW1jZmcuaD4KIAorLyogSGVhZGVyIGZp bGVzIGZvciBnZXR0aW5nIHBwaWQgaW4gQUlYIG9mIGEgY2hpbGQgcHJvY2Vz cy4gICovCisjaW5jbHVkZSA8cHJvY2luZm8uaD4KKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KKyAKIC8qIE9uIEFJWDQuMyssIHN5cy9sZHIuaCBwcm92aWRl cyBkaWZmZXJlbnQgdmVyc2lvbnMgb2Ygc3RydWN0IGxkX2luZm8gZm9yCiAg ICBkZWJ1Z2dpbmcgMzItYml0IGFuZCA2NC1iaXQgcHJvY2Vzc2VzLiAgRGVm aW5lIGEgdHlwZWRlZiBhbmQgbWFjcm9zIGZvcgogICAgYWNjZXNzaW5nIGZp ZWxkcyBpbiB0aGUgYXBwcm9wcmlhdGUgc3RydWN0dXJlcy4gICovCkBAIC05 MSwxMCArOTUsMTMgQEAgY2xhc3MgcnM2MDAwX25hdF90YXJnZXQgZmluYWwg OiBwdWJsaWMgaW5mX3B0cmFjZV90YXJnZXQKIAogICBwdGlkX3Qgd2FpdCAo cHRpZF90LCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKiwgdGFyZ2V0X3dh aXRfZmxhZ3MpIG92ZXJyaWRlOwogCisgIC8qIEZvcmsgZGV0ZWN0aW9uIHJl bGF0ZWQgZnVuY3Rpb25zLCBGb3IgYWRkaW5nIG11bHRpIHByb2Nlc3MgZGVi dWdnaW5nCisgICAgIHN1cHBvcnQuICAqLworICB2b2lkIGZvbGxvd19mb3Jr IChpbmZlcmlvciAqLCBwdGlkX3QsIHRhcmdldF93YWl0a2luZCwgYm9vbCwg Ym9vbCkgb3ZlcnJpZGU7CisKIHByb3RlY3RlZDoKIAotICB2b2lkIHBvc3Rf c3RhcnR1cF9pbmZlcmlvciAocHRpZF90IHB0aWQpIG92ZXJyaWRlCi0gIHsg LyogTm90aGluZy4gICovIH0KKyAgdm9pZCBwb3N0X3N0YXJ0dXBfaW5mZXJp b3IgKHB0aWRfdCBwdGlkKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgZW51 bSB0YXJnZXRfeGZlcl9zdGF0dXMKQEAgLTEwNyw2ICsxMTQsODYgQEAgY2xh c3MgcnM2MDAwX25hdF90YXJnZXQgZmluYWwgOiBwdWJsaWMgaW5mX3B0cmFj ZV90YXJnZXQKIAogc3RhdGljIHJzNjAwMF9uYXRfdGFyZ2V0IHRoZV9yczYw MDBfbmF0X3RhcmdldDsKIAorLyogVGhlIGJlbG93IGRlY2xhcmF0aW9uIGlz IHRvIHRyYWNrIG51bWJlciBvZiB0aW1lcywgcGFyZW50IGhhcworICAgcmVw b3J0ZWQgZm9yayBldmVudCBiZWZvcmUgaXRzIGNoaWxkcmVuLiAgKi8KKwor c3RhdGljIHN0ZDo6bGlzdDxwaWRfdD4gYWl4X3BlbmRpbmdfcGFyZW50Owor CisvKiBUaGUgYmVsb3cgZGVjbGFyYXRpb24gaXMgZm9yIGEgY2hpbGQgcHJv Y2VzcyBldmVudCB0aGF0CisgICBpcyByZXBvcnRlZCBiZWZvcmUgaXRzIGNv cnJlc3BvbmRpbmcgcGFyZW50IHByb2Nlc3MgaW4KKyAgIHRoZSBldmVudCBv ZiBhIGZvcmsgKCkuICAqLworCitzdGF0aWMgc3RkOjpsaXN0PHBpZF90PiBh aXhfcGVuZGluZ19jaGlsZHJlbjsKKworc3RhdGljIHZvaWQKK2FpeF9yZW1l bWJlcl9jaGlsZCAocGlkX3QgcGlkKQoreworICBhaXhfcGVuZGluZ19jaGls ZHJlbi5wdXNoX2Zyb250IChwaWQpOworfQorCitzdGF0aWMgdm9pZAorYWl4 X3JlbWVtYmVyX3BhcmVudCAocGlkX3QgcGlkKQoreworICBhaXhfcGVuZGlu Z19wYXJlbnQucHVzaF9mcm9udCAocGlkKTsKK30KKworLyogVGhpcyBmdW5j dGlvbiByZXR1cm5zIGEgcGFyZW50IG9mIGEgY2hpbGQgcHJvY2Vzcy4gICov CisKK3N0YXRpYyBwaWRfdAorZmluZF9teV9haXhfcGFyZW50IChwaWRfdCBj aGlsZF9waWQpCit7CisgIHN0cnVjdCBwcm9jc2luZm8gUHJvY2Vzc0J1ZmZl cjE7CisgIHBpZF90IEluZGV4UG9pbnRlcjEgPSBjaGlsZF9waWQ7CisgIGlu dCBDb3VudCA9IDE7CisgIAorICBpZiAoZ2V0cHJvY3MgKCZQcm9jZXNzQnVm ZmVyMSwgc2l6ZW9mIChQcm9jZXNzQnVmZmVyMSksCisgICAgICBOVUxMLCAw LCAmSW5kZXhQb2ludGVyMSwgQ291bnQpICE9IDEpCisgICAgcmV0dXJuIDA7 IAorICAgICAKKyAgZWxzZSAgIAorICAgIHJldHVybiBQcm9jZXNzQnVmZmVy MS5waV9wcGlkOworICAKK30KKworLyogSW4gdGhlIGJlbG93IGZ1bmN0aW9u IHdlIGNoZWNrIGlmIHRoZXJlIHdhcyBhbnkgY2hpbGQKKyAgIHByb2Nlc3Mg cGVuZGluZy4gIElmIGl0IGV4aXN0cyB3ZSByZXR1cm4gaXQgZnJvbSB0aGUK KyAgIGxpc3QsIG90aGVyd2lzZSB3ZSByZXR1cm4gYSBudWxsLiAgKi8KKwor c3RhdGljIHBpZF90CitoYXNfbXlfYWl4X2NoaWxkX3JlcG9ydGVkIChwaWRf dCBwYXJlbnRfcGlkKQoreworICBwaWRfdCBjaGlsZCA9IDA7CisgIGF1dG8g aXQgPSBzdGQ6OmZpbmRfaWYgKGFpeF9wZW5kaW5nX2NoaWxkcmVuLmJlZ2lu ICgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhaXhfcGVuZGluZ19j aGlsZHJlbi5lbmQgKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZp bmRfbXlfYWl4X3BhcmVudCk7CisgIGlmIChpdCAhPSBhaXhfcGVuZGluZ19j aGlsZHJlbi5lbmQgKCkpCisgIHsKKyAgICBjaGlsZCA9ICppdDsgCisgICAg YWl4X3BlbmRpbmdfY2hpbGRyZW4uZXJhc2UgKGl0KTsKKyAgfSAgIAorICBy ZXR1cm4gY2hpbGQ7Cit9CisKKy8qIEluIHRoZSBiZWxvdyBmdW5jdGlvbiB3 ZSBjaGVjayBpZiB0aGVyZSB3YXMgYW55IHBhcmVudCAKKyAgIHByb2Nlc3Mg cGVuZGluZy4gIElmIGl0IGV4aXN0cyB3ZSByZXR1cm4gaXQgZnJvbSB0aGUK KyAgIGxpc3QsIG90aGVyd2lzZSB3ZSByZXR1cm4gYSBudWxsLiAgKi8KKwor c3RhdGljIHBpZF90CitoYXNfbXlfYWl4X3BhcmVudF9yZXBvcnRlZCAocGlk X3QgY2hpbGRfcGlkKQoreworICBwaWRfdCBteV9wYXJlbnQgPSBmaW5kX215 X2FpeF9wYXJlbnQgKGNoaWxkX3BpZCk7CisgIGF1dG8gaXQgPSBzdGQ6OmZp bmQgKGFpeF9wZW5kaW5nX3BhcmVudC5iZWdpbiAoKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgYWl4X3BlbmRpbmdfcGFyZW50LmVuZCAoKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgbXlfcGFyZW50KTsKKyAgaWYgKGl0ICE9IGFp eF9wZW5kaW5nX3BhcmVudC5lbmQgKCkpCisgIHsKKyAgICBteV9wYXJlbnQg PSAqaXQ7CisgICAgYWl4X3BlbmRpbmdfcGFyZW50LmVyYXNlIChpdCk7Cisg ICAgcmV0dXJuIG15X3BhcmVudDsKKyAgfQorICByZXR1cm4gMDsKK30KKwog LyogR2l2ZW4gUkVHTk8sIGEgZ2RiIHJlZ2lzdGVyIG51bWJlciwgcmV0dXJu IHRoZSBjb3JyZXNwb25kaW5nCiAgICBudW1iZXIgc3VpdGFibGUgZm9yIHVz ZSBhcyBhIHB0cmFjZSgpIHBhcmFtZXRlci4gIFJldHVybiAtMSBpZgogICAg dGhlcmUncyBubyBzdWl0YWJsZSBtYXBwaW5nLiAgQWxzbywgc2V0IHRoZSBp bnQgcG9pbnRlZCB0byBieQpAQCAtMTg3LDYgKzI3NCw0NyBAQCByczYwMDBf cHRyYWNlNjQgKGludCByZXEsIGludCBpZCwgbG9uZyBsb25nIGFkZHIsIGlu dCBkYXRhLCB2b2lkICpidWYpCiAgIHJldHVybiByZXQ7CiB9CiAKK3ZvaWQg cnM2MDAwX25hdF90YXJnZXQ6OnBvc3Rfc3RhcnR1cF9pbmZlcmlvciAocHRp ZF90IHB0aWQpCit7CisKKyAgLyogSW4gQUlYIHRvIHR1cm4gb24gbXVsdGkg cHJvY2VzcyBkZWJ1Z2dpbmcgaW4gcHRyYWNlCisgICAgIFBUX01VTFRJIGlz IHRoZSBvcHRpb24gdG8gYmUgcGFzc2VkLAorICAgICB3aXRoIHRoZSBwcm9j ZXNzIElEIHdoaWNoIGNhbiBmb3JrICgpIGFuZAorICAgICB0aGUgZGF0YSBw YXJhbWV0ZXIgW2ZvdXJ0aCBwYXJhbWV0ZXJdIG11c3QgYmUgMS4gICovCisK KyAgaWYgKCFBUkNINjQgKCkpCisgICAgcnM2MDAwX3B0cmFjZTMyIChQVF9N VUxUSSwgcHRpZC5waWQoKSwgMCwgMSwgMCk7CisgIGVsc2UKKyAgICByczYw MDBfcHRyYWNlNjQgKFBUX01VTFRJLCBwdGlkLnBpZCgpLCAwLCAxLCAwKTsK K30KKwordm9pZAorcnM2MDAwX25hdF90YXJnZXQ6OmZvbGxvd19mb3JrIChp bmZlcmlvciAqY2hpbGRfaW5mLCBwdGlkX3QgY2hpbGRfcHRpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3dhaXRraW5kIGZvcmtfa2lu ZCwgYm9vbCBmb2xsb3dfY2hpbGQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRldGFjaF9m b3JrKQoreworCisgIC8qIE9uY2UgdGhlIGZvcmsgZXZlbnQgaXMgZGV0ZWN0 ZWQgdGhlIGluZnJ1bi5jIGNvZGUKKyAgICAgY2FsbHMgdGhlIHRhcmdldF9m b2xsb3dfZm9yayB0byB0YWtlIGNhcmUgb2YKKyAgICAgZm9sbG93IGNoaWxk IGFuZCBkZXRhY2ggdGhlIGNoaWxkIGFjdGl2aXR5IHdoaWNoIGlzCisgICAg IGRvbmUgdXNpbmcgdGhlIGZ1bmN0aW9uIGJlbG93LiAgKi8KKworICBpbmZf cHRyYWNlX3RhcmdldDo6Zm9sbG93X2ZvcmsgKGNoaWxkX2luZiwgY2hpbGRf cHRpZCwgZm9ya19raW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZvbGxvd19jaGlsZCwgZGV0YWNoX2ZvcmspOworCisg IC8qIElmIHdlIGRldGFjaCBmb3JrIGFuZCBmb2xsb3cgY2hpbGQgd2UgZG8g bm90IHdhbnQgdGhlIGNoaWxkCisgICAgIHByb2Nlc3MgdG8gZ2VuZWF0ZSBl dmVudHMgdGhhdCBwdHJhY2UgY2FuIHRyYWNlLiAgSGVuY2Ugd2UKKyAgICAg ZGV0YWNoIGl0LiAgKi8KKworICBpZiAoZGV0YWNoX2ZvcmsgJiYgIWZvbGxv d19jaGlsZCkKKyAgeworICAgIGlmIChBUkNINjQgKCkpCisgICAgICByczYw MDBfcHRyYWNlNjQgKFBUX0RFVEFDSCwgY2hpbGRfcHRpZC5waWQgKCksIDAs IDAsIDApOworICAgIGVsc2UKKyAgICAgIHJzNjAwMF9wdHJhY2UzMiAoUFRf REVUQUNILCBjaGlsZF9wdGlkLnBpZCAoKSwgMCwgMCwgMCk7CisgIH0KK30K KwogLyogRmV0Y2ggcmVnaXN0ZXIgUkVHTk8gZnJvbSB0aGUgaW5mZXJpb3Iu ICAqLwogCiBzdGF0aWMgdm9pZApAQCAtNTA0LDcgKzYzMiw3IEBAIHJzNjAw MF9uYXRfdGFyZ2V0Ojp3YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdl dF93YWl0c3RhdHVzICpvdXJzdGF0dXMsCiAgIHBpZF90IHBpZDsKICAgaW50 IHN0YXR1cywgc2F2ZV9lcnJubzsKIAotICBkbworICB3aGlsZSAoMSkgCiAg ICAgewogICAgICAgc2V0X3NpZ2ludF90cmFwICgpOwogCkBAIC01MjksMTcg KzY1Nyw2NCBAQCByczYwMDBfbmF0X3RhcmdldDo6d2FpdCAocHRpZF90IHB0 aWQsIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyAqb3Vyc3RhdHVzLAogCiAg ICAgICAvKiBJZ25vcmUgdGVybWluYXRlZCBkZXRhY2hlZCBjaGlsZCBwcm9j ZXNzZXMuICAqLwogICAgICAgaWYgKCFXSUZTVE9QUEVEIChzdGF0dXMpICYm IGZpbmRfaW5mZXJpb3JfcGlkICh0aGlzLCBwaWQpID09IG51bGxwdHIpCi0J cGlkID0gLTE7CisgICAgICAgIGNvbnRpbnVlOwkKKyAgICAgIAorICAgICAg aWYgKHBpZCAhPSAtMSkKKyAgICAgIHsKKyAgICAgICAgLyogQ2hlY2sgZm9y IGEgZm9yayAoKSBldmVudC4gICovCisgICAgICAgIGlmICgoc3RhdHVzICYg MHhmZikgPT0gV19TRldURUQpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBD aGVja2luZyB3aGV0aGVyIGl0IGlzIGEgcGFyZW50IG9yIGEgY2hpbGQgZXZl bnQuICAqLworCisgICAgICAgICAgLyogSWYgdGhlIGV2ZW50IGlzIGEgY2hp bGQgd2UgY2hlY2sgaWYgdGhlcmUgd2FzIGEgcGFyZW50CisgICAgICAgICAg ICAgZXZlbnQgcmVjb3JkZWQgYmVmb3JlLiAgSWYgeWVzIHdlIGdvdCB0aGUg cGFyZW50IGNoaWxkCisgICAgICAgICAgICAgcmVsYXRpb25zaGlwLiAgSWYg bm90IHdlIHB1c2ggdGhpcyBjaGlsZCBhbmQgd2FpdCBmb3IKKyAgICAgICAg ICAgICB0aGUgbmV4dCBmb3JrICgpIGV2ZW50LiAgKi8KKworICAgICAgICAg IGlmIChmaW5kX2luZmVyaW9yX3BpZCAodGhpcywgcGlkKSA9PSBudWxscHRy KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwaWRfdCBwYXJlbnRf cGlkID0gaGFzX215X2FpeF9wYXJlbnRfcmVwb3J0ZWQgKHBpZCk7CisgICAg ICAgICAgICAgIGlmIChwYXJlbnRfcGlkID4gMCkKKyAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgIG91cnN0YXR1cy0+c2V0X2ZvcmtlZCAocHRp ZF90IChwaWQpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHRpZF90IChw YXJlbnRfcGlkKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBh aXhfcmVtZW1iZXJfY2hpbGQgKHBpZCk7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIC8qIElmIHRoZSBldmVudCBpcyBhIHBhcmVudCB3ZSBjaGVj ayBpZiB0aGVyZSB3YXMgYSBjaGlsZAorICAgICAgICAgICAgICAgZXZlbnQg cmVjb3JkZWQgYmVmb3JlLiAgSWYgeWVzIHdlIGdvdCB0aGUgcGFyZW50IGNo aWxkCisgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAuICBJZiBub3Qgd2Ug cHVzaCB0aGlzIHBhcmVudCBhbmQgd2FpdCBmb3IKKyAgICAgICAgICAgICAg IHRoZSBuZXh0IGZvcmsgKCkgZXZlbnQuICAqLworCisgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBwaWRfdCBjaGlsZF9w aWQgPSBoYXNfbXlfYWl4X2NoaWxkX3JlcG9ydGVkIChwaWQpOworICAgICAg ICAgICAgICBpZiAoY2hpbGRfcGlkID4gMCkKKyAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIG91cnN0YXR1cy0+c2V0X2ZvcmtlZCAocHRpZF90 IChjaGlsZF9waWQpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHRpZF90 IChwaWQpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGFpeF9y ZW1lbWJlcl9wYXJlbnQgKHBpZCk7CisgICAgICAgICAgICB9ICAgCisgICAg ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAg ICAgYnJlYWs7CiAgICAgfQotICB3aGlsZSAocGlkID09IC0xKTsKLQorICB9 CiAgIC8qIEFJWCBoYXMgYSBjb3VwbGUgb2Ygc3RyYW5nZSByZXR1cm5zIGZy b20gd2FpdCgpLiAgKi8KIAogICAvKiBzdG9wIGFmdGVyIGxvYWQiIHN0YXR1 cy4gICovCiAgIGlmIChzdGF0dXMgPT0gMHg1N2MpCiAgICAgb3Vyc3RhdHVz LT5zZXRfbG9hZGVkICgpOwotICAvKiBzaWduYWwgMC4gIEkgaGF2ZSBubyBp ZGVhIHdoeSB3YWl0KDIpIHJldHVybnMgd2l0aCB0aGlzIHN0YXR1cyB3b3Jk LiAgKi8KLSAgZWxzZSBpZiAoc3RhdHVzID09IDB4N2YpCisgIC8qIDB4N2Yg aXMgc2lnbmFsIDAuICAqLworICAvKiAweDE3ZiBhbmQgMHgxMzdmIGluIGhl eGFkZWNpbWFsIGFyZSBzdGF0dXMgcmV0dXJuZWQgaWYKKyAgICAgaWYgd2Ug Zm9sbG93IHBhcmVudCwKKyAgICAgYSBzd2l0Y2ggaXMgbWFkZSB0byBhIGNo aWxkIHBvc3QgcGFyZW50IGV4ZWN1dGlvbgorICAgICBhbmQgY2hpbGQgY29u dGludWVzIGl0cyBleGVjdXRpb24gW3VzZXIgc3dpdGNoZXMgdG8gY2hpbGQg YW5kCisgICAgIHByZXNzZXMgY29udGludWVdLiAgKi8KKyAgZWxzZSBpZiAo c3RhdHVzID09IDB4N2YgfHwgc3RhdHVzID09IDB4MTdmIHx8IHN0YXR1cyA9 PSAweDEzN2YpCiAgICAgb3Vyc3RhdHVzLT5zZXRfc3B1cmlvdXMgKCk7CiAg IC8qIEEgbm9ybWFsIHdhaXRzdGF0dXMuICBMZXQgdGhlIHVzdWFsIG1hY3Jv cyBkZWFsIHdpdGggaXQuICAqLwogICBlbHNlCi0tIAoyLjMxLjEKCg== --_004_BY5PR15MB3540691A4BF014D2D9A6D5FAD6049BY5PR15MB3540namp_--