From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id Qc7qJENqjWqKxj4AWB0awg (envelope-from ) for ; Tue, 25 Aug 2026 06:11:15 -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=I0oqY2Ym; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=I0oqY2Ym; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 8EA1C1E0A3; Tue, 25 Aug 2026 06:11:15 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (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 B81DA1E09E for ; Tue, 25 Aug 2026 06:11:13 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B4F0C4BA9023 for ; Tue, 25 Aug 2026 10:11:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B4F0C4BA9023 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=I0oqY2Ym; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=I0oqY2Ym Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011002.outbound.protection.outlook.com [52.101.65.2]) by sourceware.org (Postfix) with ESMTPS id 24D9E4BA900D for ; Tue, 25 Aug 2026 10:10:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 24D9E4BA900D 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 24D9E4BA900D Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=52.101.65.2 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1787652644; cv=pass; b=wJQzKyBcldX3gdGEwpbuM8Js49aiQuSkZzkBukgfNY0olyOdLCy2P7BRnl0rouagSpHUnVI/eQEkn0rpRcpkVD3h7QGgAuBKpzSVLcf9P0qd1gJMHM1rD6cksVJs82ex74rII3SeipKd+VNy7I2weXm5OZs9KE0lYLW8R/Nof/s= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1787652644; c=relaxed/simple; bh=0bzf7luq2vDBcWejo1e+u5B6Q3+5yPf7t7s40GjIVqA=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=KWKf7CCRm2jtwyuQqn5fNxETmW3tO2GuWrV7nBdL8WPFkHcNHzyy5zwiqxfIv++CHaQWzNMmE+Wts8WCbd4tom+XGCjkaA0+NZRea7WVALJ0h9JHAGJL4Wtx2yo3T6H2KcAaGw/va0+XJvvXmMRz6aA7eza98uJFMu+SIjTiaa4= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=I0oqY2Ym; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=I0oqY2Ym DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 24D9E4BA900D ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=GJ2O2IBVQ2zpuQ7NVDRF3cSREDmriPP38VHsj0Hf/yZaQkqBIHxk4r5hcTDywtFEznNJnxG2uJdL5XZ6Sy69dP/0r/qze/7KWWKmiFVIDqYjWfTg6eunMm59b4EaqJ08tQ+534JVXj1wo0gp9M+3syfLJ3j2Dp70tInqnlGJ6s1H4SAwvU/HmAAulGvF5wJ65KfpxerY3PPkAlEvrQ20fI6Z+xIMEt/FJbEbsFntDH0Bpd4u586+a32i5GwS5Re/ANNVFroBAHaUUzVJx9xAHVLp4lnQkAXT6Gm6zaSYlXYPYBWJAtS27a5ArLOChOOFIgKMAn5BTEfA40+MqjE7tw== 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=qpnMIll2pwiT9a3sRHQx7Q5ENupg+gsq3lH2e5EqHQ0=; b=MNajDUizAsh3VDmKI4R0PVhJNhi5fCm+kJvWrghxC9bBQ3dijmPee9UumYJY4ZP/eEqoNgtwZ6LDtMPcja3ZdUVN+l0d19x4u32QNvR3vAjHGsfQhQPpB4A3v2NQWVjuzJcro2q3Y3jMv9eT+Tfbbt6ybn8xK8J9op11cAbEmEyc8w9mSIoXL9xhwVOpFTSC/++rfr93m74YtVPw1rx3NIyfs7nuMts7W0Gj+8EKE/Fm7rnpZnbBMxMU0zQBgjzHgENvKkqdXqV5An/0a9AxHAcXxPfWMWP+jD07MmfejsqVlfFH+oVzzxCbsKn7rakTbBadqPFSz+8I92FRWuEJEg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) 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] 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=qpnMIll2pwiT9a3sRHQx7Q5ENupg+gsq3lH2e5EqHQ0=; b=I0oqY2YmNoiCNJidopdlmeSP2hvr8T5b+3VRucw959zZAgBM2j8xrpK0ObFDqasK6SCQpHfQ691vHsT28ctak9te/9HJfsKoO+BygocUM4+2cuog11bn9XksiI4Rt6HY3KbJewQ7RLQs0JUvrZmxxEH5/nKJWd+kZk8doIe/bo0= Received: from PA7P264CA0278.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:373::16) by PAXPR08MB6528.eurprd08.prod.outlook.com (2603:10a6:102:15a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.12; Tue, 25 Aug 2026 10:10:34 +0000 Received: from MI3PEPF0000848F.eurprd03.prod.outlook.com (2603:10a6:102:373:cafe::87) by PA7P264CA0278.outlook.office365.com (2603:10a6:102:373::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.6 via Frontend Transport; Tue, 25 Aug 2026 10:10:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) 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 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by MI3PEPF0000848F.mail.protection.outlook.com (10.167.240.150) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Tue, 25 Aug 2026 10:10:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t4jOchDX+KRNKVnZuBEt1RWwSlPM0nNEmVz3jj/Yz4CwBrpxF24RyyRLKQaQijR6lwyrQfLHw2cMnx8O8ynZUBFgBLbkzumxffeOCdtc8mARY1t2HjMOZPimj79kswmEjQMm8dwn2Z+NLv3q4Ud3e+sqHZLih7KFri0oSz650deKDeJQ6rePGAcf67QZG/W3zlKAiEDE51yGzCPbQvK0QqHtL4xm/Q9tReiR6NMYG+N7b+VAyVwUGcPLYLfnezSsMqI749l+/jPqcbFxldfj+fCAjVujXj1Mle/Undagmaeks9L0sN96Crtup9gyL8qQzRq5E23g+4fqOOZghHbOOA== 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=qpnMIll2pwiT9a3sRHQx7Q5ENupg+gsq3lH2e5EqHQ0=; b=Un7jwZlpaDIBQp5gxA4L7rjE1ep+Q+kenRAIsMhvSTcjPlvagJhjCPh9rz4CdZ/w7NKfFt3lUbNrEGQROjwlB/SKPbUXBFcqya/Fg4WVO9Zs0rOTLb90DIBewXAKYC+63DbSG9N/1NVRF8ucrwml+XLjsO4Jkc4Rl/Jf3acbvi+Pu23WW60jcO1xRxy82LLp1aUrdboAgKEEQKZSxJJ1zSu9zdUojOdUtC9fGLDKeqwGLZmpGYxSrdQDRcoiox2vKsQdNlNpCVxts+HhyGY6gj3yTR6EjEJeTwUClVZqBRmTBnTPrSkUBUOy4mUutHRq8ci7ZajvyrS1kzC3SOGVcQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) 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=qpnMIll2pwiT9a3sRHQx7Q5ENupg+gsq3lH2e5EqHQ0=; b=I0oqY2YmNoiCNJidopdlmeSP2hvr8T5b+3VRucw959zZAgBM2j8xrpK0ObFDqasK6SCQpHfQ691vHsT28ctak9te/9HJfsKoO+BygocUM4+2cuog11bn9XksiI4Rt6HY3KbJewQ7RLQs0JUvrZmxxEH5/nKJWd+kZk8doIe/bo0= Received: from VE1PR03CA0021.eurprd03.prod.outlook.com (2603:10a6:802:a0::33) by AS4PR08MB7735.eurprd08.prod.outlook.com (2603:10a6:20b:512::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.6; Tue, 25 Aug 2026 10:10:00 +0000 Received: from MI3PEPF00008491.eurprd03.prod.outlook.com (2603:10a6:802:a0:cafe::b) by VE1PR03CA0021.outlook.office365.com (2603:10a6:802:a0::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.12 via Frontend Transport; Tue, 25 Aug 2026 10:09:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by MI3PEPF00008491.mail.protection.outlook.com (10.167.240.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Tue, 25 Aug 2026 10:09:59 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EX03.Arm.com (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 25 Aug 2026 10:09:59 +0000 Received: from PF4S4363.arm.com (10.57.48.229) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 25 Aug 2026 10:09:58 +0000 From: Matthieu Longo To: CC: Simon Marchi , Thiago Jung Bauermann , Luis Machado , "Luis Machado" , Christina Joos , Kevin Buettner , "Matthieu Longo" Subject: [PATCH v2 4/6] gdb/linux-tdep: migrate linux_info_proc to file_reader_t Date: Tue, 25 Aug 2026 11:09:10 +0100 Message-ID: <20260825100912.514232-5-matthieu.longo@arm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260825100912.514232-1-matthieu.longo@arm.com> References: <20260825100912.514232-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: MI3PEPF00008491:EE_|AS4PR08MB7735:EE_|MI3PEPF0000848F:EE_|PAXPR08MB6528:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e5a301d-505d-494d-c3b9-08df029119f3 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|23010399003|82310400026|1800799024|36860700016|376014|8126099003|22082099003|18002099003|11063799006|56012099006|3023799007|6133799003|10067099003; X-Microsoft-Antispam-Message-Info-Original: 7n7wjEODAXKP/vFB+YceEiMmKFv1hEXz3V827PVFccWb3raLgy5fOC+OuxZ7EPM4jvLrO/H4OokBPkfVe+nD0yF0EDzGvw26XemO8JcG9NpMfKZxO+eN9av9aXxJekSbe+3fA8ZDfW/WflaPdzEnvX3u9Ydg/4pljGn+09AUtiRLOUEL9iGhgQcq7edllRVNr8qc6OUV61JCEXDTQbYJwSgPiyRaRtqcoUVTsvLoB7TvWNYNEHmAIAEnjoZ9rODL9P6M/NTCd4RTZoWsgG5aQmDspR2A5NQ45topqMsTgKdgalDmj9eAPi+ymgHJd4/HMIeLqOm2rsLpnopBvs4XM4KZl0RVvGM9xlPROy3DNF00oRjOq6ykOQMYbcccG/DKNX/nPk0sYpBFKXD47jw3M8hvS1d1QxxLTEEzFRzaeq+GO45/NHMkUnLAQOYjI7GyRJ0ZSGumlQcuypUkahi6Vu7N0+CoLLg5T2kQw79txuwp029ur7nCpVxCC+tZFuaUaEWruKF5LO+hg7odKVGqt42EIXU5Z+rKh3U9ZkdTLIL18QYORVfKHG0/X6wEeLFhtP4ABxt2Oxh5tQnFUKRnqrKa/t4gzDTKdRjT4a9waYEnes+psaF8yy9Zvzu0if8rpFraBL0EJOsJhfzqbxnsq8Ve/7rGrWbKEXdnXoRVHXvPruGUFfuLsLW1lH2ilLsAKZHr2IqKahk1L7iwxVcMTA== X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(23010399003)(82310400026)(1800799024)(36860700016)(376014)(8126099003)(22082099003)(18002099003)(11063799006)(56012099006)(3023799007)(6133799003)(10067099003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: hhnAS7djh6cIhrEWFVDZDZUnHd87NMp850fQrNK0h37dctcBatvhmahZYT6kW1N2nATKRXmKW/zIIugx/WWOJgpAzqdShr8MQJ1juSwJ311+DVLHfioJQ3+HnHfS9b5qx3VgaUdzZSeNxbRqWJBjSlCsLZ6roWsSr03yfkihyv/fnPvXJ+i8CdeCDEmJ2UB0mJHV0PNSLrPfnUgJHn1HXOv++oh70qqwYrvlvm9lSLwCL0GQgGBN/0+ddTcg4U0VlPg2TKR6iObjJeWrG2fCODJJLII2Ecb9vBnONm0CR1vRWHX/SFDRrfw1iSnKsn+9fy1Ray5gxJDuw5pN82ffuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7735 X-MS-Exchange-Transport-CrossTenantHeadersStripped: MI3PEPF0000848F.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: c9491b7c-7e6f-4ea2-ecfb-08df029105ab X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|23010399003|36860700016|14060799003|82310400026|35042699022|1800799024|6133799003|10067099003|11063799006|56012099006|8126099003|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info: QaNDkxaGSaAW75S/1p8XWBXtxVdf9PunqYzAhdAUyjyEum2RuciyxDg43b7zVSumwqENGTktfZ5i+Rn/VT7TOE5NZZqzvl0sf1I+YI/rkIM0jbFnmhkRfEqZdUfrn5+E58GaoWVzD97M9YR1OBMQybXR03t8OA446ZLlKmDadEe9tt2zaQEskn9TXh/fzPGw8G+Ad7XIDReQM6+Wnu2rS2g3rilpSh5enQTBME/74B25uRtDinqc6Q3vhVw7Nqlwci5S5yRXa35eDdyvYkcw1m6FnnKmUFRiD4tbrbutrKWrzHLr6+5SUiAoynhfHm1IymDnNPhsS8APbCYsqKDEyJh1dXmw0xlXA7fqw4mpgXUiQAIjF9AXBCwPFAllxf+/nppMszvxlQKet29bSMRPgKLlkYLIJAL5jlOCX85wYgVSrIwfsan9Wsfzz/X5xO9HETDaluopsxOyMMX51o9MXdIYs2f6Y1KR1DrMPtsY/KFlat8Kn1iiQsnRw4iO0U8SI60NhP4DzKyZLz2EvvRC6S97LzasMvNqsIDqrqwy71OJoG2lfOk0YUdqEIRZPf9xUtl55EXx5YKOH8CBmetpk0nqNQmS+ldprtSPdw9+1LjIIT7Owo47Tas22zdMsN54LH56F07DWP2bQW0lQ/9d4qg9WcMV06PNtLMS5U6GoVfPHTh8UlfXgomAZA+4XiH1+g+qScvmXO9IVn3YnbRJcw== X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(23010399003)(36860700016)(14060799003)(82310400026)(35042699022)(1800799024)(6133799003)(10067099003)(11063799006)(56012099006)(8126099003)(18002099003)(22082099003)(3023799007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xAIf4SH8Q5jrrTOXCT8p2m10vWkPNIhKrJDMUVuLlANbYyPVEZKb+mHwY0zdXSQv/eI2KH/qhVLMaTpn9cOOBpm4JdxdmOUJ3kG2pW/syBpLhe2tsynbgs3+ef9Vet4/Pxb35Ovi8WXwnr/o0SD6hTdTlIjxiPZhhk+HbKnWNjakwKzGhUc/jjJCrGHacUPwGViKi6UCF3Si0peW8QQVsjHabZ3LB+BAD1dRbMQkE0NmJx4IV/5zSALPGNwi9ef7WJUYFub/u/OICMqtU+qwttUAFLT4XPgBvLWGAWi+Qez3LeRhrVvow6CDSgS3vn8pLYExdUF56QYL6jaNe1juiAjzFJq2dDsbymjiYQ/nf88FQlaREWbwCmW0o22JrUp1aegE4Snh+pBxHVsVyCIUDPrMLjWG0u9RPpUZ8hSBhjwyLPjwTsvesAmx2FjJPFp9 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2026 10:10:33.6944 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7e5a301d-505d-494d-c3b9-08df029119f3 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF0000848F.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6528 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 The patch migrates the code of linux_info_proc to use file_reader_t to read the procfs files. The availability of array_views allows to also simplify the logic in several places, where null-terminating characters are replaced by spaces, or where the file content is iterated line by line. In the last case, a new helper function, extract_string_view_from_buffer, encapsulates the logic for such iterations where string are separated by tokens. Reviewed-By: Thiago Jung Bauermann --- gdb/linux-tdep.c | 135 +++++++++++++++++++++++++++++------------------ 1 file changed, 84 insertions(+), 51 deletions(-) diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 84614bc91a0..e2c5b2d8815 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -866,6 +866,39 @@ dump_note_entry_p (filter_flags filterflags, const smaps_data &map) return true; } +/* Extract a string view from BUFFER starting at START and ending at the + first occurrence of SEPARATOR. + Return the extracted view together with an iterator to the beginning of + the next entry, skipping any successive separators. If no separator + is found, return the remainder of BUFFER starting at START. If there is + no following entry, the returned iterator is BUFFER.end (). */ + +static std::pair, gdb::array_view::iterator> +extract_string_view_from_buffer (gdb::array_view &buffer, + gdb::array_view::iterator start, + char separator = '\0') +{ + auto next_start = buffer.end (); + + /* Reject a START iterator that does not point into BUFFER. */ + if (start < buffer.begin () || start >= buffer.end ()) + return {gdb::array_view (), next_start}; + + auto it = std::find (start, buffer.end (), separator); + + /* If no separator is found, the remainder of BUFFER is the final string. */ + if (it != buffer.end ()) + { + /* Otherwise, skip successive separators so that NEXT_START points to + the beginning of the next string, if any. */ + for (next_start = std::next (it); + next_start != buffer.end () && *next_start == separator; + next_start = std::next (next_start)); + } + + return {gdb::array_view (start, it), next_start}; +} + /* Implement the "info proc" command. */ static void @@ -914,25 +947,23 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, if (cmdline_f) { - xsnprintf (filename, sizeof filename, "/proc/%ld/cmdline", ptid.lwp ()); - gdb_byte *buffer; - LONGEST len = target_fileio_read_alloc (nullptr, filename, &buffer); - - if (len > 0) + file_reader_t cmdline_freader + (string_printf ("/proc/%ld/cmdline", ptid.lwp ())); + if (cmdline_freader) { - gdb::unique_xmalloc_ptr cmdline ((char *) buffer); - ssize_t pos; - - for (pos = 0; pos < len - 1; pos++) - { - if (buffer[pos] == '\0') - buffer[pos] = ' '; - } - buffer[len - 1] = '\0'; - gdb_printf ("cmdline = '%s'\n", buffer); + /* /proc//cmdline stores the command-line arguments as a + sequence of NUL-separated strings. */ + gdb::array_view cmdline = cmdline_freader.cast_view (); + gdb_assert (cmdline[cmdline.size () - 1] == '\0'); + /* Replace null characters splitting the arguments in the command + line by spaces, except for the last one. */ + gdb::ranges::replace + (cmdline.slice (0, cmdline.size () - 1), '\0', ' '); + gdb_printf ("cmdline = '%s'\n", cmdline.data ()); } else - warning (_("unable to open /proc file '%s'"), filename); + warning (_("unable to open /proc file '%s'"), + cmdline_freader.c_filepath ()); } if (cwd_f) { @@ -946,27 +977,25 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, } if (environ_f) { - xsnprintf (filename, sizeof filename, "/proc/%ld/environ", ptid.lwp ()); - gdb_byte *buffer; - LONGEST len = target_fileio_read_alloc (nullptr, filename, &buffer); - - if (len > 0) + file_reader_t environ_freader + (string_printf ("/proc/%ld/environ", ptid.lwp ())); + if (environ_freader) { - gdb::unique_xmalloc_ptr dealloc ((char *) buffer); gdb_printf (_("Environment variables:\n\n")); - + gdb::array_view buffer = environ_freader.cast_view (); /* Entries are separated by the null character. Print each environment variable, line by line. */ - gdb_byte *buffer_end = buffer + len; - while (buffer < buffer_end) + for (auto it = buffer.begin (); it != buffer.end ();) { - gdb_printf (" %s\n", buffer); - /* +1 for the null character. */ - buffer += strlen ((char *) buffer) + 1; + auto [ntbs, next_start] + = extract_string_view_from_buffer (buffer, it, '\0'); + gdb_printf (" %s\n", ntbs.data ()); + it = next_start; } } else - warning (_("unable to open /proc file '%s'"), filename); + warning (_("unable to open /proc file '%s'"), + environ_freader.c_filepath ()); } if (exe_f) { @@ -980,10 +1009,9 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, } if (mappings_f) { - xsnprintf (filename, sizeof filename, "/proc/%ld/maps", ptid.lwp ()); - gdb::unique_xmalloc_ptr map - = target_fileio_read_stralloc (NULL, filename); - if (map != NULL) + file_reader_t map_freader + (string_printf ("/proc/%ld/maps", ptid.lwp ())); + if (map_freader) { gdb_printf (_("Mapped address spaces:\n\n")); ui_out_emit_table emitter (current_uiout, 6, -1, "ProcMappings"); @@ -997,12 +1025,16 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, current_uiout->table_header (0, ui_left, "objfile", "File"); current_uiout->table_body (); - char *saveptr; - for (const char *line = strtok_r (map.get (), "\n", &saveptr); - line != nullptr; - line = strtok_r (nullptr, "\n", &saveptr)) + auto content = map_freader.view (); + for (auto it = content.begin (); it != content.end ();) { - struct mapping m = read_mapping (line); + auto [line, next_line_begin] + = extract_string_view_from_buffer (content, it, '\n'); + it = next_line_begin; + + /* read_mapping() expects a null-terminated string. */ + *std::prev (it) = '\0'; + struct mapping m = read_mapping (line.data ()); ui_out_emit_tuple tuple_emitter (current_uiout); current_uiout->field_core_addr ("start", gdbarch, m.addr); @@ -1021,26 +1053,26 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, } } else - warning (_("unable to open /proc file '%s'"), filename); + warning (_("unable to open /proc file '%s'"), + map_freader.c_filepath ()); } if (status_f) { - xsnprintf (filename, sizeof filename, "/proc/%ld/status", ptid.lwp ()); - gdb::unique_xmalloc_ptr status - = target_fileio_read_stralloc (NULL, filename); - if (status) - gdb_puts (status.get ()); + file_reader_t status_freader + (string_printf ("/proc/%ld/status", ptid.lwp ())); + if (status_freader) + gdb_puts (status_freader.data ()); else - warning (_("unable to open /proc file '%s'"), filename); + warning (_("unable to open /proc file '%s'"), + status_freader.c_filepath ()); } if (stat_f) { - xsnprintf (filename, sizeof filename, "/proc/%ld/stat", ptid.lwp ()); - gdb::unique_xmalloc_ptr statstr - = target_fileio_read_stralloc (NULL, filename); - if (statstr) + file_reader_t stat_freader + (string_printf ("/proc/%ld/stat", ptid.lwp ())); + if (stat_freader) { - const char *p = statstr.get (); + const char *p = stat_freader.data (); gdb_printf (_("Process: %s\n"), pulongest (strtoulst (p, &p, 10))); @@ -1167,7 +1199,8 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, #endif } else - warning (_("unable to open /proc file '%s'"), filename); + warning (_("unable to open /proc file '%s'"), + stat_freader.c_filepath ()); } } -- 2.55.0