From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 0SzZAVuF12muzg4AWB0awg (envelope-from ) for ; Thu, 09 Apr 2026 06:54:19 -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=lgblbF8f; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=lgblbF8f; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id F047C1E0BC; Thu, 09 Apr 2026 06:54:18 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.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,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED 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 128311E08C for ; Thu, 09 Apr 2026 06:54:18 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 9F2D84BA2E10 for ; Thu, 9 Apr 2026 10:54:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9F2D84BA2E10 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=lgblbF8f; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=lgblbF8f Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11013062.outbound.protection.outlook.com [52.101.72.62]) by sourceware.org (Postfix) with ESMTPS id 74B474BA2E35 for ; Thu, 9 Apr 2026 10:53:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 74B474BA2E35 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 74B474BA2E35 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=52.101.72.62 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1775732026; cv=pass; b=CfQeTN/6mKzz2/7va4NMv+2vWOTh8T0jJoYXi31cuOeXWbAsVrcw/Rt4rdpshThYjU6iYc8CUYSR+d7qsxwAomdCNftBnVOcauUnhTWtyumSYvRhDegkIeS9LY6FaD1GxvoSIE00APFy3cjeqMTF1bLLKTkH5nRICdWhjrfNsn8= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1775732026; c=relaxed/simple; bh=+HX2oD3qsLcJr+C4fJ/WUZVxNGpqbxfiePTPilyvaJI=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=eVii+zLmRvLqVAtMCMbUd3x8hg45A2V+E37boDajrdPi5Ccoo0ivrCbqoKDV0gmIS3dz7lByzfUrW4ChosfMhE5TcBI5WfotVDCnU2Oq/2c8lcY1vOLCQStE+pHOVn2dmgY9ShFthjqNLHmYHXjD82fufIOJWDorxSUZ0pwk3m0= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 74B474BA2E35 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=AnCkwAAkcIZa5cAmngcQtye4QtdiBCAZpyp0zj4SEXG3q3Lz9kC/3mNin5v5mb78uBvYF+L3fiS+Ogf3TxWZRyeHd45edqc3K7i4oY2PXKvOIkdik7w/u6AKFVIndMix4iL8s3jWGpaAItNB2gzJNrDA1ToBjlQYqzO1QjXOQk0GlliVQkxydtYyz/PCaHTF6beASuBrATzLRqUQX0aKZGLvOKmaoe7Kt6cTLoHLmRxBhwyTbh6OpovfvVuOw4g4f+QOH/6xCm/+Ao3MLzSIBjK8r1uJrPDCDo+ZN5Ur8sQNp6GVVyY1bSqVVzsSoEYPY0MrsXYYo9yn24id57wJzw== 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=jNvxFv2r7Pl/nm4a7AVooEZPLJQNblmTTAAbjjPLptc=; b=p9uV71LiR9934GnmcYRsbRESKG7xwgMucN7EUxx59elBICe3LSd5+4f4wQdqewl6KxnDxDfph6/TmbGOkSekSHLIv64DwxrxD35BjZnlsY/0E1tvnbsua5iW990A/moJS1nVhAgBZhsGnhU0S3UD/kUbQUsWKaErk5kaZqZAmqtumCM4mfY24zQaXINAPLbmq60T3TzUKnlFvWk8a5l9l3sd7lSNs2+zM9ujd7KDlr2RLTxgTYYNxum8GihgFxVhrd0Z1Iko9LEkv7U90Z7ZbwkGsPVtrAD7rZTW+R+i6gq3o/wGNTHSh11UmOPzgAOcNbSfNn9fmNRzLUMwNZyvbQ== 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=jNvxFv2r7Pl/nm4a7AVooEZPLJQNblmTTAAbjjPLptc=; b=lgblbF8fUZpTykrhMQoobc8wgv66MTDCDdYTsgsi4NEq132K54/MIiwriKLpg58C/LHBl+28g6TlAfDbYBbItySUADEbQ3MUtjvNgduw3CrKyCXZZ8JvF++OVkgRNDmMh0bAWA7AP68OcOuONvuZd3/DxedAv9Tnz4nBZdpjUDE= Received: from DU2PR04CA0050.eurprd04.prod.outlook.com (2603:10a6:10:234::25) by PAWPR08MB10057.eurprd08.prod.outlook.com (2603:10a6:102:359::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr 2026 10:53:29 +0000 Received: from DU2PEPF0001E9C5.eurprd03.prod.outlook.com (2603:10a6:10:234:cafe::73) by DU2PR04CA0050.outlook.office365.com (2603:10a6:10:234::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.35 via Frontend Transport; Thu, 9 Apr 2026 10:53:29 +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 DU2PEPF0001E9C5.mail.protection.outlook.com (10.167.8.74) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21 via Frontend Transport; Thu, 9 Apr 2026 10:53:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MFetGWCRpG1h+h3id3ZwYZZ6ajYLCprRGixZPyW00A9YdMPExOPKR2x6Q9oRThDu91ddeGSSFs9JVvhYG6f4KCwyZbPgKinb0vqFqEVgH4s/K8cZF5cprbKHnMISl+T+wrfVQqBQ7JEQhxub2LaKTjw41MXCLdLJcxKzHMLIGrXJUgYHtURRf/gNkxyUTU2FQnXC4flpjUlTZuFqBQ3uPDnAVtD0mU6N+D96ZpzcqpJh0EpY7Wi4o0bWwOiSLI8KOSKs92HGaLspuJ9vpsobElSF5MfptIs1blv6gRBLBrlFEprgwd97ozjHjPL5KGPZIVBEko8KznpGBaZ9VhCRTQ== 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=jNvxFv2r7Pl/nm4a7AVooEZPLJQNblmTTAAbjjPLptc=; b=d+3MnDtyrsX/PUbKGnuD/5soaaXdMuY9E05/Bn7tkRQR1fPWZkPRxetyIufdF5fskV7kFLcB5wmlRvShsrw7XBb5Y4nlgSMRJJjbj8JUWDERXY0sY9KCmMxSysrNgH/4fwnj98H/XImWr2Derc9LvqF77rtbf2rG8HEWuzdfAycyzfy9pOk1dkFlE6CCgYMy03d5dpFr945b9APesCpXm61RMXoXLn6c73mO+z9k1qt7ZQwsclGna/cH4Ksz5Q0d5YEamo3cZF84IjRwiGpJhE4QfueIGxCuexfJZEjG2eaxbZK65wAK9ROBntfynQRBcP+zMGxPy3fF2B+1PEYd2Q== 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=jNvxFv2r7Pl/nm4a7AVooEZPLJQNblmTTAAbjjPLptc=; b=lgblbF8fUZpTykrhMQoobc8wgv66MTDCDdYTsgsi4NEq132K54/MIiwriKLpg58C/LHBl+28g6TlAfDbYBbItySUADEbQ3MUtjvNgduw3CrKyCXZZ8JvF++OVkgRNDmMh0bAWA7AP68OcOuONvuZd3/DxedAv9Tnz4nBZdpjUDE= Received: from DU7P190CA0005.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:550::22) by AS4PR08MB7655.eurprd08.prod.outlook.com (2603:10a6:20b:4f1::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.18; Thu, 9 Apr 2026 10:52:24 +0000 Received: from DB1PEPF000509FA.eurprd03.prod.outlook.com (2603:10a6:10:550:cafe::b) by DU7P190CA0005.outlook.office365.com (2603:10a6:10:550::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.37 via Frontend Transport; Thu, 9 Apr 2026 10:52:24 +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 DB1PEPF000509FA.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17 via Frontend Transport; Thu, 9 Apr 2026 10:52:24 +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; Thu, 9 Apr 2026 10:52:19 +0000 Received: from PF4S4363.arm.com (10.1.34.63) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Thu, 9 Apr 2026 10:52:19 +0000 From: Matthieu Longo To: , Tom Tromey CC: Matthieu Longo Subject: [PATCH v1 2/4] gdb/python: eval_python_command returns both exit code and result Date: Thu, 9 Apr 2026 11:51:53 +0100 Message-ID: <20260409105155.1416274-3-matthieu.longo@arm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260409105155.1416274-1-matthieu.longo@arm.com> References: <20260409105155.1416274-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB1PEPF000509FA:EE_|AS4PR08MB7655:EE_|DU2PEPF0001E9C5:EE_|PAWPR08MB10057:EE_ X-MS-Office365-Filtering-Correlation-Id: 770ba80e-fbf8-4b5b-6b65-08de96263bad 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|376014|1800799024|36860700016|13003099007|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info-Original: /y32mibZzS3lkNciYAa+dCUf3sJKMmISF6LHIFs8sWG0nQXN4bpMUGCESoPNHRj0snUrwIzQgkb0r6EweOO6574D5Ih8nsTTersfY1n4pDstcxJOxaDibMB2fF2IuD1ju+ck64AHZe/aoIFhcKWXj6XlUiMg1U8Kph+Ky7ywmVbSiDRkDM0xXoN/WvtAK7HaCjvwai300lhvDEU3t8O3ivU6YYRXo483iIMswk7kgxEOUZ3E9lSXVWTzqcOjuAXhYDoIfrAELKeOsBVXFZar6OjF4EUTG5kwJLov52HQ3UjBAh+NHKBBEYGwdfcPkBlVYwCgpsWtxpD6CMBtKCijIuj96rDzY8vULJubYrxp4HQkxlkQrJFE+aD8i0PTP/WPKr7i/0ThzsiTnbUooyEGK2oG6ikFAz1MtucTLt3mVp4Yoti20xoGd3td47E+O1kmu2Bjwfsc4TFl7HfJe8ilcV91hZczjTpj5O/VQmMuSZwxw4lubERMHhgO2mM2O/Ldfx5yewfcfZC6oZla21JXAkjp/v4gFJIVnawawp6RJ4jdxpLDJZcAYiiJEfAoTIvaek9KEazW4DoevGkbKjeLQcXqoszZ0D3kNtDKCMclmlLodLHlHT92bEC0NALgfKQgmO69UfROkYSmjglVVmyhl+CPtNwLLkjJzcvSDJ3jIWYipOqyekojh9o2lh7BZP95Y7IeW/T1KZBhiim4hy/dIAnAjTk3IrdyufPapSg3QS9nkTjVwVG3yHbrtwel+ylfelf14liojZILarHBxVnRvQ== 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)(376014)(1800799024)(36860700016)(13003099007)(18002099003)(22082099003)(56012099003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: s6z5NVyF36a/rZAzMsDjt/i2QSBTJEoPWLtk/iwODEpPwflC+51RyAAE6FsB92MtK0QHo5P3w2A5taglzLUxgcQfe7EKQJYl0dwBo2I/leDR//tDAFKIGymPKrknZMmYM+lybV/crMErHLW6ZBPehacWfrsLyJ4HlFt4YYDf5gZCtY4gDYpG7C/kiv0hEAHPZei8X4Afll9GilemLCu5hLQrPPptKsl6A2444A5gwvXwDSlTyx1cJ+f+peJI/LDwHhN6GgJJN1VonXe74H2bdSZ1+h7S888vtjoIqgS9SsCuU1yQRfP22O/jcy/j47Lf6BJW1MmQfvroTiMY61QnDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7655 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF0001E9C5.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: da979f3a-1403-40e1-192a-08de96261548 X-Microsoft-Antispam: BCL:0; ARA:13230040|14060799003|82310400026|1800799024|376014|36860700016|35042699022|13003099007|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: oab+UM7EGjfnWOMfkTtc97VkVvRbvKD8hblkwkk6RC+a1uXg7oMFqtWz5PPluu0EU1m8SHIyzOpdg9OAsRQZTE3yt6s7squvQ2yJ4wNKkQMug3x1eBpHumC8gi+z7IQpeQ+xzsLCk9DqKI0iQW0XnxpR5oEhxrrXIcsdqznshSGcWCcU4b0I1tL/Xm0SurAV9lf6W3qkdZs0k+H5EXttiICJL1yhdTdqT3vY5XiUofLudHMu4aBqGic02FHN4K2BjXNhRbEvi2Ju+N7HfFhOhutqj/OBsZxFVdph/1CGNvGhnqEaHFe1fRtsqCMuRAr6Poe5Ajv7Ga1Mx8hVHKQkJ/+etzQK6Eao0ebCGGsI0X8MLQcmtnMpw0d9lAAh7L9VmP0bATa0TCFGanTI4ydPWFUr8i0cFpk7cTHaBDJq2dlRMK0wMBvFpMzRSrv51N0qbDKNP7Z4exh40nWiuzHxr8I9uSY+9ByhR5rfQAyge4w234ITFdh5AlMAdKkcFp/4G02JRaWn7rr5Fd2zy8WJsd6lEi5tOCnbvCUx/N05FQKQlP8QxK58IKjZs6qBqip9Jg7nuOdbNw64Dwb0wPBA5dpZpqkOSfNNqfdAxFqp+WHqdZfZhdAzyBiX/EoyuLh2zs05yTtLPUBm7Z0ituSTt2IJSF1qgtBuR/MQw/4mQS6h2fR3468s7xJXzYNTmUDcXEXt7ALh/4Vnx3b6+MDjhqwPEkCiwDxEONPqf5cUV59mXNr++0GlVJKsCDN2+SduiyidDsfRZLR2bYoCavvmyg== 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)(14060799003)(82310400026)(1800799024)(376014)(36860700016)(35042699022)(13003099007)(56012099003)(22082099003)(18002099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: e3jEQiJZNoU5/v4jrd1pKiCHD1GuZrifFdN37ySl27yiF27BWeRp1T7eHgWtaQSqb7utvKrESU3Qvv7yTkpMtiCFTSomMXc1SSGIiqzaX9iL+nR9ZGL9FIsqydDIJy6U56BbtMQu57acvTiYVcXKJ9kP/eiNDjGwC/C6nq8VL1DBj1/FoxfBQb/ViGZHjZQ0yZuz0ZMjWRGctrQoke9O/EV5sbsbMmpmAO4bgyy6e2o0jNta1NpESc/eJoYkc+e5/D7PRpiLIWYPGT8OJYXu0ceXuTmLpmmkHzlrYdsT63j08EA9o8Rwg/3X5vsVPhN8nDqB4clfBU+H5SbEVIWSdB/lHryMuGZBYXwRGFz/L1WDiDHbE+D8pNX1gp5OVeeiY7u3uQ8/rvNKtbjM7GGgPxYygXprec4l+ErSnXt8Aa0hf+KrenHkH4TyU7RyCaMq X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2026 10:53:28.6682 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 770ba80e-fbf8-4b5b-6b65-08de96263bad 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: DU2PEPF0001E9C5.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10057 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 A previous commit [1] centralized the Python code evaluation in the helper function eval_python_command(). However, a missed case in varobj_set_visualizer() requires both the exit code and the result of the evaluation. This patch updates eval_python_command() to return both values and adjusts existing callers accordingly. It also replaces the use of PyRun_String() in varobj_set_visualizer() with a call to eval_python_command(). [1]: 264a8a2236e8aa64b333a69e42a55ff8c0844f6e Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23830 --- gdb/python/py-gdb-readline.c | 3 +- gdb/python/python-internal.h | 4 +-- gdb/python/python.c | 54 +++++++++++++++++++----------------- gdb/varobj.c | 12 ++------ 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/gdb/python/py-gdb-readline.c b/gdb/python/py-gdb-readline.c index e8e2c23547c..eedeb659c18 100644 --- a/gdb/python/py-gdb-readline.c +++ b/gdb/python/py-gdb-readline.c @@ -114,7 +114,8 @@ class GdbRemoveReadlineFinder(MetaPathFinder):\n\ \n\ sys.meta_path.insert(2, GdbRemoveReadlineFinder())\n\ "; - if (eval_python_command (code, Py_file_input) == 0) + auto [ret, _] = eval_python_command (code, Py_file_input); + if (ret == 0) PyOS_ReadlineFunctionPointer = gdbpy_readline_wrapper; return 0; diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h index 37bc37691fe..ca70ca57fd2 100644 --- a/gdb/python/python-internal.h +++ b/gdb/python/python-internal.h @@ -1337,7 +1337,7 @@ class gdbpy_memoizing_registry_storage gdb::unordered_map m_objects; }; -extern int eval_python_command (const char *command, int start_symbol, - const char *filename = nullptr); +extern std::pair> eval_python_command + (const char *command, int start_symbol, const char *filename = nullptr); #endif /* GDB_PYTHON_PYTHON_INTERNAL_H */ diff --git a/gdb/python/python.c b/gdb/python/python.c index 4182c699cb5..85bd88cd243 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -299,42 +299,40 @@ gdbpy_check_quit_flag (const struct extension_language_defn *extlang) NULL means that this is evaluating a string, not the contents of a file. */ -int +std::pair> eval_python_command (const char *command, int start_symbol, const char *filename) { - PyObject *m, *d; - - m = PyImport_AddModule ("__main__"); - if (m == NULL) - return -1; + gdbpy_borrowed_ref<> mainmod = PyImport_AddModule ("__main__"); + if (mainmod == nullptr) + return std::make_pair(-1, nullptr); - d = PyModule_GetDict (m); - if (d == NULL) - return -1; + gdbpy_borrowed_ref<> globals = PyModule_GetDict (mainmod); + if (globals == nullptr) + return std::make_pair(-1, nullptr); bool file_set = false; if (filename != nullptr) { gdbpy_ref<> file = host_string_to_python_string ("__file__"); if (file == nullptr) - return -1; + return std::make_pair(-1, nullptr); /* PyDict_GetItemWithError returns a borrowed reference. */ - PyObject *found = PyDict_GetItemWithError (d, file.get ()); + PyObject *found = PyDict_GetItemWithError (globals, file.get ()); if (found == nullptr) { if (PyErr_Occurred ()) - return -1; + return std::make_pair(-1, nullptr); gdbpy_ref<> filename_obj = host_string_to_python_string (filename); if (filename_obj == nullptr) - return -1; + return std::make_pair(-1, nullptr); - if (PyDict_SetItem (d, file.get (), filename_obj.get ()) < 0) - return -1; - if (PyDict_SetItemString (d, "__cached__", Py_None) < 0) - return -1; + if (PyDict_SetItem (globals, file.get (), filename_obj.get ()) < 0) + return std::make_pair(-1, nullptr); + if (PyDict_SetItemString (globals, "__cached__", Py_None) < 0) + return std::make_pair(-1, nullptr); file_set = true; } @@ -348,9 +346,10 @@ eval_python_command (const char *command, int start_symbol, start_symbol)); int result = -1; + gdbpy_ref<> eval_result; if (code != nullptr) { - gdbpy_ref<> eval_result (PyEval_EvalCode (code.get (), d, d)); + eval_result.reset (PyEval_EvalCode (code.get (), globals, globals)); if (eval_result != nullptr) result = 0; } @@ -365,16 +364,16 @@ eval_python_command (const char *command, int start_symbol, /* CPython also just ignores errors here. These should be expected to be exceedingly rare anyway. */ - if (PyDict_DelItemString (d, "__file__") < 0) + if (PyDict_DelItemString (globals, "__file__") < 0) PyErr_Clear (); - if (PyDict_DelItemString (d, "__cached__") < 0) + if (PyDict_DelItemString (globals, "__cached__") < 0) PyErr_Clear (); if (save_error.has_value ()) save_error->restore (); } - return result; + return std::make_pair(result, eval_result); } /* Implementation of the gdb "python-interactive" command. */ @@ -395,7 +394,8 @@ python_interactive_command (const char *arg, int from_tty) { std::string script = std::string (arg) + "\n"; /* Py_single_input causes the result to be displayed. */ - err = eval_python_command (script.c_str (), Py_single_input); + std::tie (err, std::ignore) + = eval_python_command (script.c_str (), Py_single_input); } else { @@ -424,7 +424,9 @@ static int python_run_simple_file (FILE *file, const char *filename) { std::string contents = read_remainder_of_file (file); - return eval_python_command (contents.c_str (), Py_file_input, filename); + auto [ret, _] + = eval_python_command (contents.c_str (), Py_file_input, filename); + return ret; } /* Given a command_line, return a command string suitable for passing @@ -457,7 +459,7 @@ gdbpy_eval_from_control_command (const struct extension_language_defn *extlang, gdbpy_enter enter_py; std::string script = compute_python_string (cmd->body_list_0.get ()); - int ret = eval_python_command (script.c_str (), Py_file_input); + auto [ret, _] = eval_python_command (script.c_str (), Py_file_input); if (ret != 0) gdbpy_handle_exception (); } @@ -474,7 +476,7 @@ python_command (const char *arg, int from_tty) arg = skip_spaces (arg); if (arg && *arg) { - int ret = eval_python_command (arg, Py_file_input); + auto [ret, _] = eval_python_command (arg, Py_file_input); if (ret != 0) gdbpy_handle_exception (); } @@ -1848,7 +1850,7 @@ gdbpy_execute_objfile_script (const struct extension_language_defn *extlang, scoped_restore restire_current_objfile = make_scoped_restore (&gdbpy_current_objfile, objfile); - int ret = eval_python_command (script, Py_file_input); + auto [ret, _] = eval_python_command (script, Py_file_input); if (ret != 0) gdbpy_print_stack (); } diff --git a/gdb/varobj.c b/gdb/varobj.c index edd94ea4963..b20fc78eb28 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -1365,20 +1365,14 @@ void varobj_set_visualizer (struct varobj *var, const char *visualizer) { #if HAVE_PYTHON - PyObject *mainmod; - if (!gdb_python_initialized) return; gdbpy_enter_varobj enter_py (var); - mainmod = PyImport_AddModule ("__main__"); - gdbpy_ref<> globals - = gdbpy_ref<>::new_reference (PyModule_GetDict (mainmod)); - gdbpy_ref<> constructor (PyRun_String (visualizer, Py_eval_input, - globals.get (), globals.get ())); - - if (constructor == NULL) + auto [ret_code, constructor] + = eval_python_command (visualizer, Py_eval_input); + if (ret_code != 0 || constructor == nullptr) { gdbpy_print_stack (); error (_("Could not evaluate visualizer expression: %s"), visualizer); -- 2.53.0