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 64F0A3858D39 for ; Wed, 19 Oct 2022 10:57:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 64F0A3858D39 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 (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29JAfv85006834; Wed, 19 Oct 2022 10:57:18 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=cYdvM5KFoB4Plilvl+UlfXGYOk+Yp9IaTqBx9inZ7kA=; b=FjPOD7MisYj0Q/X3UUJ1LKdxV87344M/isYLyPgyfM1XlVrQp5TBIbRakZIwvyDyrU35 kSDu8BAJi0iNomw+TYXawlnuu7th5JVGe91GpF4ktV7FpZbnBOnwYnfqC+6hck8bY6uI bdkFBeQNTMrqWoDS87q531tJL4ammnVlOcE9nW+yspGouXCzDlrzDZbmcIwXhfLhgUYN 45P0gqFvGOgUwpts8ncX+ETpRU2Se1rtdui6NPbDnhD2DS1ouccTkeiGjFJhmrZm441b GusQC9m4KhAkMxRYyGKFrWedIZ5niHYoBTxj35hzrN+1HVMmdvwpKSpYkguLp6pZ5XMf Jw== Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2175.outbound.protection.outlook.com [104.47.59.175]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3kafqbgdf1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 19 Oct 2022 10:57:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ArLUn5l4nnTV4jPI3lbqez0eiUE6aogOoRSkpCL4wr4PucTKYTblb4y/0zBU4qLscr8KyIOo+CUC15ZAOBB0szyDz+EO/GQGhW1mxyC2WDyJi877+tU1oOrav9CYb5JNqlLbRlHrmY/EnzT5odTWGtTA8xLh8wuBEf2AB+XPvob7Z91ccfLy+5QJw/2rfYaWHB4gFBnWMNc5DaAmCK8vwb0G5m44elXUYtfWGrnpx5hhoGV/URl7WY2BL4iEiwLrZklv0kpa7XjumfSvq6aVroyJNJ8PODgeIzBuLgvsuTY5QLkf/4A6qE2YigPghJY0heoENLABAQYgU6UMq0Y8Ng== 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=cYdvM5KFoB4Plilvl+UlfXGYOk+Yp9IaTqBx9inZ7kA=; b=j9LUk4ZTb0NwiJid4E5892N/WGAQKWttAMCcYv8HhSUazmiUEnoXiDs700PUr+oJWl087DpZhr6ohTZaGWWIRoWmorQ3UvfVZyyfrTxWXYyw6lbcHsR2JygochR9w5+5mrpVYzuP+1gCKiinb+13wOuTHLeGk0ZRZ4uPpE0xoBV48lwvynhNw8QSuRHt99VSO3X2TAULeIWuZpTRrETJjUyTyOMabjZAaP7Q94N4BSf2bcZF5ksry13J0G9D+bW6SSIWpJyb9ckBwmRhSYHzy3QisfEiZQSTeUi8adn+/hzyko393GAvCpTUAiH3HKP+9Rn4COsP07yuCnHV7bXEfg== 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 BN8PR15MB2657.namprd15.prod.outlook.com (2603:10b6:408:c9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 19 Oct 2022 10:57:14 +0000 Received: from CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::159e:3e92:9c5:72e3]) by CH2PR15MB3544.namprd15.prod.outlook.com ([fe80::159e:3e92:9c5:72e3%4]) with mapi id 15.20.5723.032; Wed, 19 Oct 2022 10:57:14 +0000 From: Aditya Kamath1 To: Ulrich Weigand , "simark@simark.ca" , "gdb-patches@sourceware.org" CC: Sangamesh Mallayya Subject: Re: [PATCH] Enable multi process debugging for AIX Thread-Topic: [PATCH] Enable multi process debugging for AIX Thread-Index: AQHYtiqs7fBWvNWu7U6EFq8QRxtmC64V4wdU Date: Wed, 19 Oct 2022 10:57:14 +0000 Message-ID: References: <44ad453e-6196-d334-312f-d5d0414f4476@simark.ca> 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_|BN8PR15MB2657:EE_ x-ms-office365-filtering-correlation-id: d2607d12-cd22-4841-852a-08dab1c0ae8d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uNhgo/ABsrGpHv0QU4/n6cP35yxq9FVwnQlJ2vqtogdkJbAga/h30XT5+pK+NnkRKzIOLDlGLkaOR5pGYq1JEcBfhPjNymWfyOHMeRmxdWqYqDtguZW01gi9spApMAwmXUgigulxKZSG+JjAP2kbBE2ak/P+KCov4UdBB/u1HhpGL9FMvt0YH25yCcAVHotTurvOJfw9cQCoKFc1oGh5HxYvTxH9EOEb8/MxUNR7SIiuUgxv6Gr+c5IZKhT0K9vOhgKDKPatqYgcRKnRv9/IUyiq1crtqhsxAHT2BqFWd99tSMA6UN6nYFu5GbEVv81Eyifd4Juw1uVDlQGpHaS065nDNT21ze0vQGnmzb7mlGE1TjGJpYIxbPFwRCZXjblVHYXojiL5KF3V7AbzJzvu74m0i9Ls/cbIYgWkvGC8PfsOPb3wfhae/1zVMxIrobPQ6thA+fIgYnH7IpuHHv0U9srVSVHjAHDwo/B9JjB7wbppyb8kZFrtPdZ6DZYVTl+J2UP+HyoUhbEYZv2RRVWCs3BwCRpmILVg9vF/c3IEz88f36h+8DqGEkkigqWPmogHdrEuW8hvmuPj8j5XyxKa3TM0uCY8rc8hzWeXkpSZ5bcYawkV6lxfXqC0eoQ0BGBjVMsHJHBK7WRCev3GAdsUQWf29QYA25Cs7UCiNh6/PW7ztUfUWJLz/zXUS9vmqiZN7EzBpAyCoJYbi5mJViD7dMc7Sg10T5CuljVlqYRvf9y7yEAFk04wvCVaIJ5M32CiyaqsAJN6EG9K6RDDJjJt+XoAVRkjteJ2ZVQ6pchPf30= 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:(13230022)(346002)(136003)(376002)(39860400002)(396003)(366004)(451199015)(33656002)(19627405001)(6506007)(26005)(53546011)(7696005)(9686003)(478600001)(110136005)(66899015)(86362001)(38100700002)(166002)(186003)(55016003)(38070700005)(83380400001)(8936002)(5660300002)(52536014)(122000001)(41300700001)(71200400001)(4326008)(2906002)(99936003)(8676002)(66556008)(66476007)(76116006)(316002)(91956017)(64756008)(66946007)(66446008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?krB7U6JczcTcV8A5tqjskUC2N+bi2OMCjphnww+4bJNrT45G9Y6M8mUIrHpu?= =?us-ascii?Q?bfY3OTndpFxusZ5zJU6PmoXQWSLiYm6OTUSoLhaPHyXn/bcBR9Ox5cmyp6dm?= =?us-ascii?Q?F547IZfpggMkuVfhR8ycIGCvmu8orSvMdfKyDyFIM4LlqoA9Wuu+BwiEaN69?= =?us-ascii?Q?hR3M2Z6uKeWqZgAcgzZfJ45/+0MgAK2XYN2H2A8DpLlWEYeGDivmv3VXci2g?= =?us-ascii?Q?YaPUNh2BaiR/IqNQozgRWAB3+oaaAMOr5cvG0QgUjabwhebMMpCwRVeuK85z?= =?us-ascii?Q?4wSkAg2yx67yfVD2XBW5PGu71upW3EUuoJMOWjKXNcJVt2f6LhUOM7PuiQuO?= =?us-ascii?Q?ewnzK4umgBOTXbZ+drfnwwZkJInWgjPl1eBdEzgdEVmVsN2s+fq3SdvETHHv?= =?us-ascii?Q?T4VMOg/VrqbLz+tPZve3Ay2OXr5LXn0yrZZQ1g6wzJyZpCc7f/RVtM/txy0A?= =?us-ascii?Q?wxd7po2jgLDEUUJjOIkBOpWDKGQupjOY8v2X+T3tXgFoWk92rh5GQqTn/D0I?= =?us-ascii?Q?fEFyQVTAffAksmNZrpv5TEALp6qu1b3avZyRUXwQpD7ZNfOcHSVWw03Dxam3?= =?us-ascii?Q?2zYOkWgnqlEfuez+H7xi8Is2GMwGlh+rXIDLKD/GPzES1FVwIgq4NkUcsVhS?= =?us-ascii?Q?chInmXhdpSONbc46JvEsMEA2X0UPWrG2L6i4GL/qXkN+OWRXuQ5hSO657YIj?= =?us-ascii?Q?GWo9FB3z3uWmFiqydvXkRznVD8GCgvbtRzZOViLikhMA5UdRUCU+3944JqI9?= =?us-ascii?Q?NPhsJBOk+Lqtusulb5pKc1TRjbmbvC3lmL9ExiIicElDl7HAB5w3SHxC8FxV?= =?us-ascii?Q?kAB/l2zW/j7jqKSujGyZ5VGNSJgPb0/aHTK4kE/FwdoTd1Tbd0wh0RWNGl11?= =?us-ascii?Q?V6D25vqSk6OL1VvqMHkOacbJZyrXIJLn0jMGJ7A2Qb/Ve+PjHl0w/uVoa0jJ?= =?us-ascii?Q?3rBD/SQC74s5OTvteFlwSaBetYMLEUpw+bfjhJ92pW+G8KhNVkP9o3Gwei+o?= =?us-ascii?Q?OGnm88AkvjSLM2JmrN6GMNjPwjr6hYKOTXLzgFWpnSCH8DID2SAe/sr67qek?= =?us-ascii?Q?t741bMsmsA0OmJsGqT40XiO5zoOwrkAwYH3v1zTMgtJaS5HKgD5kqsOHB02i?= =?us-ascii?Q?2MhfON0qFhA2F37/os9oKmyat8iHGFp9GbvXR2I40a91+RbRg1smEy6cPkx0?= =?us-ascii?Q?kQDagH0zng9cjwW4Dd6JUhLzaH2awB936ZbuZ4GchT0+wTnSN6V2QnOhNHqK?= =?us-ascii?Q?EqOrWG5mQDwfTU6MkFPNmJhCxvG9u4WZEnZEHMPPKgs9zpi+Z4jYmNYvAvCz?= =?us-ascii?Q?XijMpoLxi6rcddbrZ2b76atGqSyO4jbhjzwZ8plEAr/BT9VX4lJPDOhLS1RN?= =?us-ascii?Q?oH0J6s2usItfTeW3bo++jWfljxQWWVE/6riA3CrlcjqL6ykxuR1ca37HSlW1?= =?us-ascii?Q?hc/DOnU5eEGpysG7sxa4y3QfeMsaHgfrWfzhCECcmjth6OzdhrOF4fHKHieZ?= =?us-ascii?Q?aSs5ty697QJer5P4TqespISrGmNqygs3kp3OW8IyqRkjlaTvAvJbmTBHlF7j?= =?us-ascii?Q?gEOGWHcHFV6ZpqfXdIuwiN4NV8Tsd7OQDLa5mrwz?= Content-Type: multipart/mixed; boundary="_004_CH2PR15MB35444CA38B01CE6FF5803DD8D62B9CH2PR15MB3544namp_" 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: d2607d12-cd22-4841-852a-08dab1c0ae8d X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2022 10:57:14.6068 (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: p6m570hqLrfncWDC/jfIan4pdUNL5uSDDIEdSxxy73anfqv93hvIwXb0q0MDWXQnmLhxE3K6vu7JAZxcv+rYWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR15MB2657 X-Proofpoint-ORIG-GUID: p5gIB_ONcFA289dS8zsmQkqCsWKdO2_R X-Proofpoint-GUID: p5gIB_ONcFA289dS8zsmQkqCsWKdO2_R X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-19_06,2022-10-19_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 mlxlogscore=546 clxscore=1015 phishscore=0 suspectscore=0 mlxscore=0 malwarescore=0 bulkscore=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210190058 X-Spam-Status: No, score=-3.8 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: Message-ID: <20221019105714.XBaaWIT_D0snGJ_nN0tYiGjuAz9ZAonVzohiNCSdh7c@z> --_004_CH2PR15MB35444CA38B01CE6FF5803DD8D62B9CH2PR15MB3544namp_ Content-Type: multipart/alternative; boundary="_000_CH2PR15MB35444CA38B01CE6FF5803DD8D62B9CH2PR15MB3544namp_" --_000_CH2PR15MB35444CA38B01CE6FF5803DD8D62B9CH2PR15MB3544namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ulrich and Simon, Please find attached a new patch on this. [See: 0001-Enable-multi-process-d= ebugging-for-AIX.patch] I have addressed your issue of having a fork () events from other threads. = There is one difference between AIX and the way freebsd can handle. freebsd= gets the parent child relationship via a structure which has this info. Th= is is obtained using LWP_INFO option in the ptrace () call. However, in AIX= we do not have the same luxury of LWP_INFO. Here is how it works. A fork (= ) event can be caused by the debugee only. Once the child is obtained, we k= now for a fact that either it is detached or stopped in the instruction whe= re the parent was before fork () event. The child is not going to generate = any fork event. Hence only this debugee which the parent will be able to fo= rk again. As far as multiple thread fork is concerned, I have taken care of= it in the code by a fact that a parent process will be in the inferior lis= t. Coming to the W_SFWTED, this also is taken care. Kindly see the did_aix_inf= erior_fork () function. I have kept an assertion as well just in case I get some other event apart = from fork () comes in while I figure out the parent child relationship. Ide= ally, I shouldn't get any other event in AIX. Kindly let me know what is your feeback on this. If its good kindly push the same. Have a nice day ahead. Thanks and regards, Aditya. ________________________________ From: Ulrich Weigand Sent: 22 August 2022 18:55 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: >Enable PT_MULTI option in ptrace () call along with the process ID >parameter and the data parameter enabled. Usually one enables multi >process debugging for all the process debugged in post_startup_inferior >() function like in the Linux world. >On a fork () event either the child can report a wait event first or >the parent. >A status of 57e in hexadecimal or 1406 in decimal is returned from the >waitpid () with the process ID. This can be used to detect a fork () >event. >Since the child process will not have an inferior, we check with the >find_inferior_pid () to see if the child reports first. If it is the >next wait event is generated by the parent in AIX. This is how we >absorb the parent and child event to fetch their process ID. >The vice versa of the above can be done if the parent process reports a >fork () event first. >Once it is done we tell the gdb core that we forked with ourstatus by passing the child ptid. Simon already commented on this in his initial review, and I think this is still not completely addressed. Most importantly, your code simply assumes that it is guaranteed that the two wait events for parent and child will arrive immediately after one another, and the only uncertain issue is the sequence between the two. Is is actually guaranteed that this is the case? Or could we also have random other wait events (e.g. from other threads / processes) that can be reported in between? In that case, your implementation now introduces a race condition where some event might get lost. A proper fix might then have to be more involved, e.g. by storing those event on some sort of "pending list" and only report a fork event to common code once both sides have checked in, similar to the FreeBSD approach Simon already pointed out to you. As to this: +# define AIX_FORK_EVENT 0x57e It would be much preferable to use the official names for these constants. For example, the document you mention here: >More about this can be read in the document >https://www.ibm.com/docs/en/aix/7.2?topic=3Dp-ptrace-ptracex-ptrace64- subroutine talks about: W_SFWTED Process stopped during execution of the fork subroutine. Is this the 0x57e event? If so, we should call it W_SFWTED in GDB as well, and not some made-up name. It would be great if you could find the official names for all the other "magic" constants like 0x7f, 0x17f, 0x137f etc. as well. Bye, Ulrich --_000_CH2PR15MB35444CA38B01CE6FF5803DD8D62B9CH2PR15MB3544namp_-- --_004_CH2PR15MB35444CA38B01CE6FF5803DD8D62B9CH2PR15MB3544namp_ 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=6934; creation-date="Wed, 19 Oct 2022 10:57:06 GMT"; modification-date="Wed, 19 Oct 2022 10:57:14 GMT" Content-Transfer-Encoding: base64 RnJvbSA0M2E3MGQ2NjIxYTMwMGZlNmZhOGExM2VmMDJlMGMzZmM3YWFhYThj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVmlkeWFk aGFyIEthbWF0aCA8QWRpdHlhLkthbWF0aDFAaWJtLmNvbT4KRGF0ZTogV2Vk LCAxOSBPY3QgMjAyMiAwNTozNTo0NCAtMDUwMApTdWJqZWN0OiBbUEFUQ0hd IEVuYWJsZSBtdWx0aS1wcm9jZXNzIGRlYnVnZ2luZyBmb3IgQUlYCgotLS0K IGdkYi9yczYwMDAtYWl4LW5hdC5jIHwgMTgzICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAx NzkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9nZGIvcnM2MDAwLWFpeC1uYXQuYyBiL2dkYi9yczYwMDAtYWl4LW5hdC5j CmluZGV4IGNiMTQxNDI3Njk2Li4zOTM4ODk2ODUzNyAxMDA2NDQKLS0tIGEv Z2RiL3JzNjAwMC1haXgtbmF0LmMKKysrIGIvZ2RiL3JzNjAwMC1haXgtbmF0 LmMKQEAgLTkxLDEwICs5MSwxMyBAQCBjbGFzcyByczYwMDBfbmF0X3Rhcmdl dCBmaW5hbCA6IHB1YmxpYyBpbmZfcHRyYWNlX3RhcmdldAogCiAgIHB0aWRf dCB3YWl0IChwdGlkX3QsIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyAqLCB0 YXJnZXRfd2FpdF9mbGFncykgb3ZlcnJpZGU7CiAKKyAgLyogRm9yayBkZXRl Y3Rpb24gcmVsYXRlZCBmdW5jdGlvbnMsIEZvciBhZGRpbmcgbXVsdGkgcHJv Y2VzcyBkZWJ1Z2dpbmcKKyAgICAgc3VwcG9ydC4gICovCisgIHZvaWQgZm9s bG93X2ZvcmsgKGluZmVyaW9yICosIHB0aWRfdCwgdGFyZ2V0X3dhaXRraW5k LCBib29sLCBib29sKSBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogCi0gIHZv aWQgcG9zdF9zdGFydHVwX2luZmVyaW9yIChwdGlkX3QgcHRpZCkgb3ZlcnJp ZGUKLSAgeyAvKiBOb3RoaW5nLiAgKi8gfQorICB2b2lkIHBvc3Rfc3RhcnR1 cF9pbmZlcmlvciAocHRpZF90IHB0aWQpIG92ZXJyaWRlOwogCiBwcml2YXRl OgogICBlbnVtIHRhcmdldF94ZmVyX3N0YXR1cwpAQCAtMTA3LDYgKzExMCw4 MyBAQCBjbGFzcyByczYwMDBfbmF0X3RhcmdldCBmaW5hbCA6IHB1YmxpYyBp bmZfcHRyYWNlX3RhcmdldAogCiBzdGF0aWMgcnM2MDAwX25hdF90YXJnZXQg dGhlX3JzNjAwMF9uYXRfdGFyZ2V0OwogCisvKiBUaGUgYmVsb3cgZGVjbGFy YXRpb24gaXMgdG8gdHJhY2sgbnVtYmVyIG9mIHRpbWVzLCBwYXJlbnQgaGFz CisgICByZXBvcnRlZCBmb3JrIGV2ZW50IGJlZm9yZSBpdHMgY2hpbGRyZW4u ICAqLworCitzdGF0aWMgc3RkOjpsaXN0PHBpZF90PiBhaXhfcGVuZGluZ19w YXJlbnQ7CisKKy8qIFRoZSBiZWxvdyBkZWNsYXJhdGlvbiBpcyBmb3IgYSBj aGlsZCBwcm9jZXNzIGV2ZW50IHRoYXQKKyAgIGlzIHJlcG9ydGVkIGJlZm9y ZSBpdHMgY29ycmVzcG9uZGluZyBwYXJlbnQgcHJvY2VzcyBpbgorICAgdGhl IGV2ZW50IG9mIGEgZm9yayAoKS4gICovCisKK3N0YXRpYyBzdGQ6Omxpc3Q8 cGlkX3Q+IGFpeF9wZW5kaW5nX2NoaWxkcmVuOworCitzdGF0aWMgdm9pZAor YWl4X3JlbWVtYmVyX2NoaWxkIChwaWRfdCBwaWQpCit7CisgIGFpeF9wZW5k aW5nX2NoaWxkcmVuLnB1c2hfZnJvbnQgKHBpZCk7Cit9CisKK3N0YXRpYyB2 b2lkCithaXhfcmVtZW1iZXJfcGFyZW50IChwaWRfdCBwaWQpCit7CisgIGFp eF9wZW5kaW5nX3BhcmVudC5wdXNoX2Zyb250IChwaWQpOworfQorCisvKiBJ biB0aGUgYmVsb3cgZnVuY3Rpb24gd2UgY2hlY2sgaWYgdGhlcmUgd2FzIGFu eSBjaGlsZAorICAgcHJvY2VzcyBwZW5kaW5nLiAgSWYgaXQgZXhpc3RzIHdl IHJldHVybiBpdCBmcm9tIHRoZQorICAgbGlzdCwgb3RoZXJ3aXNlIHdlIHJl dHVybiBhIG51bGwuICAqLworCitzdGF0aWMgcGlkX3QKK2FpeF9pc19jaGls ZF9wZW5kaW5nICgpCit7CisgIGF1dG8gaXQgPSBhaXhfcGVuZGluZ19jaGls ZHJlbi5iZWdpbiAoKTsKKyAgaWYgKGl0ICE9IGFpeF9wZW5kaW5nX2NoaWxk cmVuLmVuZCAoKSkKKyAgeworICAgIGludCBjaGlsZCA9ICppdDsKKyAgICBh aXhfcGVuZGluZ19jaGlsZHJlbi5lcmFzZSAoaXQpOworICAgIHJldHVybiBj aGlsZDsKKyAgfQorICByZXR1cm4gMDsKK30KKworLyogSW4gdGhlIGJlbG93 IGZ1bmN0aW9uIHdlIGNoZWNrIGlmIHRoZXJlIHdhcyBhbnkgcGFyZW50IAor ICAgcHJvY2VzcyBwZW5kaW5nLiAgSWYgaXQgZXhpc3RzIHdlIHJldHVybiBp dCBmcm9tIHRoZQorICAgbGlzdCwgb3RoZXJ3aXNlIHdlIHJldHVybiBhIG51 bGwuICAqLworCitzdGF0aWMgcGlkX3QKK2FpeF9pc19wYXJlbnRfcGVuZGlu ZyAoKQoreworICBhdXRvIGl0ID0gYWl4X3BlbmRpbmdfcGFyZW50LmJlZ2lu ICgpOworICBpZiAoaXQgIT0gYWl4X3BlbmRpbmdfcGFyZW50LmVuZCAoKSkK KyAgeworICAgIGludCBwYXJlbnQgPSAqaXQ7CisgICAgYWl4X3BlbmRpbmdf cGFyZW50LmVyYXNlIChpdCk7CisgICAgcmV0dXJuIHBhcmVudDsKKyAgfQor ICByZXR1cm4gMDsKK30KKworLyogVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYg dGhlcmUgd2FzIGEgZm9yayAoKSBldmVudC4gICovCisKK3N0YXRpYyBib29s CitkaWRfYWl4X2luZmVyaW9yX2ZvcmsgKGludCBzdGF0dXMpCit7CisgIC8q IElmIG11bHRpLXByb2Nlc3MgZGVidWcgbW9kZSBpcyBlbmFibGVkLCB0aGUg c3RhdHVzCisgICAgIGxvY2F0aW9uIGlzIHNldCB0byBXX1NGV1RFRC4gICov CisKKyAgc3RhdHVzID0gc3RhdHVzICYgMHhmZjsKKworICAvKiBFbGltaW5h dGUgdGhlIGxhc3QgZmV3IGJpdHMuIElmIHRoZSBXX1NGV1RFRCBpcyBzZXQK KyAgICAgd2hpY2ggaXMgZXF1YWwgdG8gMHg3ZSwgaXQgaXMgYSBmb3JrIGV2 ZW50IG90aGVyd2lzZQorICAgICBpdCBpcyBub3QuICAqLworCisgIGlmIChz dGF0dXMgXiBXX1NGV1RFRCkKKyAgICByZXR1cm4gZmFsc2U7CisgIGVsc2UK KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLyogR2l2ZW4gUkVHTk8sIGEgZ2Ri IHJlZ2lzdGVyIG51bWJlciwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nCiAg ICBudW1iZXIgc3VpdGFibGUgZm9yIHVzZSBhcyBhIHB0cmFjZSgpIHBhcmFt ZXRlci4gIFJldHVybiAtMSBpZgogICAgdGhlcmUncyBubyBzdWl0YWJsZSBt YXBwaW5nLiAgQWxzbywgc2V0IHRoZSBpbnQgcG9pbnRlZCB0byBieQpAQCAt MTg3LDYgKzI2Nyw0NyBAQCByczYwMDBfcHRyYWNlNjQgKGludCByZXEsIGlu dCBpZCwgbG9uZyBsb25nIGFkZHIsIGludCBkYXRhLCB2b2lkICpidWYpCiAg IHJldHVybiByZXQ7CiB9CiAKK3ZvaWQgcnM2MDAwX25hdF90YXJnZXQ6OnBv c3Rfc3RhcnR1cF9pbmZlcmlvciAocHRpZF90IHB0aWQpCit7CisKKyAgLyog SW4gQUlYIHRvIHR1cm4gb24gbXVsdGkgcHJvY2VzcyBkZWJ1Z2dpbmcgaW4g cHRyYWNlCisgICAgIFBUX01VTFRJIGlzIHRoZSBvcHRpb24gdG8gYmUgcGFz c2VkLAorICAgICB3aXRoIHRoZSBwcm9jZXNzIElEIHdoaWNoIGNhbiBmb3Jr ICgpIGFuZAorICAgICB0aGUgZGF0YSBwYXJhbWV0ZXIgW2ZvdXJ0aCBwYXJh bWV0ZXJdIG11c3QgYmUgMS4gICovCisKKyAgaWYgKCFBUkNINjQgKCkpCisg ICAgcnM2MDAwX3B0cmFjZTMyIChQVF9NVUxUSSwgcHRpZC5waWQoKSwgMCwg MSwgMCk7CisgIGVsc2UKKyAgICByczYwMDBfcHRyYWNlNjQgKFBUX01VTFRJ LCBwdGlkLnBpZCgpLCAwLCAxLCAwKTsKK30KKwordm9pZAorcnM2MDAwX25h dF90YXJnZXQ6OmZvbGxvd19mb3JrIChpbmZlcmlvciAqY2hpbGRfaW5mLCBw dGlkX3QgY2hpbGRfcHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0X3dhaXRraW5kIGZvcmtfa2luZCwgYm9vbCBmb2xsb3dfY2hpbGQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sIGRldGFjaF9mb3JrKQoreworCisgIC8qIE9uY2Ug dGhlIGZvcmsgZXZlbnQgaXMgZGV0ZWN0ZWQgdGhlIGluZnJ1bi5jIGNvZGUK KyAgICAgY2FsbHMgdGhlIHRhcmdldF9mb2xsb3dfZm9yayB0byB0YWtlIGNh cmUgb2YKKyAgICAgZm9sbG93IGNoaWxkIGFuZCBkZXRhY2ggdGhlIGNoaWxk IGFjdGl2aXR5IHdoaWNoIGlzCisgICAgIGRvbmUgdXNpbmcgdGhlIGZ1bmN0 aW9uIGJlbG93LiAgKi8KKworICBpbmZfcHRyYWNlX3RhcmdldDo6Zm9sbG93 X2ZvcmsgKGNoaWxkX2luZiwgY2hpbGRfcHRpZCwgZm9ya19raW5kLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19j aGlsZCwgZGV0YWNoX2ZvcmspOworCisgIC8qIElmIHdlIGRldGFjaCBmb3Jr IGFuZCBmb2xsb3cgY2hpbGQgd2UgZG8gbm90IHdhbnQgdGhlIGNoaWxkCisg ICAgIHByb2Nlc3MgdG8gZ2VuZWF0ZSBldmVudHMgdGhhdCBwdHJhY2UgY2Fu IHRyYWNlLiAgSGVuY2Ugd2UKKyAgICAgZGV0YWNoIGl0LiAgKi8KKworICBp ZiAoZGV0YWNoX2ZvcmsgJiYgIWZvbGxvd19jaGlsZCkKKyAgeworICAgIGlm IChBUkNINjQgKCkpCisgICAgICByczYwMDBfcHRyYWNlNjQgKFBUX0RFVEFD SCwgY2hpbGRfcHRpZC5waWQgKCksIDAsIDAsIDApOworICAgIGVsc2UKKyAg ICAgIHJzNjAwMF9wdHJhY2UzMiAoUFRfREVUQUNILCBjaGlsZF9wdGlkLnBp ZCAoKSwgMCwgMCwgMCk7CisgIH0KK30KKwogLyogRmV0Y2ggcmVnaXN0ZXIg UkVHTk8gZnJvbSB0aGUgaW5mZXJpb3IuICAqLwogCiBzdGF0aWMgdm9pZApA QCAtNTM4LDkgKzY1OSw2MyBAQCByczYwMDBfbmF0X3RhcmdldDo6d2FpdCAo cHRpZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyAqb3Vyc3Rh dHVzLAogICAvKiBzdG9wIGFmdGVyIGxvYWQiIHN0YXR1cy4gICovCiAgIGlm IChzdGF0dXMgPT0gMHg1N2MpCiAgICAgb3Vyc3RhdHVzLT5zZXRfbG9hZGVk ICgpOwotICAvKiBzaWduYWwgMC4gIEkgaGF2ZSBubyBpZGVhIHdoeSB3YWl0 KDIpIHJldHVybnMgd2l0aCB0aGlzIHN0YXR1cyB3b3JkLiAgKi8KLSAgZWxz ZSBpZiAoc3RhdHVzID09IDB4N2YpCisgIC8qIDB4N2YgaXMgc2lnbmFsIDAu ICAqLworICAvKiAweDE3ZiBhbmQgMHgxMzdmIGluIGhleGFkZWNpbWFsIGFy ZSBzdGF0dXMgcmV0dXJuZWQgaWYKKyAgICAgaWYgd2UgZm9sbG93IHBhcmVu dCwKKyAgICAgYSBzd2l0Y2ggaXMgbWFkZSB0byBhIGNoaWxkIHBvc3QgcGFy ZW50IGV4ZWN1dGlvbgorICAgICBhbmQgY2hpbGQgY29udGludWVzIGl0cyBl eGVjdXRpb24gW3VzZXIgc3dpdGNoZXMgdG8gY2hpbGQgYW5kCisgICAgIHBy ZXNzZXMgY29udGludWVdLiAgKi8KKyAgZWxzZSBpZiAoc3RhdHVzID09IDB4 N2YgfHwgc3RhdHVzID09IDB4MTdmIHx8IHN0YXR1cyA9PSAweDEzN2YpCiAg ICAgb3Vyc3RhdHVzLT5zZXRfc3B1cmlvdXMgKCk7CisgIC8qIENoZWNrIGZv ciBhIGZvcmsgKCkgZXZlbnQuICAqLworICBlbHNlIGlmIChkaWRfYWl4X2lu ZmVyaW9yX2ZvcmsgKHN0YXR1cykpCisgIHsKKyAgICAvKiBDaGVja2luZyB3 aGV0aGVyIGl0IGlzIGEgcGFyZW50IG9yIGEgY2hpbGQgZXZlbnQuICAqLwor CisgICAgaWYgKGZpbmRfaW5mZXJpb3JfcGlkICh0aGlzLCBwaWQpID09IG51 bGxwdHIpCisgICAgICBhaXhfcmVtZW1iZXJfY2hpbGQgKHBpZCk7CisgICAg ZWxzZQorICAgICAgYWl4X3JlbWVtYmVyX3BhcmVudCAocGlkKTsKKworICAg IHdoaWxlICgxKQorICAgIHsKKyAgICAgIHBpZCA9IHdhaXRwaWQgKC0xLCAm c3RhdHVzLCAwKTsKKyAgICAgIGdkYl9hc3NlcnQgKGRpZF9haXhfaW5mZXJp b3JfZm9yayAoc3RhdHVzKSA9PSB0cnVlKTsKKyAgICAgIAorICAgICAgLyog SWYgdGhlIGV2ZW50IGlzIGEgY2hpbGQgd2UgY2hlY2sgaWYgdGhlcmUgd2Fz IGEgcGFyZW50CisgICAgICAgICBldmVudCByZWNvcmRlZCBiZWZvcmUuICBJ ZiB5ZXMgd2UgZ290IHRoZSBwYXJlbnQgY2hpbGQKKyAgICAgICAgIHJlbGF0 aW9uc2hpcC4gIElmIG5vdCB3ZSBwdXNoIHRoaXMgY2hpbGQgYW5kIHdhaXQg Zm9yIAorICAgICAgICAgdGhlIG5leHQgZm9yayAoKSBldmVudC4gICovCisg CisgICAgICBpZiAoZmluZF9pbmZlcmlvcl9waWQgKHRoaXMsIHBpZCkgPT0g bnVsbHB0cikKKyAgICAgIHsKKyAgICAgICAgcGlkX3QgcGFyZW50X3BpZCA9 IGFpeF9pc19wYXJlbnRfcGVuZGluZyAoKTsKKyAgICAgICAgaWYgKHBhcmVu dF9waWQgPiAwKQorICAgICAgICB7CisgICAgICAgICAgb3Vyc3RhdHVzLT5z ZXRfZm9ya2VkIChwdGlkX3QgKHBpZCkpOworICAgICAgICAgIHJldHVybiBw dGlkX3QgKHBhcmVudF9waWQpOworICAgICAgICB9CisgICAgICAgIGFpeF9y ZW1lbWJlcl9jaGlsZCAocGlkKTsKKyAgICAgIH0KKworICAgICAgLyogSWYg dGhlIGV2ZW50IGlzIGEgcGFyZW50IHdlIGNoZWNrIGlmIHRoZXJlIHdhcyBh IGNoaWxkCisgICAgICAgICBldmVudCByZWNvcmRlZCBiZWZvcmUuICBJZiB5 ZXMgd2UgZ290IHRoZSBwYXJlbnQgY2hpbGQKKyAgICAgICAgIHJlbGF0aW9u c2hpcC4gIElmIG5vdCB3ZSBwdXNoIHRoaXMgcGFyZW50IGFuZCB3YWl0IGZv ciAKKyAgICAgICAgIHRoZSBuZXh0IGZvcmsgKCkgZXZlbnQuICAqLworCisg ICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHBpZF90IGNoaWxkX3BpZCA9 IGFpeF9pc19jaGlsZF9wZW5kaW5nICgpOworICAgICAgICBpZiAoY2hpbGRf cGlkID4gMCkKKyAgICAgICAgeworICAgICAgICAgIG91cnN0YXR1cy0+c2V0 X2ZvcmtlZCAocHRpZF90IChjaGlsZF9waWQpKTsKKyAgICAgICAgICByZXR1 cm4gcHRpZF90IChwaWQpOworICAgICAgICB9CisgICAgICAgIGFpeF9yZW1l bWJlcl9wYXJlbnQgKHBpZCk7CisgICAgICB9IAorICAgIH0KKyAgfQorCiAg IC8qIEEgbm9ybWFsIHdhaXRzdGF0dXMuICBMZXQgdGhlIHVzdWFsIG1hY3Jv cyBkZWFsIHdpdGggaXQuICAqLwogICBlbHNlCiAgICAgKm91cnN0YXR1cyA9 IGhvc3Rfc3RhdHVzX3RvX3dhaXRzdGF0dXMgKHN0YXR1cyk7Ci0tIAoyLjMx LjEKCg== --_004_CH2PR15MB35444CA38B01CE6FF5803DD8D62B9CH2PR15MB3544namp_--