From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id kaSXLmCIsmpg9TIAWB0awg (envelope-from ) for ; Tue, 22 Sep 2026 09:53:36 -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=kqK0te4W; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=kqK0te4W; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id B18561E06B; Tue, 22 Sep 2026 09:53:36 -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=ham 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 37DFC1E01F for ; Tue, 22 Sep 2026 09:53:35 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1D1454BB1C16 for ; Tue, 22 Sep 2026 13:53:34 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1D1454BB1C16 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=kqK0te4W; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=kqK0te4W Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::3]) by sourceware.org (Postfix) with ESMTPS id D50E74BA2E16 for ; Tue, 22 Sep 2026 13:52:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D50E74BA2E16 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 D50E74BA2E16 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c200::3 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1790085181; cv=pass; b=AObH0kCK7+St+llu5ymvgZidPTRytw6Jo6CAwJqmFZL98J7CkgwPrYVDNOgP7C+V7PZPT5193dewK/bAObiq4JK0K/aQ7AQR9ZBhlFje9UQJUemKb2gAY3pQ7r2jTsJi3JGMcRmcUQD4p+4MQkvAa6LwoxeF7eK3oMjnoYCx7lw= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1790085181; c=relaxed/simple; bh=lXlfK3zC4EdVX4tZtJyV8UdgeK/hJ0iwrZ1LG/RyDSQ=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=mGn5LVGYnNjs28mLrtgyj5+X50+agaJKvhix2440cNtqLqJtiw4OgofHrmv6o373c4S+70YiDpfagMciZqLt8y2ww/UMLgNpnval981z89cSEFuicilC0qge5Uw7lrf0l9MPkvQDlxJxhweh8Oy8LiQfF1k0Bg4gatkIuVDcH44= 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=kqK0te4W; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=kqK0te4W DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D50E74BA2E16 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=dD9a3NtqVoUPIl2PKegzQud6Vv08Txy0qMIiEEPoATWQlIshiQoEos8GZOWcBvs5LICzLrKjrNvgUA3GdGJEltM91rLDd/+FInqOlpf923UzU59G9rok+EX0FjR4b7/AfJzCndZcDPw5Z8OYp6OV7jWvOuXTBRVHDnq6LWHVJJo8xZfK6r0Ya2pCjGnQX+fCW3iAKPXDbuXpaUMhlpmaCPuq6pbbo0GY24TbUYwmuuKANGF1kutgMejx7ZtT+GK393fcuDWj7nTRQhRZk4Q8OS6qLv3t/7C493kuZvyRwgW8XyyMUpSxGVO7BFqLzJk1N68TSzQBf+UIs35YAqQaFw== 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=xkwXafESchi7jzAnsEiDHNQvx7SERK+/xCdxWu9cOjI=; b=rOz8guAXWQDdiL0IujAacezBp/I55DiceyOz8wRxCIZqC2DzV/PAKUA/WY5xu/aLOmq12ORfp0D/PlC36ylv/5bD6z4F9v7KKuVXjwDOkiKyYbdhegVir7s+Wnh2LZng7rhsdruUcCEJHdZ546sAOz3EBcIZN9uzQU/SmgX7vb6JrTiXdOcfcJvDffY66mh7+T7n92bAHO89b9Cug+wgYdg/G9ry1tvp5gxGTsqYrjXjm2YBQWZlYjG91QdTfjSyJpCxRzpQJhjp2ZrOD3dzYFYKs0Ui0ucr5Rfx2hiLu8OlGD1DZDkEfD9Ap/8VTN4tRs5zi5W53JaPW0FSPPCQdw== 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=xkwXafESchi7jzAnsEiDHNQvx7SERK+/xCdxWu9cOjI=; b=kqK0te4WJr+Mfrxwsxrn2NBdk83Jftw4izC/6udnGYqtIRwDbxFDKlsP0NokJMQo5u47PYacDMe9Y5T5g6WcZfoWRWLCBd2Pk6n8Gdmt4EKVg9Fy0wMcLfLO9gun9aRijLoMOjcjmVxAJ5h2yat7fggapyA4dkbDEp+aEy6kyHY= Received: from AS4P189CA0007.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5d7::18) by DB9PR08MB6362.eurprd08.prod.outlook.com (2603:10a6:10:25a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.9; Tue, 22 Sep 2026 13:52:50 +0000 Received: from AM1PEPF000C1AD6.eurprd02.prod.outlook.com (2603:10a6:20b:5d7:cafe::64) by AS4P189CA0007.outlook.office365.com (2603:10a6:20b:5d7::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.13 via Frontend Transport; Tue, 22 Sep 2026 13:52:50 +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 AM1PEPF000C1AD6.mail.protection.outlook.com (10.167.242.101) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Tue, 22 Sep 2026 13:52:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GyZdmoIGKAQYGL5N3GQM+4jNzl8/Bo8KJahOSbgEpv2IyOJWtJIJnUYuM545habTmCEd0mrPjCRp82otXl2dPzEeQrAwjXmoO+I3F6pbw7jEOmM9IsMS0dmAQwxGHa4ZYX7UARECjgXGxAAJYWh9ijS2X4/rz065cx2Qg+I9+pKQScMkCYWLuDoXuS+LnD9Bpu7J5fh5kpJJaD/eWMSdXBF5gGSUNoXFwJ5PaT30m/N3kqJ0HihThnZIc+FpuCbHyyE8lL5373WtGIHz5RWci38D2ZnwvGh5KNz3rceq/ZnZzI1qLU4ua1KSQy1Svtw1q64fcV3vwtgMso6UR3cIPA== 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=xkwXafESchi7jzAnsEiDHNQvx7SERK+/xCdxWu9cOjI=; b=Q3WLJyHL9iF1Acg2H+BVS9Fa7Ms6MEk7rVBieObtCfA45VwzHJI4CUHqOeKohkddXekuSyd1uda6kHcRmNNo7W9k15jowPl1P2Sm14m9DeO4VArRV8W3fBGn1rBh3tm50+9/2oqcZKxzLawIX3YJ0aT+v5odbOSf4qY14l4b3m7MQKtz69XjKOZG97SFdPrNJifdjNXOCArxDqYi4BOd0oeCnqY+ZwosiBWRWFAXPnl5/d0bWDFaoX0cEN3IMOT4qKyAEr0gbRedj5YYfiaPT4TV3eTs0UojYbFXaALCNQB0cbk/Sv0f59aAzjZASVeHuid6zDskBdd7YQeC5Lsn1A== 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=xkwXafESchi7jzAnsEiDHNQvx7SERK+/xCdxWu9cOjI=; b=kqK0te4WJr+Mfrxwsxrn2NBdk83Jftw4izC/6udnGYqtIRwDbxFDKlsP0NokJMQo5u47PYacDMe9Y5T5g6WcZfoWRWLCBd2Pk6n8Gdmt4EKVg9Fy0wMcLfLO9gun9aRijLoMOjcjmVxAJ5h2yat7fggapyA4dkbDEp+aEy6kyHY= Received: from VIUP296CA0021.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34e::13) by GV1PR08MB11168.eurprd08.prod.outlook.com (2603:10a6:150:1f1::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.14; Tue, 22 Sep 2026 13:52:12 +0000 Received: from MI3PEPF00008492.eurprd03.prod.outlook.com (2603:10a6:800:34e:cafe::10) by VIUP296CA0021.outlook.office365.com (2603:10a6:800:34e::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.14 via Frontend Transport; Tue, 22 Sep 2026 13:52:12 +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 MI3PEPF00008492.mail.protection.outlook.com (10.167.240.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Tue, 22 Sep 2026 13:52:12 +0000 Received: from AZ-NEU-EXJ02.Arm.com (10.240.25.139) 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, 22 Sep 2026 13:52:10 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EXJ02.Arm.com (10.240.25.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 22 Sep 2026 13:52:10 +0000 Received: from PF4S4363.arm.com (10.0.144.159) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 22 Sep 2026 13:52:10 +0000 From: Matthieu Longo To: CC: Andrew Burgess , Tom Tromey , Matthieu Longo , Thiago Jung Bauermann Subject: [PATCH v3 7/8] gdb/linux-tdep: use target_file_reader for procfs parsing Date: Tue, 22 Sep 2026 14:50:49 +0100 Message-ID: <20260922135050.236941-8-matthieu.longo@arm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260922135050.236941-1-matthieu.longo@arm.com> References: <20260922135050.236941-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: MI3PEPF00008492:EE_|GV1PR08MB11168:EE_|AM1PEPF000C1AD6:EE_|DB9PR08MB6362:EE_ X-MS-Office365-Filtering-Correlation-Id: 1aaaf979-550e-488f-0342-08df18b0ca99 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|1800799024|82310400026|36860700016|23010399003|376014|10067099003|6133799003|56012099006|8126099003|22082099003|18002099003|11063799006|5023799004; X-Microsoft-Antispam-Message-Info-Original: axaapQPNKlgsp8VDReu0+Plk/D3jNbJf9oed41diFqoNq4ZZatSHeutzkXOSTx39tBzp2AyabZuTxBPFlqyfPWDXkA0E1IwPbZ//x8151n9nVcpi2sq2+QQnELGXoQ7mrdx+MRIXY+MuNCVF258QO0jbYLWlzGMb9qXvas2OK8Dq7hiVnKgg5NS38rmBvxALEOMgKEJef2jrs/D5L79TMy1G3WnMZMq9W0a5XSLnGiG9zdCt1fRd/et5p8SM2IKcjIVq4XXS6vfKFSnm+fAGqkKw8b2UJ48Zj6nklHB5Tl38/+etwIyk8ZpXbc1YhWosFmfeA0ZL+zygA4KEonbzXuOwCqsu7zpHy/K5S6SZAE17z2Jhd8n5VQXCR8eKG3CHnmIWztVeoMhV/NEZqsLZoK6b2qP8OSVXC5Y5Wwj8Ghk1r+pnteZBttbVsf621373XXfA5sbT9MxPWlu3EZpHVyHkiSIIQlOhbAf6bl+R0y3uTWzDPaXWyhXbrfDQXNp27vuw8AoBgvMrAt4SOMyXeUTm4JfYuwjR/5RuFUAUW8T9xYNigUUaoPg2Xkvcvmp/rnpCsrpVTv5B1N0fTTViWU87r6D2eVB7yNqJFOX53orAJ9D5Hz2A7NyAG7LgkOGi0j3EL5iHj0blX61Vk5Mo5clsJa7tcHvNEu+8c7l3khRqeeK+LljnAzAVJxzdY9Hy08/CWVo0KnZHA7jQXuRBfw== 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)(1800799024)(82310400026)(36860700016)(23010399003)(376014)(10067099003)(6133799003)(56012099006)(8126099003)(22082099003)(18002099003)(11063799006)(5023799004); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: RFpSiP2Fc5N4Qq26qN99fPfnBsFU1awMNNBC7ZpOhfg/2vBw/HUKJUW6zafyQKb4y3fMr8QDTT6dCmYPgbRHLp3QQoiHa9J3wxRWzgxBawVdl2HZfHI3NjPTNyvV3rWIOqz4at9h2KbVna/D7EHANg0cXkCpfGs3Z1Pw0CP4zF0mARoWux1NXYwal+BpprmehZexwPQQypW/TYR/tOHUWWqKm0TrtmvcWRsSe+KGvMauBFyB9fgu/PjSi53dNBi1BDRDzsbSisi+Ev30rHo2Os4+js9UaxyaqTNPJuQ7ZnRXFRgYzlk2cIaBB5t+R++EyWmqamqPHQdhQDV+AVfFnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB11168 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM1PEPF000C1AD6.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: da7d01b4-a890-4b73-1b2d-08df18b0b3ee X-Microsoft-Antispam: BCL:0; ARA:13230040|35042699022|376014|23010399003|1800799024|14060799003|82310400026|36860700016|5023799004|11063799006|6133799003|56012099006|10067099003|8126099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: Wd8OyzNiEOKYoyo67aeorCaWR9NkjP6cMttY36Lai/FguhsUgUo9S55H8XVlAMKIewdjPXMgzevOtCKL+K9CWixdnRX3pYmcXHmQEzAwzqjiKEyRYOQUpgHqA/S84kZz9BVT/zlq2+KA6dxVSpC6PHvdunVbTb3Qg3PZzA35pXPGnC8PdKDJ24o4Ziot2s5fLDT/2ZRpUYQ2XH/JkHxLrtW/5lYP0VrhnpSn8c7guKCqNH8V1o3wM7CyPXqnfI30ehHuCoyIOiikfD+W3iUUjFftoiHFrjwqJ2aUgNbLc0Wue19eSuc+tjMNeI21Zq/I3E9W6idQOoALt4syi7UDhGUARzIR6Vi0b0QbT0nxnoQAK3u7+z9YIF6VJK/PBRWwjVel2FP2p4y78VzsprMyt/g7h+oCTX10Afjby1XSBDhYA/UOc7qeKZMxY6IAFHpVKo6vEt6tALMpnCuxVdoNOz3a7x+G63G5k8wdO85trTOPxF2VIr9zAnmbRhYTuOhHe4mRcb4KxhgwVSqoa06SHlnoLIT/gBrkISj0JzR0OqU71EztKUtfEPvI4nv0uOt/xYWiP+2TQXT2fGpEJLw0itZ4loZ9bGMXUMcPAJX0mg5BD3HhBX76380D1UyI972hVebPVjacmJVCBDQZlpDIjixdaKrEwwxGuvyUZtKi8JKLcxJdIruKKeq+uxCwhNePUmlVs5TzRMIHKIY3U5/3LQ== 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)(35042699022)(376014)(23010399003)(1800799024)(14060799003)(82310400026)(36860700016)(5023799004)(11063799006)(6133799003)(56012099006)(10067099003)(8126099003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ltK3Nwzm8CKPyqfZSNBct6hHBov75/esv4fG3dafT67U1WoSJ9xuay+GxAJ2n9s16VroSdyXTo8rG96eNiMfpHJi/fZmepDT3mj47A2Vq8EEVEI3O06S3ClonRPc3QMM6wPYTMmCdh1FHNw3NzJSVZlJ/moZmnWlVOPcYMvMKZOtDiA/3dBIp0ENOr9rvwLJsiVklVHiGo7/DxAW2p8/bihPkjtXCJLOR4ehX1dFPcrwIDt/1zctZ9y2FxSGnVUk8cfuTZ9ydk2wM6cYN8q+9vp7EzwUebqPUWt5/2t4tLkCwUqEbAW8q8SKet8O/yUDLGBcvie4tyfMaTKa2jqUAwoUTJQS9ZH9YJ6/apoJyT341e3XOo19LqHeL1TAcjmv1crVEW4W7LVyzkRAqE7UzIneBtiFVFIhzKKLQfoHZddPKsYrGEr78Nc3MvrrUMDX X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2026 13:52:50.1313 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1aaaf979-550e-488f-0342-08df18b0ca99 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: AM1PEPF000C1AD6.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6362 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 Migrate procfs reads in linux_info_proc and linux_find_memory_regions_full from the target_fileio_* allocation helpers to target_file_reader. Use the array views provided by target_file_reader to simplify the parsing of procfs contents. In particular, use gdb::ranges::replace for the NUL-separated command line and extract_view_from_buffer for environment entries. Reviewed-By: Thiago Jung Bauermann --- gdb/linux-tdep.c | 120 ++++++++++++++++++++++------------------------- 1 file changed, 57 insertions(+), 63 deletions(-) diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 0582e5eee64..bb1870efe08 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -45,6 +45,7 @@ #include "memtag.h" #include "cli/cli-style.h" #include "gdbsupport/unordered_map.h" +#include "gdbsupport/ranges.h" #include @@ -939,26 +940,26 @@ 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) + std::string path = string_printf ("/proc/%ld/cmdline", ptid.lwp ()); + target_file_reader cmdline_freader (path); + if (!cmdline_freader.empty_or_error ()) { - 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 (); + if (cmdline[cmdline.size () - 1] != '\0') + warning (_("malformed '%ps', missing null-terminating character"), + styled_string (file_name_style.style (), path.c_str ())); + /* 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 '%ps'"), - styled_string (file_name_style.style (), filename)); + styled_string (file_name_style.style (), + cmdline_freader.c_path ())); } if (cwd_f) { @@ -973,28 +974,26 @@ 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) + target_file_reader environ_freader + (string_printf ("/proc/%ld/environ", ptid.lwp ())); + if (!environ_freader.empty_or_error ()) { - 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_next_field (buffer, it, '\0'); + gdb_printf (" %s\n", ntbs.data ()); + it = next_start; } } else warning (_("unable to open /proc file '%ps'"), - styled_string (file_name_style.style (), filename)); + styled_string (file_name_style.style (), + environ_freader.c_path ())); } if (exe_f) { @@ -1009,11 +1008,9 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, } if (mappings_f) { - xsnprintf (filename, sizeof filename, "/proc/%ld/maps", ptid.lwp ()); - LONGEST len = 0; - gdb::unique_xmalloc_ptr map - = target_fileio_read_stralloc (NULL, filename, &len); - if (map != NULL) + target_file_reader map_freader + (string_printf ("/proc/%ld/maps", ptid.lwp ())); + if (!map_freader.empty_or_error ()) { gdb_printf (_("Mapped address spaces:\n\n")); ui_out_emit_table emitter (current_uiout, 6, -1, "ProcMappings"); @@ -1027,12 +1024,13 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, current_uiout->table_header (0, ui_left, "objfile", "File"); current_uiout->table_body (); - gdb::array_view content (map.get (), len); + auto content = map_freader.view (); for (auto it = content.begin (); it != content.end ();) { auto [line, next_line_begin] = extract_next_field (content, it, '\n'); it = next_line_begin; + mapping m = read_mapping (line); ui_out_emit_tuple tuple_emitter (current_uiout); @@ -1053,27 +1051,27 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, } else warning (_("unable to open /proc file '%ps'"), - styled_string (file_name_style.style (), filename)); + styled_string (file_name_style.style (), + map_freader.c_path ())); } 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 ()); + target_file_reader status_freader + (string_printf ("/proc/%ld/status", ptid.lwp ())); + if (!status_freader.empty_or_error ()) + gdb_puts (status_freader.data ()); else warning (_("unable to open /proc file '%ps'"), - styled_string (file_name_style.style (), filename)); + styled_string (file_name_style.style (), + status_freader.c_path ())); } 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) + target_file_reader stat_freader + (string_printf ("/proc/%ld/stat", ptid.lwp ())); + if (!stat_freader.empty_or_error ()) { - const char *p = statstr.get (); + const char *p = stat_freader.data (); gdb_printf (_("Process: %s\n"), pulongest (strtoulst (p, &p, 10))); @@ -1201,7 +1199,8 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, } else warning (_("unable to open /proc file '%ps'"), - styled_string (file_name_style.style (), filename)); + styled_string (file_name_style.style (), + stat_freader.c_path ())); } } @@ -1835,27 +1834,22 @@ linux_find_memory_regions_full (struct gdbarch *gdbarch, } } - std::string maps_filename = string_printf ("/proc/%ld/smaps", ptid.lwp ()); - - LONGEST len = 0; - gdb::unique_xmalloc_ptr data - = target_fileio_read_stralloc (NULL, maps_filename.c_str (), &len); + std::vector smaps; - if (data == NULL) + target_file_reader smaps_freader + (string_printf ("/proc/%ld/smaps", ptid.lwp ())); + if (!smaps_freader.empty_or_error ()) + smaps = parse_smaps_data (smaps_freader); + else { /* Older Linux kernels did not support /proc/PID/smaps. */ - maps_filename = string_printf ("/proc/%ld/maps", ptid.lwp ()); - data = target_fileio_read_stralloc (NULL, maps_filename.c_str (), &len); - - if (data == nullptr) + target_file_reader maps_freader + (string_printf ("/proc/%ld/maps", ptid.lwp ())); + if (maps_freader.empty_or_error ()) return false; + smaps = parse_smaps_data (maps_freader); } - /* Parse the contents of smaps into a vector. */ - gdb::array_view content (data.get (), len); - std::vector smaps - = parse_smaps_data (content, maps_filename); - for (const smaps_data &map: smaps) { /* Invoke the callback function to create the corefile segment. */ -- 2.55.0