From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id GQc0OdPIaGor4zEAWB0awg (envelope-from ) for ; Tue, 28 Jul 2026 11:20:51 -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=r154+F5E; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=r154+F5E; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id E6D161E099; Tue, 28 Jul 2026 11:20:51 -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 [38.145.34.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 28F251E099 for ; Tue, 28 Jul 2026 11:20:51 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E47514BB3BD7 for ; Tue, 28 Jul 2026 15:20:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E47514BB3BD7 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=r154+F5E; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=r154+F5E Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazlp170100001.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::1]) by sourceware.org (Postfix) with ESMTPS id 0C75D4BA9000 for ; Tue, 28 Jul 2026 15:19:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0C75D4BA9000 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 0C75D4BA9000 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::1 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1785251945; cv=pass; b=ERVJFLvdUatO7w4hxQG5vytOoUSLFPmDXJeJNdJ3JZrAmfAXuId3NqpR68oAi2tJu/h81ZjgKvzjhvhPUq6T7gFWkh1dZo2dlKLGD+977NCjfpwkKhtSCHEr3xhZrJLX4vbv1vytI92wqsGAibAfxP5doO7b5YBA7uWBoMkQbwM= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1785251945; c=relaxed/simple; bh=FjMBEiRDXUCRXxXokiIkTxPwQDXjf+qpD4yZ4gJ66yY=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=BfVHEuAtGOG6RrN8rPelwGAaIEjP13WhCdeApe4RVLHpIesolVMwYfF2UsWtKRRtVgJP4rMhiqo8Mx6MUNBQM3h5eSY8e8cHFOrK75GnAIBIXSerUDhO3C2/zRnG1SFV+Mx5qS0dc3GpSaFRBXS0liBbl/tli9Gk3pjyBjWhQco= 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=r154+F5E; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=r154+F5E DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0C75D4BA9000 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=NZkwaEh8fYC0oJThXxcHD+VPvxgirwGELbfhsExzygbexQcAg1mRyHejcS9diI+kM3isBlXiAgiVFA78ZeLVceuat2upLp6kH/haJhyai7InPi+OPRgjJ1xiXtdGj6+LmyOaoZrrTxrqJ9N6tU/aVqebcMeZB5YoAkWEj5/fiUhMqEeW4qyyyGuO04qtLTdFB4ZCvOvA8ZaLwZ2vmKSTPCusgN1cQybqknN5TOyQKu1icfZBYPWVZPk6DrqsKK2WfcechR18BAvK/uvWmnWmVSiAl0q9XfKNWo8yO98afdRz7Z+GDZoNpfXjtDa9pT06fR8vZdgfPRNxDy15VJrc6A== 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=WyKFFVesH5dTckpAjULEyoA7HQiROgi2KJxAC2kBoqQ=; b=pLjh3vCAHRRZzFNEwj8CFVfzSU/7fC0RhOY2oZ2WG9OsQVwPHxc0m/3yC8PJ38f8PxbkrXBQqEBU6217Smj6YX26sEc5qc3AYZG0vAWKke1dU9EjVThHks9EDRWfXTYDmTgvauPUZ3jcNDnyEnT3vohX35Ht9PCVIpoFyRbJCnSqSVDq+lGEFvfmUVAWDP4LXGK7NJZrm5DqrpSCcCflgfeipBKdzGSXTCVyZXl+8qVULjR7U5ns7gG7pi/YMjhdk8Z7ycPmmRYiCBTeY/Nw8Or9C2sqK//2XlLqVxbsWkDGzeY/ThhxS4alE6QVoJQk1PKl+wci1HKHtlART+fuCQ== 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=WyKFFVesH5dTckpAjULEyoA7HQiROgi2KJxAC2kBoqQ=; b=r154+F5EaWHXsnBAZvePnzVaJSWDAaAEMkGwoHsmCjz1Xw2/a9boXd3Axzjgk4R9FZJzd4cFp7J+S45zxdUcFXg9kf33gfMIsywEtLVquU2iRD/wwrCuISYxRZugyCSgFzfZE0dYMb9OZYIokEKrpmRS0IZI6y0YR63aWO/pnr8= Received: from DU6P191CA0065.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53e::27) by AS8PR08MB7324.eurprd08.prod.outlook.com (2603:10a6:20b:443::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.12; Tue, 28 Jul 2026 15:18:59 +0000 Received: from DB5PEPF00014B90.eurprd02.prod.outlook.com (2603:10a6:10:53e:cafe::75) by DU6P191CA0065.outlook.office365.com (2603:10a6:10:53e::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.270.12 via Frontend Transport; Tue, 28 Jul 2026 15:18:59 +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 DB5PEPF00014B90.mail.protection.outlook.com (10.167.8.228) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.270.5 via Frontend Transport; Tue, 28 Jul 2026 15:18:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GYRnKD+6FYlSjflqud165fhCX8sdeiVIgbkDsgF8oUUx3ocNj2+17Jzgo5Qski4cyF4uhK1P9VrIy3KCPOza/+vCn3E96rLpxcMv0AFT8WJURyqFnRbBSinYzJFvw3aoZ72XYdnQLr56yubVlFUjiO4jN4V5MwkJ5ZWEP8ecySKIuG8kktm6a6+hZ8u8ubJy7B0eQO7wN1bOIt3K3P/D+IVK9+41zoBEcfL9oCtJ4bl5LlMfGMXwcZlIU+hwGFtFDLp0QjTn9o83Esrn+SiNF+8Mn0sfF0uDJpn9AXSQLCnluyUpcTX7CoH3oRBeD5Y/uToeFR3FqIwYh+IzKx/ylw== 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=WyKFFVesH5dTckpAjULEyoA7HQiROgi2KJxAC2kBoqQ=; b=SvKd4DcTqP3YjmrsKRRiVVua+k/Mh6CaqpIWQ4I7bkgRpl3pClfo1XJkBetWlyZa7OKMvyS3X6u1KSFPdmo9jKKDoe89pNY//iRv7d2bOv/tmk49RnspqoVLUlMmncfy3AaO50wAx2+scmKHPqubQ4QuGlTrUAfxyO/jQXA2aC+kl9yb37JZGCB46q0aIAWu2z4Qp4OjBl6xUXwkIwXd7CXsdRLTG5MjrVd7K0kngEgH0aXt+k1SCWdJBAkNke+XaViVBjWFdkFIzPLl0Qgxvf7io7SuwxMGQ7KZchXInn1AM8wlXzFGeqJJfHeKJDBcDaX0KI30weknpKn8E0+EFQ== 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=WyKFFVesH5dTckpAjULEyoA7HQiROgi2KJxAC2kBoqQ=; b=r154+F5EaWHXsnBAZvePnzVaJSWDAaAEMkGwoHsmCjz1Xw2/a9boXd3Axzjgk4R9FZJzd4cFp7J+S45zxdUcFXg9kf33gfMIsywEtLVquU2iRD/wwrCuISYxRZugyCSgFzfZE0dYMb9OZYIokEKrpmRS0IZI6y0YR63aWO/pnr8= Received: from DU2P251CA0021.EURP251.PROD.OUTLOOK.COM (2603:10a6:10:230::24) by PR3PR08MB5563.eurprd08.prod.outlook.com (2603:10a6:102:89::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.13; Tue, 28 Jul 2026 15:17:51 +0000 Received: from DU2PEPF00028D03.eurprd03.prod.outlook.com (2603:10a6:10:230:cafe::1b) by DU2P251CA0021.outlook.office365.com (2603:10a6:10:230::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.245.13 via Frontend Transport; Tue, 28 Jul 2026 15:17:51 +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 DU2PEPF00028D03.mail.protection.outlook.com (10.167.242.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.5 via Frontend Transport; Tue, 28 Jul 2026 15:17:51 +0000 Received: from AZ-NEU-EX03.Arm.com (10.240.25.137) by AZ-NEU-EX04.Arm.com (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 28 Jul 2026 15:17:49 +0000 Received: from PF4S4363.arm.com (10.57.42.206) by mail.arm.com (10.240.25.137) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 28 Jul 2026 15:17:48 +0000 From: Matthieu Longo To: CC: Luis Machado , Luis Machado , Thiago Jung Bauermann , Simon Marchi , "Kevin Buettner" , Christina Schimpe , Christina Joos , Matthieu Longo Subject: [PATCH v1 4/6] gdb/linux-tdep: migrate linux_info_proc to file_reader_t Date: Tue, 28 Jul 2026 16:16:58 +0100 Message-ID: <20260728151700.253720-5-matthieu.longo@arm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260728151700.253720-1-matthieu.longo@arm.com> References: <20260728151700.253720-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU2PEPF00028D03:EE_|PR3PR08MB5563:EE_|DB5PEPF00014B90:EE_|AS8PR08MB7324:EE_ X-MS-Office365-Filtering-Correlation-Id: bd07c561-6c9b-42a5-1b8b-08deecbb8bb8 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|376014|36860700016|56012099006|11063799006|10067099003|6133799003|8126099003|18002099003|22082099003|3023799007; X-Microsoft-Antispam-Message-Info-Original: 87ICgHSZkv5/wVhe6kF45UKNktgiZh7XMTxdFg8tE+yGfBOqgUaiEwlVKLkmhjulnTNBCy/P5hS0oIVOBs3l4vOYnT1/oFNPcnT8GEG/tTgS+JgWYur55WM8/IFnSwfxSiAtwhWWYIPXzW/eev388ubaW/x6cCuzwyGNRWGucUxwvcQXBvk7I58An0mqBiTjqhJ48OXZ7qO4KUtsPhRqqTdvSz556WDTKdFKBzH1di0HA8Q96v6+1GxxZjpvVePxJbo581c/xTX69S636RlvF36BtQ86DBYD1+5fV0Ap0mw3XM66X9ObkwBXo/z2hY8iiK3LCouNYrOQLX9WxtV+o92VaZyu6cDHMnTYjaeJpWzEXRNZqKu5g4pC71+S/RVn8hvRsGowYJ5OPIfvg67mhtDVTaHZrxCTfvvqCbKt176sm2+SwPMgogADYGh6xi8NKE84S9D92KpWEqYfboxo75n0zZXDc+bYPIg13yDEo/FreGzGssAtV64CtO8zwVNTaWfAwdj1kYvlhzfOWxgGDd2w7jTD/UBQxRIbzvlTOkqkTuDz7lrRLrpcagkqeuJYm8jwTpnTx9LEg0pUXtp0W2fUsCeNeDe9F9L0K5rPEyaGudrEWgJnwPZPU3Sc9h9XIHhWLWjqAPQLzwVD0pFIJsM1iCBPtgvHr9fMOLWxaEMYvj1kKV6x33jjhfFMd55esY/MgG1QNUyp9gFplwa3rQ== 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)(376014)(36860700016)(56012099006)(11063799006)(10067099003)(6133799003)(8126099003)(18002099003)(22082099003)(3023799007); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: eOsoAiWWHK7tECo/hgQSV8PDN3gXiI4c6SP+5ytchnXe30BxTqRY3+xrGY5w1/zjtCeP20C/N1w88Sh33EJsptf/vSYJQh2SzAsD+wG6qmbftHHADIOSre2RrsGnvZQDFTG+KCP2sfHQNtqQUPLAc6m4wjT3A+DnBXfKRAW2ZMSf/oKqhviYj04jlUdc+xeQ1mhianuiCcX+xnp7vXebediSF5oV2ohVsiRgWSBoe09iU8z2UgQKxQSDKM6mnNXa4jLeqXvn1D9JpnB1GaI3y6RswxFyYMRmcTBrQH8muTHipnO0C1cifmkTaTloi2WM4hnxenke3O3RWrOu6ibCog== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5563 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B90.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8aebe758-8c53-43ee-8433-08deecbb63d9 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|35042699022|376014|1800799024|36860700016|23010399003|14060799003|8126099003|18002099003|22082099003|6133799003|3023799007|11063799006|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: OqJ8KbTKIF8r9SX5XTg77DaBZ7CtLNjP819QxIN9XoFLiAl+zoIMsmkQDeSERhdpoGS36Rb72nkHqGrlYzYfJms0KkBP7Con9TQPXq2tbQ6BqPn7fkE2uXN0JmUH4QWZntIBA96YicB5HNf5KiG5siJSZTfB8FFBfIXbjroIvQzkvLD+8JMwZDclf6psLanQZyzjEGF+4QFGJingAVnm3gPwnZNtecpLUUMWu+fRElhvb2bydfm3vrtEgIOAGME4n4HpQkzuqExfPmEzc9pTD5IY6Ngty6bWjBPNQ41Br2/4VigvkaFOxc86ARYBYy7Eoz9Ev513F1e8Du+gvzTd69H/cReCsdGMAovcYU1u/cgaLYB7H9AoZJOWn+LQcAVIbPtJkBkSDxS/03tped56UA1lLwD9UMtG9PM4jRmRtwQs6jicFCJj+4JjHHEaLsT2mBwB6c9tulQVVtsXnUUtbM/KRJh9Nco9WcM6revfgveDUdmQWXyW68rUT2bngsolOsr5k78K0s7kMeW6mzCkOFgqfuYOWemnlaAH/L/KxeS9aLR4qnQTQmOqDhKquAdFrMp0PCS0MYeBj3j+Mi9L1Iwi3AB2HUgiCx8e3mRE5kazVVXZ3Dcm6N3eoLX5gL2ylwjcHoPr3QVHSdDdC+fhwYhrhVN6Al07ZD78dimhXtqZ7vs5WrNlCBds1KRJtJAfDY9bST49vcOYsa4+Q6hhKQ== 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)(82310400026)(35042699022)(376014)(1800799024)(36860700016)(23010399003)(14060799003)(8126099003)(18002099003)(22082099003)(6133799003)(3023799007)(11063799006)(56012099006)(10067099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xaLXzPFIIIox63RHMxI0WcXuXp52ayJzlfv/hnJUuQt+9Ds0OKZYcGsm3k/jwqZgtB7cQahYUDjN/l6DGvwiXL78/+UZ54YwhEpqV6LgBqm7pPVAe80zdxGQIX7aFS3M1WM+dqJsxaOF8nAOeR8k5WiMI/CO8ZuVaLAwzytp726G8ex3P44aGXnm7hh7tIRRqoW10gThsx38H1iasl2A5JMjo54kN4ic2a/AhXPIujRqFRa/F/9Lpl8mu+R6st4iNG04RKiSPuV0rhBnkVxRHnsioIN5Q6ca/HzPfU7hZ2hsSyj9hnPcubIG9cFwOyyDhoBDXmx2eqdTd5EfiDSgAMbcZnY7spjpV/mFCe9lwXTfK/hrD1UMj0hiP1jo5GoMnzj1owx5F5MTjIkOoQw92eMW62mxRlOf1T0HxIKKIiMubZv0R3w4E9HvQohuz5QB X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2026 15:18:57.9236 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bd07c561-6c9b-42a5-1b8b-08deecbb8bb8 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: DB5PEPF00014B90.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7324 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. --- 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 11f0a6952ea..a8dab0d6d5e 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -874,6 +874,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 @@ -915,25 +948,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) { @@ -947,27 +978,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) { @@ -981,10 +1010,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"); @@ -998,12 +1026,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, nullptr); current_uiout->field_core_addr ("start", gdbarch, m.addr); @@ -1022,26 +1054,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))); @@ -1168,7 +1200,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