From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id jMxtD7sLp2nAphIAWB0awg (envelope-from ) for ; Tue, 03 Mar 2026 11:26:35 -0500 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=ryrZ23yp; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ryrZ23yp; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 1FDF81E089; Tue, 03 Mar 2026 11:26:35 -0500 (EST) 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 0995C1E089 for ; Tue, 03 Mar 2026 11:26:34 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 7C8744BA23FB for ; Tue, 3 Mar 2026 16:26:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7C8744BA23FB 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=ryrZ23yp; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=ryrZ23yp Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c20a::7]) by sourceware.org (Postfix) with ESMTPS id CB02A4BA2E0D for ; Tue, 3 Mar 2026 16:18:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CB02A4BA2E0D 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 CB02A4BA2E0D Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c20a::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1772554730; cv=pass; b=KhKjlRBV9nBKcapizjMD0uspTWyqiLof9iA8l61HgMr9KjdX2GNUDQOWectiMqT0Yq5BZTnSv/V+7TyNNLirNCt5cvPaULDWrtYMpHtsJC4LeOSF/uuGTdGgVLvGggkmiU0iFO7Eb4qmnkmLZEsg+katm1bY+K1A8PYe2CUp0Xs= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1772554730; c=relaxed/simple; bh=sErCN89E8VIO6BjIdxoYTriG98IyjjLZnQyFQnnEa70=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=d9cnEGl9GpmZ6UfmNe80DfNmTGqxLlYBVaAjT3pmRz4xlxIUgPqFWsye1UBGUdB2kvLzaoburZyMFO6JDb0vomMjLZ80bqyM/+HKEuh/737IYQjCWoKztXhKGxtnGlozrBiLk963Ve4gcN02k4nf78ifoj8cqdxuuPXhqn9wbQU= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CB02A4BA2E0D ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=kpRn5mZpE68S0PXevkhwCTFAZmdEZylMDstaBL0SJYk2bkvkmbcinKvNYhRAgrI2TxTR2+SM0dJwXZCCyw75ExAYkCu+l5I7jJZne4kNdb37pwcLw1vfgHRy/nBCkR7DhTmBxMYn3Se/806v7cFhc0jnS46ZY2HXwe2M1TKSm6r34TgJt5z56UDzQ78h1S/zxKdh0jQwhSsV/Cj/5wMKyhYkCmIgeqsdI34vQujuQTzn2cYCsN50vdlNZEQLHDbbmcNEos3Xop3WV/jWXfjKkebtogiXSy3G41hpd2b0XKl/Te7GOjLEDnHOO/RWDBNwrr1eriNN93CRtNTtB0Erxg== 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=UdwASxOX8Fy1+eik1DArATJEuKG0i3mXzsmQ4s+Yn4g=; b=xe2fnjh725gq/uyi6dUSjgBaj+L7zZxHdnT/CId4+bBcgP3qQ0YFjLe1xvlCJjOdpSxjV4DK4M/To1WkvHS1XdDISHbFdJhJUOBH0pOHfwtD8O/mZwhMDTF3pBpeJSixprMhjTaGe4NR2ViPMo5oeuzCAdujiTbbg5LBkkOaeDnv9ycYZKBhPDt2fK5Uk6fnbpPHgp8dEMH5EtDnJUuUZ7y5v8OHNOeAPY2urvBf1QNjanjDX/9WZlXFngvgYpl6rjMF5DRcxLyq5jIRmpZRcccDM/9mPz5GIvZuIUFbDs63cYJDeeSPBrN1TKpK4W3tALiFG0Zg7WEia45s+KBspA== 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=UdwASxOX8Fy1+eik1DArATJEuKG0i3mXzsmQ4s+Yn4g=; b=ryrZ23ypO07kKK54MCrkYlU/mfWvniFwBrR7GgiCPpV1K5cIVH75kbs7cmrPAkktHet3roH53pOfkVwzeJ2T2ONzxuCOA2YVEQBf+lwvO+Tezvp4m7k0+VxSxFe1Drk+CCHGhSH7fmQXVkMzzLWIRj6+jG7cgrQay6wLmN5DLsU= Received: from DU7P195CA0013.EURP195.PROD.OUTLOOK.COM (2603:10a6:10:54d::8) by AM9PR08MB5938.eurprd08.prod.outlook.com (2603:10a6:20b:2da::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.22; Tue, 3 Mar 2026 16:18:23 +0000 Received: from DB1PEPF000509F8.eurprd02.prod.outlook.com (2603:10a6:10:54d:cafe::e2) by DU7P195CA0013.outlook.office365.com (2603:10a6:10:54d::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.22 via Frontend Transport; Tue, 3 Mar 2026 16:18:23 +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 DB1PEPF000509F8.mail.protection.outlook.com (10.167.242.154) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Tue, 3 Mar 2026 16:18:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VvmNlqNWlJKuEwUStNDxLkei0QdAyi4CI7tr65MRhOy/DKD0ztpUBjXVw9CWDjuDOTQvV/paDqG+4faQh19B8bpVUNMZ8K9yVQKd3zCZ54GmHrBGIYaZjE4d+ODYZKVjsz58x0Qsosot5vy9dFtOnQYgHOQHtfs/7oKWGwk1LCJTCC8Hml+weM1ydFCB3rsYMPoITKVfmxCnaS/VAMu2LJ3rts5vele61jZS0X2WlabwellapzU7PGoYLjsdzHnnKMj86oLJzIABUPUU0F9uQq9nsH9PHgC0x5wy5mpQ3zMFKyrRukf7vP9UWsFCNkhOxlS7BMv6QtUUi+TAJBn+fA== 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=UdwASxOX8Fy1+eik1DArATJEuKG0i3mXzsmQ4s+Yn4g=; b=f8fLHjg/MlZflYGG2+s8nnjPgljU7cu0qXn7qhZfh78oBpLYizdQGtAr+om7DYgQBOJSRr1c8NAk/BOkkoQfUjUBvKOqcboVXAXm5CthCQY3czwohgMSvoiad7jeHjayTy6NgY1M0cnkvLlXBDqKhrdPZ21tGoZ+jUOxkJOSUTre3oK0lPvIT/5lHU0iqPxUWbFeESWov6wBHlxoAB97VuJ2YzksDB1zGqNs3hvCBys80sJumQYEpa8TamH+ZzZWTE5Awa0Gm6tIN73gft3PBZjuDvMWb8Ka4glIts/aOszGxIHm45jV2rP+kIubgo2U+aMzqTQjVkTk3K3yFgDO1A== 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=UdwASxOX8Fy1+eik1DArATJEuKG0i3mXzsmQ4s+Yn4g=; b=ryrZ23ypO07kKK54MCrkYlU/mfWvniFwBrR7GgiCPpV1K5cIVH75kbs7cmrPAkktHet3roH53pOfkVwzeJ2T2ONzxuCOA2YVEQBf+lwvO+Tezvp4m7k0+VxSxFe1Drk+CCHGhSH7fmQXVkMzzLWIRj6+jG7cgrQay6wLmN5DLsU= Received: from AM8P190CA0016.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:219::21) by PAWPR08MB9995.eurprd08.prod.outlook.com (2603:10a6:102:35d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.22; Tue, 3 Mar 2026 16:17:20 +0000 Received: from AM4PEPF00027A62.eurprd04.prod.outlook.com (2603:10a6:20b:219:cafe::44) by AM8P190CA0016.outlook.office365.com (2603:10a6:20b:219::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.22 via Frontend Transport; Tue, 3 Mar 2026 16:17:19 +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 AM4PEPF00027A62.mail.protection.outlook.com (10.167.16.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.16 via Frontend Transport; Tue, 3 Mar 2026 16:17:19 +0000 Received: from AZ-NEU-EXJ02.Arm.com (10.240.25.139) 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, 3 Mar 2026 16:17:16 +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, 3 Mar 2026 16:17:16 +0000 Received: from PF4S4363.arm.com (10.57.82.243) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 3 Mar 2026 16:17:16 +0000 From: Matthieu Longo To: , Tom Tromey CC: Matthieu Longo Subject: [PATCH v2 1/9] gdb: switch tuple object helpers to Python limited API equivalents Date: Tue, 3 Mar 2026 16:16:51 +0000 Message-ID: <20260303161659.397427-2-matthieu.longo@arm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260303161659.397427-1-matthieu.longo@arm.com> References: <20260303161659.397427-1-matthieu.longo@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM4PEPF00027A62:EE_|PAWPR08MB9995:EE_|DB1PEPF000509F8:EE_|AM9PR08MB5938:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a898da0-1047-497f-2723-08de79407e11 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info-Original: ldnWSrbJQMqcTbCefqmXi38H+OH/wvuEYlgwLUnzvxhzj0DVrcItf6+T5ORoEo/NAibLg6tGYqofQ7lE2x/zlc/xg+oZhFUs6k5/ny9b7slyZftzoYOs1Epd2wmi2/ovCUm6VJgj4Ktcy4KuuvzxTYJb5Vnf9ZvyVvadZXnK1E0o9DAvAfwXtLou4+Rm05Eg9His8UtpuG5+0/je0Q043jpbFk32iA08FQXsIh5nd2gyb53E3l7Ie808V5trhxBdbffCVbF+08kAcESRvV4kGlS23Z39GnRKmLFjNb7GG0OIx3QhHup8sBHNMX4YjxFcL/Ccq6Ff9PzgSYAYuHPHnWwWk6o1ptI6j99SBmzCp1DoEU/QbpYA2Zxq3qFwooUIBKwrb8JK/tpMkTLCj6RbrYxrZpCh6Z81mu7ndte8URP7dUm0jNaW+PV/4r3SV4HwDY9XUFrVy3O+1TV64l8t7PMWQONjon1YV0gTcsS2WsKh39q8bZ3HuMI8IvRXax/Kqc40k8pvITrT/aiO9RLCmXWSOmpNdCImIqyQm/sJkhw3XS0nF+s69rAksOyahikUDTXoRybpq6stSdBJgctXEWKR1CMElGj+lxqQ+eY4no1P8TH39df8yXU3aE+LnwZuhZuBNOdMBvUU0iOrMhpN6nyLyDRfpVcKJFsmHr6fvfNO3GHVe6Wu4SXOJU/KFKOQPF++ozbeXjlUGy2YVZVAYjROsTrdTRN9yXEKbxfIFkQVTiYIX/bt2er2Q0p33jBgluyrzXvoqNLgfKZhw+TozI9joYZQwFGAcMR7Erbltv8x2TzmI9N2rzDDMuZFqQYh4nImE+DEseHz4C+aHQEWZw== 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)(36860700013)(1800799024)(82310400026)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9995 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509F8.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 00681f34-cb3a-4c04-b9c3-08de794057de X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|82310400026|14060799003|35042699022|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: KUxH+tRmt2lJr3JgDqTTYnON3sT1lOgPSna6/2/JVvQP9Mf8aFhKiEbXk2+cC1HJiUv1aUPHTrOqZridrpXhtQVR5xxn5+iSKxqbo6b6gr64NYNOK+Hao5LKn7kSFQaSScIZmUA40C4GiuI99iED6VR1HlUkScI5J4FdSsx0l+Ki+NNZ00VTOfWpCx29uP4uYx9sV55p3CtpV0Pu2q9AXk/HxSO8rymW/bNqHt3daXPAhDjuoHVk7C8LZkkHj0Osg+YQU5jwOiPxNLefDxjkEx+JNSnMsH8jYe6svA0OTkXYWsfS897cy2VYBjut3DG533bOfbA2yeHh9QMhnsmrtuIbowq7D4nEVq2C9Nxmj52npm1nnlLhBpEaiwVu0SaDWTtH4WN6K3zosAOVzZB0zNpP1gE0sRyVY3vTml/b8xMyt77hCOIzdMg+7aR5dyUl6CuM3WXJ2gptkoHH7qGxv0Z4PzVEu/XN4g1nqK0ewZXOwcEam+tlb9OTjHAc8vOFUxUape+0sLOCpd9ZSC8YRyRUbsKYc9OUodIx0yRZCzlY2FJ7IMY65iLk3Kmjy6/Schc2tWvNSL4zUzuzrHgaOdp3KFXI/VMKmgjbgyhUyCbMmPaQOZhXjjITjQjnlaRUVGbPUcfklJ03PIiIMudZ0za8mdWKW3tb5vwrpQAIX9n8O481GDnnz5FhMDO5jfO61PQAKh85sreqPyri/RTmc4S4DeH1BcValqERjwTG7lhnUmQAgd1W/pVN5Vx8pnXFnJHmRYrAI3p1aYoLj8GJk9WxZUYgrdmZtK05KLOlBfRsxHVGWXw2E7oZw2pjZgnUZnvVg6WkfoEuz6ETs8XaCA== 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)(36860700013)(82310400026)(14060799003)(35042699022)(1800799024)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: A2tN8n+eUrxQ60Qijs5MVPhArkFwVQ/HvEv5S0EjsOW3qbUXy+JPidslVFDoBShi9aWQalQ3HqE/TMj/aCPGfInfY2XHmSAX4loLR3Dms699aI7uX6eeElie+FzsfENgu7CJxHVetUwWLW0Jdfa1Z7G2Ze8DapuR9IpUfyQOBdfJnNczWVlE2V/F+CbBxFdlFDovSQiy+iZhjMCKAkh9xDNzOPE44Ase7+bMtsA9aaJXte5aDtl0MPNsfxjulLTbDRo+Y9Ehfy7L3HxoxGWT7LB7wqcvZ0ftrVT88KERPsb6pGalYq+jl9hrKRyOG5WGxh1cmDWCBrAsb7E5AQ16oKj9S6YS1yntcXK1EW0aEbEzsoqbZ8eSEeLH/xmW5va93CICYY7Hc0a92IZ8wtryytidV8B5yQJuLvkvUX0sl+THkL2gi/xm/CN0SsPKWmoa X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2026 16:18:23.2523 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5a898da0-1047-497f-2723-08de79407e11 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: DB1PEPF000509F8.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB5938 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 * PyTuple_GET_ITEM -> PyTuple_GetItem * PyTuple_SET_ITEM -> PyTuple_SetItem * PyTuple_GET_SIZE -> PyTuple_Size Unlike PyTuple_SET_ITEM(), PyTuple_SetItem() returns an integer: 0 on success and -1 on error (e.g. IndexError). The existing code must therefore be updated to handle this new behaviour. Since processing now stops when PyTuple_SetItem() returns an error, some resources (such as newly allocated tuples) must be properly deallocated in error paths. To address this, this patch replaces the use of raw 'PyObject *' pointers with gdbpy_ref<>, a reference-counted wrapper around 'PyObject *', which automatically decrements the reference count on early exit. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=23830 --- gdb/python/py-color.c | 7 ++++--- gdb/python/py-function.c | 3 ++- gdb/python/py-inferior.c | 16 +++++++--------- gdb/python/py-infthread.c | 7 ++++--- gdb/python/py-symbol.c | 11 +++++++---- gdb/python/py-type.c | 5 +++-- gdb/python/py-unwind.c | 8 +++++--- gdb/python/py-xmethods.c | 24 ++++++++++++++++++------ gdb/python/python.c | 5 +++-- 9 files changed, 53 insertions(+), 33 deletions(-) diff --git a/gdb/python/py-color.c b/gdb/python/py-color.c index 0bec51b1e52..24589dba265 100644 --- a/gdb/python/py-color.c +++ b/gdb/python/py-color.c @@ -119,14 +119,15 @@ get_attr (PyObject *obj, PyObject *attr_name) return nullptr; } - PyObject *comp = PyTuple_New (3); + gdbpy_ref<> comp (PyTuple_New (3)); if (comp == nullptr) return nullptr; for (int i = 0; i < 3; ++i) - PyTuple_SET_ITEM (comp, i, rgb_objects[i].release ()); + if (PyTuple_SetItem (comp.get (), i, rgb_objects[i].release ()) < 0) + return nullptr; - return comp; + return comp.release (); } return PyObject_GenericGetAttr (obj, attr_name); diff --git a/gdb/python/py-function.c b/gdb/python/py-function.c index 3bb81527a9c..23e0be0ea43 100644 --- a/gdb/python/py-function.c +++ b/gdb/python/py-function.c @@ -48,7 +48,8 @@ convert_values_to_python (int argc, struct value **argv) gdbpy_ref<> elt = value_to_value_object (argv[i]); if (elt == NULL) return NULL; - PyTuple_SetItem (result.get (), i, elt.release ()); + if (PyTuple_SetItem (result.get (), i, elt.release ()) < 0) + return nullptr; } return result; } diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c index ab948d28ebe..ae309620e1f 100644 --- a/gdb/python/py-inferior.c +++ b/gdb/python/py-inferior.c @@ -382,7 +382,6 @@ infpy_threads (PyObject *self, PyObject *args) { int i = 0; inferior_object *inf_obj = (inferior_object *) self; - PyObject *tuple; INFPY_REQUIRE_VALID (inf_obj); @@ -395,19 +394,18 @@ infpy_threads (PyObject *self, PyObject *args) return gdbpy_handle_gdb_exception (nullptr, except); } - tuple = PyTuple_New (inf_obj->threads->size ()); - if (!tuple) - return NULL; + gdbpy_ref<> tuple (PyTuple_New (inf_obj->threads->size ())); + if (tuple == nullptr) + return nullptr; for (const thread_map_t::value_type &entry : *inf_obj->threads) { - PyObject *thr = (PyObject *) entry.second.get (); - Py_INCREF (thr); - PyTuple_SET_ITEM (tuple, i, thr); - i = i + 1; + auto thr = gdbpy_ref<>::new_reference ((PyObject *) entry.second.get ()); + if (PyTuple_SetItem (tuple.get (), i++, thr.release ()) < 0) + return nullptr; } - return tuple; + return tuple.release (); } static PyObject * diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c index d75742360d4..652355990ee 100644 --- a/gdb/python/py-infthread.c +++ b/gdb/python/py-infthread.c @@ -384,9 +384,10 @@ gdbpy_create_ptid_object (ptid_t ptid) return nullptr; /* Note that these steal references, hence the use of 'release'. */ - PyTuple_SET_ITEM (ret.get (), 0, pid_obj.release ()); - PyTuple_SET_ITEM (ret.get (), 1, lwp_obj.release ()); - PyTuple_SET_ITEM (ret.get (), 2, tid_obj.release ()); + if (PyTuple_SetItem (ret.get (), 0, pid_obj.release ()) < 0 + || PyTuple_SetItem (ret.get (), 1, lwp_obj.release ()) < 0 + || PyTuple_SetItem (ret.get (), 2, tid_obj.release ()) < 0) + return nullptr; return ret; } diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c index 15fcbeea9be..fe4d6dac000 100644 --- a/gdb/python/py-symbol.c +++ b/gdb/python/py-symbol.c @@ -402,7 +402,7 @@ gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw) const char *name; static const char *keywords[] = { "name", "block", "domain", NULL }; struct symbol *symbol = NULL; - PyObject *block_obj = NULL, *bool_obj; + PyObject *block_obj = NULL; const struct block *block = NULL; if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!i", keywords, &name, @@ -450,10 +450,13 @@ gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw) } else sym_obj = gdbpy_ref<>::new_reference (Py_None); - PyTuple_SET_ITEM (ret_tuple.get (), 0, sym_obj.release ()); - bool_obj = PyBool_FromLong (is_a_field_of_this.type != NULL); - PyTuple_SET_ITEM (ret_tuple.get (), 1, bool_obj); + if (PyTuple_SetItem (ret_tuple.get (), 0, sym_obj.release ()) < 0) + return nullptr; + + gdbpy_ref<> bool_obj (PyBool_FromLong (is_a_field_of_this.type != NULL)); + if (PyTuple_SetItem (ret_tuple.get (), 1, bool_obj.release ()) < 0) + return nullptr; return ret_tuple.release (); } diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c index b6807801f7e..7ba77ad1d4a 100644 --- a/gdb/python/py-type.c +++ b/gdb/python/py-type.c @@ -249,8 +249,9 @@ make_fielditem (struct type *type, int i, enum gdbpy_iter_kind kind) gdbpy_ref<> item (PyTuple_New (2)); if (item == NULL) return NULL; - PyTuple_SET_ITEM (item.get (), 0, key.release ()); - PyTuple_SET_ITEM (item.get (), 1, value.release ()); + if (PyTuple_SetItem (item.get (), 0, key.release ()) < 0 + || PyTuple_SetItem (item.get (), 1, value.release ()) < 0) + return nullptr; return item; } case iter_keys: diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c index 09af3e7ca2c..9ffa382d093 100644 --- a/gdb/python/py-unwind.c +++ b/gdb/python/py-unwind.c @@ -899,11 +899,12 @@ frame_unwind_python::sniff (const frame_info_ptr &this_frame, /* Verify the return value of _execute_unwinders is a tuple of size 2. */ gdb_assert (PyTuple_Check (pyo_execute_ret.get ())); - gdb_assert (PyTuple_GET_SIZE (pyo_execute_ret.get ()) == 2); + gdb_assert (PyTuple_Size (pyo_execute_ret.get ()) == 2); if (pyuw_debug) { - PyObject *pyo_unwinder_name = PyTuple_GET_ITEM (pyo_execute_ret.get (), 1); + PyObject *pyo_unwinder_name = PyTuple_GetItem (pyo_execute_ret.get (), 1); + gdb_assert (pyo_unwinder_name != nullptr); gdb::unique_xmalloc_ptr name = python_string_to_host_string (pyo_unwinder_name); @@ -919,7 +920,8 @@ frame_unwind_python::sniff (const frame_info_ptr &this_frame, } /* Received UnwindInfo, cache data. */ - PyObject *pyo_unwind_info = PyTuple_GET_ITEM (pyo_execute_ret.get (), 0); + PyObject *pyo_unwind_info = PyTuple_GetItem (pyo_execute_ret.get (), 0); + gdb_assert (pyo_unwind_info != nullptr); if (!PyObject_TypeCheck (pyo_unwind_info, &unwind_info_object_type)) error (_("an Unwinder should return gdb.UnwindInfo, not %s."), Py_TYPE (pyo_unwind_info)->tp_name); diff --git a/gdb/python/py-xmethods.c b/gdb/python/py-xmethods.c index 1fafafb4d24..24c8f48e1bd 100644 --- a/gdb/python/py-xmethods.c +++ b/gdb/python/py-xmethods.c @@ -458,9 +458,13 @@ python_xmethod_worker::do_get_result_type (value *obj, return EXT_LANG_RC_ERROR; } - /* PyTuple_SET_ITEM steals the reference of the element, hence the + /* PyTuple_SetItem steals the reference of the element, hence the release. */ - PyTuple_SET_ITEM (py_arg_tuple.get (), 0, py_value_obj.release ()); + if (PyTuple_SetItem (py_arg_tuple.get (), 0, py_value_obj.release ()) < 0) + { + gdbpy_print_stack (); + return EXT_LANG_RC_ERROR; + } for (i = 0; i < args.size (); i++) { @@ -471,7 +475,12 @@ python_xmethod_worker::do_get_result_type (value *obj, gdbpy_print_stack (); return EXT_LANG_RC_ERROR; } - PyTuple_SET_ITEM (py_arg_tuple.get (), i + 1, py_value_arg.release ()); + if (PyTuple_SetItem (py_arg_tuple.get (), i + 1, + py_value_arg.release ()) < 0) + { + gdbpy_print_stack (); + return EXT_LANG_RC_ERROR; + } } gdbpy_ref<> py_result_type @@ -543,9 +552,10 @@ python_xmethod_worker::invoke (struct value *obj, error (_("Error while executing Python code.")); } - /* PyTuple_SET_ITEM steals the reference of the element, hence the + /* PyTuple_SetItem steals the reference of the element, hence the release. */ - PyTuple_SET_ITEM (py_arg_tuple.get (), 0, py_value_obj.release ()); + if (PyTuple_SetItem (py_arg_tuple.get (), 0, py_value_obj.release ()) < 0) + return nullptr; for (i = 0; i < args.size (); i++) { @@ -557,7 +567,9 @@ python_xmethod_worker::invoke (struct value *obj, error (_("Error while executing Python code.")); } - PyTuple_SET_ITEM (py_arg_tuple.get (), i + 1, py_value_arg.release ()); + if (PyTuple_SetItem (py_arg_tuple.get (), i + 1, + py_value_arg.release ()) < 0) + return nullptr; } gdbpy_ref<> py_result (PyObject_CallObject (m_py_worker, diff --git a/gdb/python/python.c b/gdb/python/python.c index 8739864a861..5474b8d644f 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -1043,8 +1043,9 @@ gdbpy_decode_line (PyObject *self, PyObject *args) else unparsed = gdbpy_ref<>::new_reference (Py_None); - PyTuple_SetItem (return_result.get (), 0, unparsed.release ()); - PyTuple_SetItem (return_result.get (), 1, result.release ()); + if (PyTuple_SetItem (return_result.get (), 0, unparsed.release ()) < 0 + || PyTuple_SetItem (return_result.get (), 1, result.release ()) < 0) + return nullptr; return return_result.release (); } -- 2.53.0