From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id TJfWES6ctGYJFAAAWB0awg (envelope-from ) for ; Thu, 08 Aug 2024 06:21:34 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=mnqqHZKl; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=mnqqHZKl; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 31FDC1E0D0; Thu, 8 Aug 2024 06:21:34 -0400 (EDT) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id AF49B1E08C for ; Thu, 8 Aug 2024 06:21:31 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1F409385842D for ; Thu, 8 Aug 2024 10:21:31 +0000 (GMT) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2086.outbound.protection.outlook.com [40.107.21.86]) by sourceware.org (Postfix) with ESMTPS id D8792385841E for ; Thu, 8 Aug 2024 10:21:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D8792385841E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D8792385841E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.86 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1723112466; cv=pass; b=iCnN9eEVeOPDSUaDOaljxxOzJkYj79OFaNsHuZA9d/Wwrq/bUY2DHm3QPT1N94nkuUCqT25HRlOmtb7BP020lX816tRoYhIO7DFCzz1x0uESSBMNyCsE1Ow30LCnVbQ4yh/holhDm5sEfsa/PTgo4S5SVUhVGsLMyzblvc0AcQc= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1723112466; c=relaxed/simple; bh=OZEQw9kC0ggZyB1y8MZhhsV7DSohpDPFYDqEOiU24zE=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=uRBBWuU7rMLMcKI27XAzodGiF4J+OMyfkM5BZgIxruGYiRxViUaWQP8Tgij+rsMAU8/OixhymOikH7I5fklzRcyNfiEPDvyl8/RDsBmzABvdwGDTgbit4/x4o9PvQLmNfdI+l0tblqtltqlf04SkIMltibZbzF5hwg86yY56AXI= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=kJ7ViF68WajbK/+hi/A7nBi0K3OZZO334vEoyRoDf9X2YwWttCqtpefOg5/4pHNOzAAEq3ttkoisZHV+j/+n7S71SfLDAr7ylsHtS2asDwTeW81cy/+lITLaoJI5IjxXIhHl6hXBcAq1+kCYTnX17Zm4jOAkLz/4OEIxD2rscNJuqtMuaXVybLaYJ84ndYFfuoa6qWGQU2XLdvKp6wOaeBBEVefSsul8cePgZX6JuUKnVf9T3pqnq8RsrvM5MiM6xZGhGpKcg5+uMrztZIj6PnRJzh5RQdylM50/qO+YSDyada5KLtUZ31OpnNbZQ+jo+B301Eddz9DSnv6lvcxcyA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=2hbkDkKEaauAk54WNGcPJqSrYH9wlrTx4c8037SriaU=; b=cDRJvu99HY2+cbuf97UrDD6ktB8PVl/go+X3Ikhc5ZYvu256NMeo5F3IrMosc86rKEBI76PGVeaATyqtGs3hHuoIhq6JpMHbBTmLm5nuWGpWBRziD25wZizDKtqG1ljmnfyJhXglBmSYpp1Kr9DF60MpcqnG2Jq+WurkmbU31Cqu+WCCSth1fxqEKc9UC+ofZfHDNT4ps/dRsKXrHkVOZqbEwEBoeNGbvUdEhEQlFUWQk35lDaDvjC5v6PQ/WE2qBRxXZwdgq/nN+r3x+dEh3HcWWOmjoS4OFwF59W19w4BN2jm3WkGHLEi1QFTWyLdvjnx0weN4BGV0iqU1lvBrNQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2hbkDkKEaauAk54WNGcPJqSrYH9wlrTx4c8037SriaU=; b=mnqqHZKldmPZIvAllY80u7+FAtj9F3Sy4ZH+95zKv2WiIN7ROetx4z2XryT7/Nm1aLvIQt6IeD/LgicEKgW/XCr8LIt2SpINgyXZcmoVp6PUyImxS7UztqseM4vApcsyy0RBumoHpjtUHA4I0S6G1FsmWWJagNriiBHlIlFrtxM= Received: from DU2PR04CA0265.eurprd04.prod.outlook.com (2603:10a6:10:28e::30) by DU0PR08MB8066.eurprd08.prod.outlook.com (2603:10a6:10:3e9::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7849.13; Thu, 8 Aug 2024 10:20:59 +0000 Received: from DU6PEPF0000A7DF.eurprd02.prod.outlook.com (2603:10a6:10:28e:cafe::fa) by DU2PR04CA0265.outlook.office365.com (2603:10a6:10:28e::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7849.13 via Frontend Transport; Thu, 8 Aug 2024 10:20:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DU6PEPF0000A7DF.mail.protection.outlook.com (10.167.8.36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7849.8 via Frontend Transport; Thu, 8 Aug 2024 10:20:58 +0000 Received: ("Tessian outbound 03e86f0582e5:v365"); Thu, 08 Aug 2024 10:20:58 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 608453115f858aa8 X-CR-MTA-TID: 64aa7808 Received: from Lbf398b0d87ef.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 1365C5A0-0BE5-4EFA-8A00-014F79C3A9B4.1; Thu, 08 Aug 2024 10:20:52 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id Lbf398b0d87ef.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 08 Aug 2024 10:20:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FHhcAo8JXtvgVKjw1BoEkdS2EL4ZPMM+EyiMByMAjNUbo3283dQnmSDUfgKQqyJXhA8TtBSBflCkcy1cRLyDvhe6lL+7dF6hOSDMGV3QHuaTuUD6artfpmnz/DPCj5vgMVWssaxDuJS8rTwI5z1RUgAzQHZnZLh8c6U1NAkOgUjiwwH2SGVpgNz/VXh5guBZrh4kyr8hlD6LawlYic94I+mB+XmcLNa5GdfZZIPPrTGE45u6tG/b0AFGVKkqCNAid1iVtDE1myYEAUEnktrp3J2vH1mxz9DWb9eYL+uid2oGzcVqwQwXfkQGZCjTKM9iozHxULrdVv4CDs4lS/BuIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=2hbkDkKEaauAk54WNGcPJqSrYH9wlrTx4c8037SriaU=; b=GSot4klLzB7VzvfORrHNttPBdag+TK/jlsN/Sm/WjjatiwHqmAXRY/gtcQi2O10FJYv8/uDFEVaOLzipePEROyyXhyhtf/w2WG2qLH5/ch/CV+YRUtVJh/P8KOZqbClfPuIFbUaLPqythCKVFp6KyKIRoeawujjEmYZYWt8GPazHLv571zUUKvAXFuL/Zsz/pXIm+U6AKj2ucSyMOfMu3rU67WbTJkj53r50CHfzbEQypT59WF+mezYqNgYxxvTDpAeXZSHmsLJM7o3RL5jxSxgAs/wQJKGLDf778UkuNUuz9IzGNfleKcfGRtrthKcslx+LJVyS1BwadUqhn9S1ng== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2hbkDkKEaauAk54WNGcPJqSrYH9wlrTx4c8037SriaU=; b=mnqqHZKldmPZIvAllY80u7+FAtj9F3Sy4ZH+95zKv2WiIN7ROetx4z2XryT7/Nm1aLvIQt6IeD/LgicEKgW/XCr8LIt2SpINgyXZcmoVp6PUyImxS7UztqseM4vApcsyy0RBumoHpjtUHA4I0S6G1FsmWWJagNriiBHlIlFrtxM= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from PR3PR08MB5852.eurprd08.prod.outlook.com (2603:10a6:102:8e::21) by AS2PR08MB9476.eurprd08.prod.outlook.com (2603:10a6:20b:60f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7828.27; Thu, 8 Aug 2024 10:20:49 +0000 Received: from PR3PR08MB5852.eurprd08.prod.outlook.com ([fe80::f44:d113:1c29:825d]) by PR3PR08MB5852.eurprd08.prod.outlook.com ([fe80::f44:d113:1c29:825d%3]) with mapi id 15.20.7828.023; Thu, 8 Aug 2024 10:20:49 +0000 Message-ID: <9fbc6f52-bc2f-43c8-80b0-3f4c495df76e@arm.com> Date: Thu, 8 Aug 2024 11:20:47 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/4] gdb/testsuite: track if a caching proc calls gdb_exit or not Content-Language: en-US To: Andrew Burgess , gdb-patches@sourceware.org References: <5dc846ffb6cd8f76ba2769ee7679f5d1b01fae0a.1717438458.git.aburgess@redhat.com> <97973506-79f4-4216-9c0b-57401b3933f5@arm.com> <878qx8z9nt.fsf@redhat.com> From: Luis Machado In-Reply-To: <878qx8z9nt.fsf@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0210.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a5::17) To PR3PR08MB5852.eurprd08.prod.outlook.com (2603:10a6:102:8e::21) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PR3PR08MB5852:EE_|AS2PR08MB9476:EE_|DU6PEPF0000A7DF:EE_|DU0PR08MB8066:EE_ X-MS-Office365-Filtering-Correlation-Id: d03eff1e-d0a3-4cf5-8f34-08dcb793cbf3 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?ZitBU0dtU1RZV0xIVzNIazg1V0dsNjZEL3RvQmQvNEc2WWZYMnVhaURRMFBM?= =?utf-8?B?NWxuZGpDbEl6ZktpQVlaakxtNm5Nc0c3UDVmMG9RWXNlODc3Nk41M3NYWTZ4?= =?utf-8?B?Mm5EbkpETVA2aWtQNytrTHp6RE5IVEJEM0h4dDNqSFRvT1U0alJkbUh6aWNi?= =?utf-8?B?bDY4c0ErNUVqaWtkNkJUL1JRbnV2bisrbllwOSt2YVhyTWN6RElBS0w2V01B?= =?utf-8?B?V2Z5ZlUyVHFQZCt1cGNTR1YvRHFBQTVybHBoYTBIS2xsRG1sZ2ZNeklUOEcv?= =?utf-8?B?MC9zSE9wMjlhSWttRDdlaTQxUlhSM3JaOFZnN1g5blRkOUFycjZ6NHJYRHNJ?= =?utf-8?B?MlR3eVlDdHNsTWJwYi9UUngybUZQU1FZU2Z0QWNRMDNVancwTDRsVnhpTURR?= =?utf-8?B?eVVobzdxRzloRDBQMU5nL3hQV0RxSFpEVWE1UUxCbUV4eFpRWG51Vk9GbEpD?= =?utf-8?B?eFhISUtmMVpKQUEvUFI5UlpJNjk3M2lweUNHeVdRZklXQ1AvTWkrakJnTExk?= =?utf-8?B?Q0xZQWY3RnY2YXVxc3lSNlFNcVg2aG5tYkxwTmR1NkFBaXhsNlJJa2Vua2Fm?= =?utf-8?B?SVExRXdIR252RU14R05yMXRqVVlvK0lmZXdlMFlNZGVnV09ucm5oa3lSbUV0?= =?utf-8?B?M3RpeDJ2emg2RGF4N1ZGaUlPV2R0WEViQ1RJNmlXRWl4QmhZNmRuMGZROCtJ?= =?utf-8?B?YmRqS3dhYW9PbjVLUU81NFJiK0NHNVVHZ0M1SEx0azdpS3ZsSGpQUi9qZ3ZY?= =?utf-8?B?OVJPWVZSM1UybjFQTDJmRVNieXVKOHF6Sm14bXk4UlJoeHcyZkNReW54bnl3?= =?utf-8?B?TnVBeXNRQ3JPNHAxQWNUWkt6UVNCS2J4ZDRxQTNldDVpbmxLbEhsdWlKMm15?= =?utf-8?B?NDVySHRMd3NaTWNqTStkUk1iNURZbkdqenQ0OHA0Y2g1ZlM0cms1eVIyN04r?= =?utf-8?B?YVZ1R2xJcWNoNzhHV1E5YTZadmhZc2RZM0hHV0JMQUREMXpiRXA5aUdCaU9n?= =?utf-8?B?OUdtTVFQSWx0cVlYcDdEbEc5OW5LQ1g3bEZhWnIwN0o4eGZ0c1ZBam45aGNz?= =?utf-8?B?MHAyTzc3WnRscFZKdnpoTFJQOGFXWjBWczByQjAyaHdHbHRIcWVSRkhUNGNh?= =?utf-8?B?RmNaOU50YWNWWGFMUlJPa093TEJFNkQ2UjE4VHVKTzJvYjVOaUY4SkwwQitJ?= =?utf-8?B?TGdIblMvUkRyRGlxTGRVTmt4SkVtaXBva3pJRmFWRUx2bzdiWjRIWC9tTXRu?= =?utf-8?B?cENWYXk4eGdvSUJWT2grSzQwaWJPWUxNOFVRL1pDdHJxK1cxemlnK3lhOGcz?= =?utf-8?B?R2hiV0MydkFuSWdkV3FEUWw2eS9xSS8yUStwRVhoS2hFNXlBOXF0eWVsUkdH?= =?utf-8?B?SVFmeGVlMG4rMXVZaGpwd1gzMFV2eTF0L094TmwrZHAvOTlYdm5kNnJZUjdp?= =?utf-8?B?TjdNVmZuVEdTQVZ1U21PUHFMdEFsbjRVVkVHenVkcU5MaW9SN0E3cU85ZHBY?= =?utf-8?B?Qmd4anVralJNMjBYQU5DWGZYdXB2UlljdG1hWnNDMmp5NDFSaGlNSFdpc01S?= =?utf-8?B?OXpMVTVycmJzMnNQWjA5azAzeFREcVMyU0UxOGl0NkRuQTQ0a0hSa0lMdTNI?= =?utf-8?B?Y2liakZDM3ZVS2FuRjQrK0lralpza3dTMCtwcms2eVhIRzZ4SURhVmFNbFgw?= =?utf-8?B?UEI2ZnRMQ3FzMUplU2lWaDJrY0lCRDdpd3dxZkd0cjAwMlJSdkk5ck9pRUxT?= =?utf-8?Q?Ul80tAWlI5KFehItuk=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PR3PR08MB5852.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9476 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[2603:10a6:102:8e::21]; domain=PR3PR08MB5852.eurprd08.prod.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000A7DF.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a489b1eb-aef8-4aca-9e92-08dcb793c5e6 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|35042699022|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?U0pHV1lCK21UU2R5Rnpyc3NzWkVtdmUzdk5BUDU3RjZzVTRQUG9aWkZlcEZv?= =?utf-8?B?ZFV4TUZxMnljaWI4dm9KY1pDRjJhRDd5cXRwM2EvSXdTS2JKUVlDUHJEdXlU?= =?utf-8?B?VVN4c0dEV0FCWXRmTFFqYTBoMlVmbmpNdklFREJjWUV5cHh2cVN1V2xRNHVM?= =?utf-8?B?MXBYM1A1ME14cWZqc0p4SmhWN2x3TmtIcTlsSk1YcWx1SjBRRUd5cnhRN1hK?= =?utf-8?B?S3g3OXVsWGhTR21vSW83Wk1NY3dIQ1BPVk1hcHZvbEFmL3o2L2dLQjZVdVU2?= =?utf-8?B?TmlVdlpvZnd1UkdwRlpJMERoS0F4UHZSOUlmUk42RlBjN0hST2Nza2VqR1ZH?= =?utf-8?B?OHI3d3JXS05SMzRDOGhxRk5IQ2VYM0VzWktnc21DSTVBTFdZd3NRd2ZodEt3?= =?utf-8?B?SDRMZVdUajk0dGxnM1lSNEMrdVpaOHFybWFNdkNXTUFhZ3pSajJrZnJYcXhv?= =?utf-8?B?S2FNSFVwOGVrRUQ3NVQ4bi9VRVdpaGQ2RlZuMUxMU2QrZnRLZDVNOTIza3BZ?= =?utf-8?B?S1ZqUVF5ZGRFYk1XVVN6U3NMQ1dsYlhMOWFxLytaVFB0dlNPQk5SczhXa2Ey?= =?utf-8?B?c1JRZ1VmcDdMblAvZ3d2L0Y5aHRmT3FBSjBuU0hndTVrYUFpTDIrQS9xS0Rp?= =?utf-8?B?K0ZVR2JveGpWV0hyY3h3N1RwWnZqK3JqcHU5R1c1ODc3T2dJTk5UQWxOUkdl?= =?utf-8?B?VVF0SU9Hc0xLTUFNM21idGtPZG56STRBbG5Ta21jc3NZbXpGUWF3RC9DRU5r?= =?utf-8?B?bHMxRjhuVVRxZkFEaE53T3Q1eFRJTGt4YnlEWWJvS2RKMVpFc1F6UVR1ekdJ?= =?utf-8?B?MlBJOXE4UmxhL0hRR1A4ZDR5TjQxQjg1aE8vS0ZTQnF2SE8xamFFd2pHUDNy?= =?utf-8?B?aFFLSHR3bUFPTERNQ2VVUjRucXAzMElVTk40MUF6TmRMc3FzR1pwYXNPV3RP?= =?utf-8?B?NlVRQjZmS0Nad1lQdkpRbmlxc0ZGSy9PWVJCUysvdFdJLzJnNk5aUnJPYlRJ?= =?utf-8?B?cVlUcmFUcDdxRk10Q3R5NHBoRERzNTczSnJPRUFxQ1AwbnhFb1ZHZmJvU3ZZ?= =?utf-8?B?UVpjSGM5NEQzYStiMHUxK3pLaFY1UkdaYXVFUE9jeVBNR1FoZnFEbitQaUc4?= =?utf-8?B?Rml0VUd0QUpJaUJUekVsYU41MTZQREQ4bzdlb1JzbHJ6ZVVKK25DRnp1VlZs?= =?utf-8?B?OVgxVzEzRDdFQjMwRVl0c243NUgvR0lxMG80S2ZXQVZzb1lPcnZlRHMwV04x?= =?utf-8?B?eFFkZTdURWZUQWtsdnVNckRLeWhNbHZqZGZIRHlGTzRkd3NzYlkxeml1VTJJ?= =?utf-8?B?VlBiMnBpWGI5Vm9FOE9YWXRuM292V1IwcklLYytPamFGMnNycEt1bGluSEJD?= =?utf-8?B?Q2Z1dHdQZWRldjF3WkJ6M1dOcVJvM0hOcVhmYW5wK2lWTE9tQlJPdlRWYm5S?= =?utf-8?B?ZnBWbFU0bk1YQ29XS1VNQmlLNk9IVVcrRndSQXVSOTNSajR3YlM4NmRNc05i?= =?utf-8?B?NTJ2ZGt3V0lsVW1Cay9Ec05kdUtaeC9ZVWI1NFV6aXRPNFRvbzR2eE0rRmtj?= =?utf-8?B?TTQwTnNRZEZkT25ybk1JbHNqUkhHbXkxeVdEVVlYTEQwbHhKWEhYZ0k0a2JU?= =?utf-8?B?MGNBY3hCNTljWUE0c3FFWlBOTGU1bGdwbDJmOTVuUUtuRHQ3UnZKUzc4TWw4?= =?utf-8?B?eHh5T1AxNXQ2ZC9CR3JYZkx4NDIrV0NCbzJKMW5TZXpZcXp1T05DWGF2OHVR?= =?utf-8?B?TmFJTU9LVjJySTZQSG1pcEYrZHpFRGxkZnZ0cHI2UTZ5L3QybXBOK3NjY0w0?= =?utf-8?B?T29KcllBQVloQlVOKzFVWXE4WS9LRkpsRnlDbWtKc1hBZG5KSTVxTCtPSlow?= =?utf-8?B?cUx0TlFyTnk3NW4xTURkZDNRenErNVM5UWdqNWZHOURIR2c9PQ==?= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230040)(36860700013)(35042699022)(1800799024)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Aug 2024 10:20:58.9423 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d03eff1e-d0a3-4cf5-8f34-08dcb793cbf3 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000A7DF.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8066 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org On 8/7/24 15:31, Andrew Burgess wrote: > Luis Machado writes: > >> Hi Andrew, >> >> On 6/3/24 19:16, Andrew Burgess wrote: >>> After a recent patch review I asked myself why can_spawn_for_attach >>> exists. This proc currently does some checks, and then calls >>> can_spawn_for_attach_1 which is an actual caching proc. >>> >>> The answer is that can_spawn_for_attach exists in order to call >>> gdb_exit the first time can_spawn_for_attach is called within any test >>> script. >>> >>> The reason this is useful is that can_spawn_for_attach_1 calls >>> gdb_exit. If imagine the user calling can_spawn_for_attach_1 directly >>> then a problem might exist. Imagine a test written like this: >>> >>> gdb_start >>> >>> if { [can_spawn_for_attach_1] } { >>> ... do stuff that assumes GDB is running ... >>> } >>> >>> If this test is NOT the first test run, and if an earlier test calls >>> can_spawn_for_attach_1, then when the above test is run the >>> can_spawn_for_attach_1 call will return the cached value and gdb_exit >>> will not be called. >>> >>> But, if the above test IS the first test run then >>> can_spawn_for_attach_1 will not returned the cached value, but will >>> instead compute the cached value, a process that ends up calling >>> gdb_exit. When the body of the if is executed GDB would no longer be >>> running and the test would fail! >>> >>> So can_spawn_for_attach was added which ensures that we _always_ call >>> gdb_exit the first time can_spawn_for_attach is called within a single >>> test script, this ensures that in the above case, even if the above is >>> not the first test run, gdb_exit will still be called. This avoids >>> some hidden bugs in the testsuite. >>> >>> However, what I observe is that can_spawn_for_attach is not the only >>> caching proc that calls gdb_exit. Why does can_spawn_for_attach get >>> special treatment when surely the same issue exists for any other >>> caching proc that calls gdb_exit? >>> >>> I think a better solution is to move the logic from >>> can_spawn_for_attach into cache.exp and generalise it so that it >>> applies to all caching procs. >>> >>> This commit does this by: >>> >>> 1. When the underlying caching proc is executed we wrap gdb_exit. >>> This wrapper sets a global to true if gdb_exit is called. The >>> value of this global is stored in gdb_data_cache (using a ',exit' >>> suffix), and also written to the cache file if appropriate. >>> >>> 2. When a cached value is returned from gdb_do_cache, if the >>> underlying proc would have called gdb_exit, and if this is the >>> first use of the caching proc in this test script, then we call >>> gdb_exit. >>> >>> When storing the ',exit' value into the on-disk cache file, the flag >>> value is stored on a second line. Currently every cached value only >>> occupies a single line, and a check is added to ensure this remains >>> true in the future. >>> >>> One issue did come up in testing, a FAIL in gdb.base/break-interp.exp, >>> this was caused by can_spawn_for_attach_1 calling gdb_start without >>> first calling gdb_exit. Under the old way of doing things >>> can_spawn_for_attach would call gdb_exit _before_ possibly calling the >>> actual caching proc. Under the new scheme gdb_exit is called _after_ >>> calling the actual caching proc. What was happening was that >>> break-interp.exp would leave GDB running then call >>> can_spawn_for_attach, when the test in can_spawn_for_attach_1 tried to >>> attach to the inferior, state left in the running GDB would cause some >>> unexpected behaviour. Fixed by having can_spawn_for_attach_1 call >>> gdb_exit before calling gdb_start, this ensures we have a fresh GDB. >>> >>> With this done can_spawn_for_attach_1 can be renamed to >>> can_spawn_for_attach, and the existing can_spawn_for_attach can be >>> deleted. >>> --- >>> gdb/testsuite/lib/cache.exp | 86 +++++++++++++++++++++++++++++++------ >>> gdb/testsuite/lib/gdb.exp | 83 +++++++++-------------------------- >>> 2 files changed, 93 insertions(+), 76 deletions(-) >>> >>> diff --git a/gdb/testsuite/lib/cache.exp b/gdb/testsuite/lib/cache.exp >>> index e7b9114058b..fef065ec8b0 100644 >>> --- a/gdb/testsuite/lib/cache.exp >>> +++ b/gdb/testsuite/lib/cache.exp >>> @@ -46,6 +46,40 @@ proc gdb_do_cache_wrap {real_name args} { >>> return $result >>> } >>> >>> +# Global written to by wrap_gdb_exit. Set to true if wrap_gdb_exit is >>> +# called. >>> + >>> +set gdb_exit_called false >>> + >>> +# Wrapper around gdb_exit. Use with_override to replace gdb_exit with >>> +# wrap_gdb_exit, the original gdb_exit is renamed to orig_gdb_exit. >>> + >>> +proc wrap_gdb_exit {} { >>> + set ::gdb_exit_called true >>> + orig_gdb_exit >>> +} >>> + >>> +# If DO_EXIT is false then this proc does nothing. If DO_EXIT is true >>> +# then call gdb_exit the first time this proc is called for each >>> +# unique value of NAME within a single test. Every subsequent time >>> +# this proc is called within a single test (for a given value of >>> +# NAME), don't call gdb_exit. >>> + >>> +proc gdb_cache_maybe_gdb_exit { name do_exit } { >>> + if { !$do_exit } { >>> + return >>> + } >>> + >>> + # To track if this proc has been called for NAME we create a >>> + # global variable. In gdb_cleanup_globals (see gdb.exp) this >>> + # global will be deleted when the test has finished. >>> + set global_name __${name}__cached_gdb_exit_called >>> + if { ![info exists ::${global_name}] } { >>> + gdb_exit >>> + set ::${global_name} true >>> + } >>> +} >>> + >>> # A helper for gdb_caching_proc that handles the caching. >>> >>> proc gdb_do_cache {name args} { >>> @@ -71,10 +105,12 @@ proc gdb_do_cache {name args} { >>> >>> set is_cached 0 >>> if {[info exists gdb_data_cache(${cache_name},value)]} { >>> - set cached $gdb_data_cache(${cache_name},value) >>> - verbose "$name: returning '$cached' from cache" 2 >>> + set cached_value $gdb_data_cache(${cache_name},value) >>> + set cached_exit $gdb_data_cache(${cache_name},exit) >>> + verbose "$name: returning '$cached_value' from cache" 2 >>> if { $cache_verify == 0 } { >>> - return $cached >>> + gdb_cache_maybe_gdb_exit $name $cached_exit >>> + return $cached_value >>> } >>> set is_cached 1 >>> } >>> @@ -83,24 +119,46 @@ proc gdb_do_cache {name args} { >>> set cache_filename [make_gdb_parallel_path cache $cache_name] >>> if {[file exists $cache_filename]} { >>> set fd [open $cache_filename] >>> - set gdb_data_cache(${cache_name},value) [read -nonewline $fd] >>> + set content [split [read -nonewline $fd] \n] >>> close $fd >>> - set cached $gdb_data_cache(${cache_name},value) >>> - verbose "$name: returning '$cached' from file cache" 2 >>> + set gdb_data_cache(${cache_name},value) [lindex $content 0] >>> + set gdb_data_cache(${cache_name},exit) [lindex $content 1] >>> + set cached_value $gdb_data_cache(${cache_name},value) >>> + set cached_exit $gdb_data_cache(${cache_name},exit) >>> + verbose "$name: returning '$cached_value' from file cache" 2 >>> if { $cache_verify == 0 } { >>> - return $cached >>> + gdb_cache_maybe_gdb_exit $name $cached_exit >>> + return $cached_value >>> } >>> set is_cached 1 >>> } >>> } >>> >>> - set real_name gdb_real__$name >>> - set gdb_data_cache(${cache_name},value) [gdb_do_cache_wrap $real_name {*}$args] >>> + set ::gdb_exit_called false >>> + with_override gdb_exit wrap_gdb_exit orig_gdb_exit { >>> + set real_name gdb_real__$name >>> + set gdb_data_cache(${cache_name},value) [gdb_do_cache_wrap $real_name {*}$args] >>> + } >>> + set gdb_data_cache(${cache_name},exit) $::gdb_exit_called >>> + >>> + # If a value being stored in the cache contains a newline then >>> + # when we try to read the value back from an on-disk cache file >>> + # we'll interpret the second line of the value as the ',exit' value. >>> + if { [regexp "\[\r\n\]" $gdb_data_cache(${cache_name},value)] } { >>> + set computed_value $gdb_data_cache(${cache_name},value) >>> + error "Newline found in value for $cache_name: $computed_value" >>> + } >>> + >>> if { $cache_verify == 1 && $is_cached == 1 } { >>> - set computed $gdb_data_cache(${cache_name},value) >>> - if { $cached != $computed } { >>> - error [join [list "Inconsistent results for $cache_name:" >>> - "cached: $cached vs. computed: $computed"]] >>> + set computed_value $gdb_data_cache(${cache_name},value) >>> + set computed_exit $gdb_data_cache(${cache_name},exit) >>> + if { $cached_value != $computed_value } { >>> + error [join [list "Inconsistent value results for $cache_name:" >>> + "cached: $cached_value vs. computed: $computed_value"]] >>> + } >>> + if { $cached_exit != $computed_exit } { >>> + error [join [list "Inconsistent exit results for $cache_name:" >>> + "cached: $cached_exit vs. computed: $computed_exit"]] >>> } >>> } >>> >>> @@ -110,9 +168,11 @@ proc gdb_do_cache {name args} { >>> # Make sure to write the results file atomically. >>> set fd [open $cache_filename.[pid] w] >>> puts $fd $gdb_data_cache(${cache_name},value) >>> + puts $fd $gdb_data_cache(${cache_name},exit) >>> close $fd >>> file rename -force -- $cache_filename.[pid] $cache_filename >>> } >>> + gdb_cache_maybe_gdb_exit $name $gdb_data_cache(${cache_name},exit) >>> return $gdb_data_cache(${cache_name},value) >>> } >>> >>> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp >>> index 8235d4f28eb..d29fd740f91 100644 >>> --- a/gdb/testsuite/lib/gdb.exp >>> +++ b/gdb/testsuite/lib/gdb.exp >>> @@ -6186,14 +6186,23 @@ proc gdb_exit { } { >>> catch default_gdb_exit >>> } >>> >>> -# Helper function for can_spawn_for_attach. Try to spawn and attach, and >>> -# return 0 only if we cannot attach because it's unsupported. >>> - >>> -gdb_caching_proc can_spawn_for_attach_1 {} { >>> - # For the benefit of gdb-caching-proc-consistency.exp, which >>> - # calls can_spawn_for_attach_1 directly. Keep in sync with >>> - # can_spawn_for_attach. >>> - if { [is_remote target] || [target_info exists use_gdb_stub] } { >>> +# Return true if we can spawn a program on the target and attach to >>> +# it. >>> + >>> +gdb_caching_proc can_spawn_for_attach {} { >>> + # We use exp_pid to get the inferior's pid, assuming that gives >>> + # back the pid of the program. On remote boards, that would give >>> + # us instead the PID of e.g., the ssh client, etc. >>> + if {[is_remote target]} { >>> + verbose -log "can't spawn for attach (target is remote)" >>> + return 0 >>> + } >>> + >>> + # The "attach" command doesn't make sense when the target is >>> + # stub-like, where GDB finds the program already started on >>> + # initial connection. >>> + if {[target_info exists use_gdb_stub]} { >>> + verbose -log "can't spawn for attach (target is stub)" >>> return 0 >>> } >>> >>> @@ -6218,6 +6227,9 @@ gdb_caching_proc can_spawn_for_attach_1 {} { >>> set test_spawn_id [spawn_wait_for_attach_1 $obj] >>> remote_file build delete $obj >>> >>> + # In case GDB is already running. >>> + gdb_exit >>> + >>> gdb_start >>> >>> set test_pid [spawn_id_get_pid $test_spawn_id] >>> @@ -6239,61 +6251,6 @@ gdb_caching_proc can_spawn_for_attach_1 {} { >>> return $res >>> } >>> >>> -# Return true if we can spawn a program on the target and attach to >>> -# it. Calls gdb_exit for the first call in a test-case. >>> - >>> -proc can_spawn_for_attach { } { >>> - # We use exp_pid to get the inferior's pid, assuming that gives >>> - # back the pid of the program. On remote boards, that would give >>> - # us instead the PID of e.g., the ssh client, etc. >>> - if {[is_remote target]} { >>> - verbose -log "can't spawn for attach (target is remote)" >>> - return 0 >>> - } >>> - >>> - # The "attach" command doesn't make sense when the target is >>> - # stub-like, where GDB finds the program already started on >>> - # initial connection. >>> - if {[target_info exists use_gdb_stub]} { >>> - verbose -log "can't spawn for attach (target is stub)" >>> - return 0 >>> - } >>> - >>> - # The normal sequence to use for a runtime test like >>> - # can_spawn_for_attach_1 is: >>> - # - gdb_exit (don't use a running gdb, we don't know what state it is in), >>> - # - gdb_start (start a new gdb), and >>> - # - gdb_exit (cleanup). >>> - # >>> - # By making can_spawn_for_attach_1 a gdb_caching_proc, we make it >>> - # unpredictable which test-case will call it first, and consequently a >>> - # test-case may pass in say a full test run, but fail when run >>> - # individually, due to a can_spawn_for_attach call in a location where a >>> - # gdb_exit (as can_spawn_for_attach_1 does) breaks things. >>> - # To avoid this, we move the initial gdb_exit out of >>> - # can_spawn_for_attach_1, guaranteeing that we end up in the same state >>> - # regardless of whether can_spawn_for_attach_1 is called. However, that >>> - # is only necessary for the first call in a test-case, so cache the result >>> - # in a global (which should be reset after each test-case) to keep track >>> - # of that. >>> - # >>> - # In summary, we distinguish between three cases: >>> - # - first call in first test-case. Executes can_spawn_for_attach_1. >>> - # Calls gdb_exit, gdb_start, gdb_exit. >>> - # - first call in following test-cases. Uses cached result of >>> - # can_spawn_for_attach_1. Calls gdb_exit. >>> - # - rest. Use cached result in cache_can_spawn_for_attach_1. Calls no >>> - # gdb_start or gdb_exit. >>> - global cache_can_spawn_for_attach_1 >>> - if { [info exists cache_can_spawn_for_attach_1] } { >>> - return $cache_can_spawn_for_attach_1 >>> - } >>> - gdb_exit >>> - >>> - set cache_can_spawn_for_attach_1 [can_spawn_for_attach_1] >>> - return $cache_can_spawn_for_attach_1 >>> -} >>> - >>> # Centralize the failure checking of "attach" command. >>> # Return 0 if attach failed, otherwise return 1. >>> >> >> This is a bit after the fact, but I tracked down some aarch64 sme test regressions >> to this particular patch. I'm still investigating exactly why it stopped working, but I >> can tell it only happens if we run 2 or more tests in the same run. It is not >> clear if making things parallel has an impact, or if it is just the fact we >> run 2+ tests in the same run. >> >> I suspect we may be calling gdb_exit when we shouldn't, and then things just >> stop working. >> >> --- >> >> Running target unix >> Using /usr/share/dejagnu/baseboards/unix.exp as board description file for target. >> Using /usr/share/dejagnu/config/unix.exp as generic interface file for target. >> Using repos/binutils-gdb/gdb/testsuite/config/unix.exp as tool-and-target-specific interface file. >> Running repos/binutils-gdb/gdb/testsuite/gdb.arch/aarch64-sme-core-0.exp ... >> Running repos/binutils-gdb/gdb/testsuite/gdb.arch/aarch64-sme-regs-unavailable-3.exp ... >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> FAIL: gdb.arch/aarch64-sme-regs-unavailable-3.exp: prctl, vl=32 svl=256: check_regs: incorrect ZA state >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> ERROR: no fileid for ubuntu >> FAIL: gdb.arch/aarch64-sme-regs-unavailable-3.exp: gdb, vl=32 svl=256: check_regs: incorrect ZA state > > Luis, > > Could you please test the patch below to see if this fixes the issues > you are seeing. This is also running through local testing at my side, > but I thought I'd get your feedback early. > > Thanks, > Andrew > Well, it's one of those things I guess. I saw some errors the first time I tried the patch, but then I couldn't reproduce it anymore. So far it's been running pretty smoothly for both parallel and serialized runs. So I'd say this patch does the job and we should push it. Thanks for putting it together. I'll do a complete run overnight just to make sure, but it will take a little bit before I can report it.