From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id W7hBKKkgTWocLysAWB0awg (envelope-from ) for ; Tue, 07 Jul 2026 11:52:09 -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=XRA3guT8; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=XRA3guT8; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 86D271E098; Tue, 07 Jul 2026 11:52:09 -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 [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 19C761E024 for ; Tue, 07 Jul 2026 11:52:08 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A45BD4BA7997 for ; Tue, 7 Jul 2026 15:52:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A45BD4BA7997 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=XRA3guT8; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=XRA3guT8 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011036.outbound.protection.outlook.com [52.101.65.36]) by sourceware.org (Postfix) with ESMTPS id 3566E4BA23F2 for ; Tue, 7 Jul 2026 15:51:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3566E4BA23F2 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 3566E4BA23F2 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=52.101.65.36 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1783439491; cv=pass; b=qShVza7l9eclCDH+V/TkXPwc9kX/mH8CIkyUtWaiIv9vWnE8DQp2VDwIaANItpE6MD67C+RunU3GXjgD11Zb07urMSfEC7ojXkzguMkIh6vTHdGsY3SBmAoawqFhWrPOXDazusKrUfypj55/lwKHh6x4C5pX+RsSk/1Bi9rwuvo= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1783439491; c=relaxed/simple; bh=2rVbqeBmHr0T8e0wQ9hD/ZXPnPtcSabLM0hcgUxOYiE=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=Uz2QbatVYmc2Vt/NUvhuZ3C8JQ4s5lKueP7OC+D8uEgvrL1YEGWxbwaunHOmIMJleK5F16Xk5/NwYHdYyYHpki2UsgzOsCeyeS53Qb+w5ySsOmu/Y3t6O1O6bAQTnFAOrqiGMv6yYILY8nbspHCA4I289W9tE8YKhOSHB3lTF2Q= 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=XRA3guT8; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=XRA3guT8 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3566E4BA23F2 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=SkL8P/zSYSoNRx+SA0V9mqOBaVxF/5od44a2IPUgmBpcF7mSqQmR11EP69ghrnthvgd7uMmQWw/QvjLG7JoZZpIb1qfOC1gNZmbSoQ3mB2KBisEvAbPURR5OdsPogvzokbAe4uVVBJTDJVApjxGG2s8maM70h/x9yyl20Gv/4/cOaC2RcDxrKPL8CJ80qE9XjWnsdy+Ie22RAMHjYslZgx1nZEyygNHRqsJEG780Wmqrz0szF0CPiZcg4jDGFaW/Huoff2RrJGoRqhomDMeFQHELuCXCu7QXpvXdfadhRoBG3LcbwAw73uS7X89uFUN4wb/F8pXbyzLppiXabF86sw== 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=HhsDrgXpmTSAp6wAhH5ehyCsbL7frC5PRWX7RS1E3xA=; b=y95SKNNNOR7/F1KI15G72+ge2/vPkpWy+yycVUv2QMcf0I/3Z4nMxSi869uTWAHN8gBiQO+fQuZoZFK7YFkwPiujghkBlpd24un4pvVbkgNpHZhYUpWtuQB1lzSk6BjeLbpAA/PFB7KiD1hSPKDXKcVxNG9ORptdpgsF4wR3vd2A55gZjquq2M+IxsGKX4ENZd+gW3E6Ev4eqbTS/Go8VaKVgza0TvBhwjckQ2ZTusQJH0iqHGs6EOzb8wnVjn/5Pz5MEdz+yQ1XWm8PNigoKysHOqz3O3xdizeDGIxm8flqvukxBky93xZrw4M77w2BfxnGQeQiEKGp0nTknncy/w== 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=HhsDrgXpmTSAp6wAhH5ehyCsbL7frC5PRWX7RS1E3xA=; b=XRA3guT80uiIRzKGomJs0oZEu4abTCaASIWAbAsR5T2T1L/Hcczn5Vb+53qicOrSCrnh5K6uof+cGn7uWe2+YoJ3JtbigpAq/xNiJE/5vbpkNd0a2h/aYW6S5fGsf532u9IHe4frxR3gnfYQFBd1hF2jUdzMXxaza4hErv4EFTk= Received: from AS4P192CA0018.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5e1::7) by DU0PR08MB9324.eurprd08.prod.outlook.com (2603:10a6:10:41f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.10; Tue, 7 Jul 2026 15:51:25 +0000 Received: from AMS1EPF00000046.eurprd04.prod.outlook.com (2603:10a6:20b:5e1:cafe::36) by AS4P192CA0018.outlook.office365.com (2603:10a6:20b:5e1::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.9 via Frontend Transport; Tue, 7 Jul 2026 15:51:25 +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 AMS1EPF00000046.mail.protection.outlook.com (10.167.16.43) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.181.6 via Frontend Transport; Tue, 7 Jul 2026 15:51:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eDWCWeC+Y46dORBjWmfi2/j0DS+/oiywtTt2xiU0KsPZ78+x5BfUra+JzniJK/9inRTjOit6EfOMjWLVaBZ2G2pPxCX9FRHMrchv3Wa6N1uqZnGkuEawFYC8qTF0et/GhU7JaLSAyUIUFLy7jD8SMr4Or+wpb0g+Lzc/nsZ4JfggbCv2Werz2neibI5cTJPogH+UtZZ/Vf3qP5VUqi+YU9ZSQrPrmmT6XX+Xxx3ccg5OAeJmYoWeLLVv9Q8ZQyIO2x0sXWRogBh8zoyIL9MyjtD/4dK3FJ4n6lOKoJYcmU/eJh0tURUsk2ow5v+5HUZR+i2bWHUTRAoAtzZOF3LLFA== 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=HhsDrgXpmTSAp6wAhH5ehyCsbL7frC5PRWX7RS1E3xA=; b=X0gDjfhqn+k+JYLfD9qk9NQvTB3Q1Mh3/Spo2TLOpqw9MErmVogiGO/NEDS7OD/hg+H8pBNbu/2kRZvZkmCM7LEb7r3pum6h1s0VzO3T4Swa3nmc7nk/5xGYaVsbnFwyCEvkQoqdNycmpKohHmwfFjfilkDnCpHGB0e/9QFgtA7QDf7UXe+ZzS6+79T6PUT3sGoyA8Gs3SZkB8MmtD/E3rzcl2al3wPbKdoY9QHtPxdRLEE7HCVcnZrFCjy7VyuWBDT7GeS6nv+AOsKWuR2jUf1O8nNkysyWvFVOfwXMWI8ptTOONyBZhqecppsxgjYMmd2iVe9k5mRz+le63zonPQ== 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=HhsDrgXpmTSAp6wAhH5ehyCsbL7frC5PRWX7RS1E3xA=; b=XRA3guT80uiIRzKGomJs0oZEu4abTCaASIWAbAsR5T2T1L/Hcczn5Vb+53qicOrSCrnh5K6uof+cGn7uWe2+YoJ3JtbigpAq/xNiJE/5vbpkNd0a2h/aYW6S5fGsf532u9IHe4frxR3gnfYQFBd1hF2jUdzMXxaza4hErv4EFTk= Received: from DUZPR01CA0124.eurprd01.prod.exchangelabs.com (2603:10a6:10:4bc::7) by AS8PR08MB8088.eurprd08.prod.outlook.com (2603:10a6:20b:54d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.11; Tue, 7 Jul 2026 15:50:20 +0000 Received: from DB5PEPF00014B9E.eurprd02.prod.outlook.com (2603:10a6:10:4bc:cafe::9a) by DUZPR01CA0124.outlook.office365.com (2603:10a6:10:4bc::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.181.13 via Frontend Transport; Tue, 7 Jul 2026 15:50:20 +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 DB5PEPF00014B9E.mail.protection.outlook.com (10.167.8.171) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.6 via Frontend Transport; Tue, 7 Jul 2026 15:50:20 +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, 7 Jul 2026 15:50:10 +0000 Received: from PF4S4363.arm.com (10.57.40.47) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 7 Jul 2026 15:50:09 +0000 From: Matthieu Longo To: CC: Luis Machado , Luis Machado , Andrew Burgess , "Yury Khrustalev" , Pedro Alves , "Tom Tromey" , Matthieu Longo Subject: [PATCH v1 06/10] gdb/linux-tdep: migrate linux_info_proc to file_reader_t Date: Tue, 7 Jul 2026 16:48:56 +0100 Message-ID: <20260707154900.94542-7-matthieu.longo@arm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260707154900.94542-1-matthieu.longo@arm.com> References: <20260707154900.94542-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB5PEPF00014B9E:EE_|AS8PR08MB8088:EE_|AMS1EPF00000046:EE_|DU0PR08MB9324:EE_ X-MS-Office365-Filtering-Correlation-Id: 3233e087-5c92-473e-ab62-08dedc3f9991 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|82310400026|23010399003|36860700016|1800799024|376014|11063799006|3023799007|56012099006|22082099003|18002099003|8126099003|6133799003; X-Microsoft-Antispam-Message-Info-Original: 8jOuivUPG54/t/k3kscTcuBxuzYbY8j2BaJu/sd1SPnc3whOLA79ueO62neNX27RoFj1SwsioXpgi/wQzxKaXKi0bPib7vs4oAaYPMcjsc+w04fEx9GEjSC9slraK9konKs6PpmQmtl8yN0xyeYYoXaJGAPLzOFhPOeiTxLF+SW90sBgudI4SFKlHFBPJy124T3xCKHUabyC/RCM95YT8AwV9nxDYLFPGvIrYY8wHUDF3VdIr3xeppBlbKnk0yhvcgvqFlOtL3eNif/KFj1OBWROxmv7FVDI10/vIleViXzZMRKf6WIkpzamlCSVmCJ2g/2hZmqN+zOTvVLtRwG5B6868xbvijxBaswZVFjACEXPe9gI7MFPLsokLR6J4u4NPePKsK219nv6TN4xVIcngBJi1POkhmVxvoP4VsVpKlq9iZx95onZYz0csMXGuYPJpcJbg7B6EUMGn2+uMgREnhzJOAYVvBLwAp3Ar+z8qV5+Xg5ZFEXUj/IQCdalcd/A/aTTy7fv6OgQfX9/VppJi+nnoaQ8PWSCS5PKLjB42yLiUYzssaddUTzBh4cFCExwxWNclsWPqoF2ffGJeWkm1mH+bz1FDajWp24N2+5hBmRPiI83Yi9s6r7gZNwwvtYAxoNqKpcFcLURAa2bgJJSmktpEmIXC0ItMGDuu3+Z0utIHXqGSl2o9b2ATWkOXSA+tVRAiHsgrIz9GCsWnw/fDg== 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)(82310400026)(23010399003)(36860700016)(1800799024)(376014)(11063799006)(3023799007)(56012099006)(22082099003)(18002099003)(8126099003)(6133799003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: YqThh1AH5vuGg7TNzulHjCf6IOpvUwBedypPSOmVkikMFKGuy0Ug49e25TO5+n9gcz/C6K0Lh5F8CQYVezi5diiI7pNgFtubnEu/CrTX5tjnCZyo1yR0lMkX8SzoEzoG/+m+Wb0aD3Z/alssJ1sQEt0vO7jPK0tzpK1UjskRgbCTyK70ooT/nKVUe8f0CqdqojxZAI/yt8vlyRSScE/iFLYpzCIWAYABhAgqNtvuJxqJazWJ/KLNnfKxm6u93/H3yOydhwDzwCn02MjZdo+Zl63ddwPuvApI9QtC3EVLxz9L/OF6WHoYf79fZUvevY2Vsvrkffoxm1SyDKlmTEiukA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8088 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000046.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 7f1a004e-164c-4f5c-36c8-08dedc3f72ed X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700016|23010399003|35042699022|1800799024|14060799003|376014|18002099003|22082099003|11063799006|3023799007|6133799003|8126099003|56012099006; X-Microsoft-Antispam-Message-Info: UZBTmVsokvlwe2F02QJ2NjI6SdO36a849rB6F0T4t7lH+UoNbPxOEewabJEVqI5mRbGmU4jE+VlylTFd+58DnPfqxeocaHBSabicLg4EmDWBmzJVmjAcEDWQNrcVAQcCwbeyHfOADC0VMAxb9ttA2Vy873WJWBfjbjaOVfFo1hghtJc++ndT9NIZFSscBffKBnEAqb+eXNtMKem4BlnBhOcn6MTs9iSq2VQwK3PLdxhHDny1BcwsIhycZAa/3ksNIVcLmXyS/3CIm8eIzeUgReaundcrBmgIkjztclLL0bKri7iy/BkgmP4fdev94P+cdbsqXL44up0er4YY9SSoenkvvkT601JHoMHJvDkYNiiXRmek6AL8SND4VtEzqmNbFdjT3iuRd6s1o4zPr90K3TOkgP9X0zzlmMlIhGmE4UIJf/JcI54Kq0mEv8uBU1TZUYXcAU/W+dIhbFt9fENkaXcXPGfV/4gFs0DeXx/6vQgu6NQFYY4bCkxLmcVN3A1SixcrRQzCDW+Yj6A3152PyEA+x1kBocfypCs/v95ul2RbVHqqI01EyX0+pV+7Ps62PTFesTqOQBCH+7EOWQM9V+8Vy97bfWk+6TmjahgIj/3RH6LBXFDiNE0pfGEY4gQ2oV1oKU5/kbCWs9TDU4XAGEYmTKdoC/rr6uJHkLFler4q84Otb4d8FIeYO3G+O3VRGx0uu2AUv52bParIuEo3Dw== 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)(36860700016)(23010399003)(35042699022)(1800799024)(14060799003)(376014)(18002099003)(22082099003)(11063799006)(3023799007)(6133799003)(8126099003)(56012099006); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +yd9+FGb+AQEg3appffGwZ137F2KsHvEoZZ7dsIpLswDwrnb0f0Z0xQ3kIbsCwe6FRsObWDVLIPc7iQ0OTArJXgtXZviEaUOWV72iC8wPJtsEYpDlVq3Y7NX7NB3Nv1pZbCSK/0msaXc1pFMFL4RU983hRwIee17BTH18r+ja7gfh808Dbmwee5g3kA7aG3S3yzScMm5Az3xTtLBFu0VG8QBdXKz692qr1uqk50QWo+wdCYwwhzS+a6e2iif/VVHhjyjupCzFM81fxhGzEVuCQwGBwh90p+mlheWV9BQM2iwK2dn5Mg/Xmz3Jr9pFYbG7lw/kgJvc9qCixvMbVWkjqPNAZxgy2q3y1UYegY7bPHX/5snU/5VQ5ZccfcoDJkUD7JzP5QjiwP8KQWweY45ixokxw3xB1pejsI4LUkSNSDQuLdB12Dn0b7AY15zhZfB X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 15:51:24.9723 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3233e087-5c92-473e-ab62-08dedc3f9991 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: AMS1EPF00000046.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9324 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 migratse 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 | 120 +++++++++++++++++++++++++++-------------------- 1 file changed, 69 insertions(+), 51 deletions(-) diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index a12a69f03a2..a2af1586d35 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -836,6 +836,27 @@ dump_note_entry_p (filter_flags filterflags, const smaps_data &map) return true; } +/* In a character buffer where entries are separated by a SEPARATOR character, + extract the string view starting at START. + Return the extracted view and the iterator to the next entry. */ + +static std::pair, gdb::array_view::iterator> +extract_string_view_from_buffer (gdb::array_view &buffer, + gdb::array_view::iterator start, + char separator = '\0') +{ + if (start < buffer.begin () || start >= buffer.end ()) + return std::make_pair (gdb::array_view (), buffer.end ()); + + auto it = std::find (start, buffer.end (), separator); + if (it == buffer.end ()) + return std::make_pair (gdb::array_view (), buffer.end ()); + + auto next_start = std::next (it); + return std::make_pair + (gdb::array_view (start, next_start), next_start); +} + /* Implement the "info proc" command. */ static void @@ -878,25 +899,20 @@ linux_info_proc (struct gdbarch *gdbarch, const char *args, gdb_printf (_("process %d\n"), ptid.pid ()); 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); + 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::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) { @@ -910,27 +926,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) { @@ -944,10 +958,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"); @@ -961,12 +974,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); @@ -985,26 +1002,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))); @@ -1131,7 +1148,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