From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id MFJCMch8WWgt1hoAWB0awg (envelope-from ) for ; Mon, 23 Jun 2025 12:11:52 -0400 Received: by simark.ca (Postfix, from userid 112) id BFDF71E11C; Mon, 23 Jun 2025 12:11:52 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.0 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 4C19C1E0C2 for ; Mon, 23 Jun 2025 12:11:51 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E225F3846735 for ; Mon, 23 Jun 2025 16:11:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E225F3846735 Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.129.114]) by sourceware.org (Postfix) with ESMTP id D7F953846704 for ; Mon, 23 Jun 2025 16:10:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D7F953846704 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D7F953846704 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750695046; cv=none; b=LXYK/7kHfPQOtW7FeJfZYHJBlPNR8/A38mBp89v1KMzL8tZfGJhX7Zee1s10DSqZURjUYq1G2ZgHDNVyENXHQ+R7lXbQGQgg3jG80Tm10HII2xgdKuao+5fzmUZlhXK4Ow011uEbPtvLO3NvNxlAIPakACIH1blJDyuauwNfHys= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750695046; c=relaxed/simple; bh=Y7WAtDXDiVvjkmmtLJvKcPBtWUJ9dcQ5A5FELClqGxw=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=rz8Of6pPtLSa8g45UrKV3/g64NsyXkaa1e+FC8wavzrJ1sWe+/97MVBS0MWdtHNfGXXwOpelWGb+0dCsULNRVKtGi9FrjDzlMnmlRuZg2EOWJ9Hqaby2saP0j8aeFh74z2Zl/qC7TAo7HhqkJnY5Pyz7Fs8YJyLIouyd7Nj2Jgw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D7F953846704 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2131.outbound.protection.outlook.com [40.107.243.131]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-435-2VuQEPpnOymUnHpvRNeoNQ-1; Mon, 23 Jun 2025 12:10:45 -0400 X-MC-Unique: 2VuQEPpnOymUnHpvRNeoNQ-1 X-Mimecast-MFC-AGG-ID: 2VuQEPpnOymUnHpvRNeoNQ_1750695044 Received: from SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) by PH0PR17MB4637.namprd17.prod.outlook.com (2603:10b6:510:81::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.29; Mon, 23 Jun 2025 16:10:43 +0000 Received: from SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d]) by SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d%5]) with mapi id 15.20.8857.026; Mon, 23 Jun 2025 16:10:43 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany Subject: [RFC v5 04/18] gdb: introduce new function create_function_type Date: Mon, 23 Jun 2025 17:09:59 +0100 Message-ID: <20250623161013.650814-5-jan.vrany@labware.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250623161013.650814-1-jan.vrany@labware.com> References: <20250623161013.650814-1-jan.vrany@labware.com> X-ClientProxiedBy: LO4P265CA0005.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ad::17) To SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR17MB5365:EE_|PH0PR17MB4637:EE_ X-MS-Office365-Filtering-Correlation-Id: b50a567b-560a-4b70-f0a7-08ddb2708163 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024 X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Gv/AkC8NOui7AW4ymlIbQaBh0fbvm94IT3XKp+mggrSDAZ6iU2ShCpsSWCin?= =?us-ascii?Q?r4YLnp7VjWOif7jybYzvA9MOjD8SHKAVXM7xg6qR0k/QC1zHEtAEOsifsQRp?= =?us-ascii?Q?Oqrtf1dFBy5axMVVNLqQAx43it24Tz1d3Exfu2Hp20jEbr2HtbLxK2/Wddhw?= =?us-ascii?Q?SyLfkHmDIkOhn8EZHLZMqbXID2d8mkNGb154oSLaeTkGorcrca8IPd4DAwnY?= =?us-ascii?Q?BLlQ68poUiTWdp2EPRwhSY3pVaDw9gscvyBrwFX6u1eobREnOdc1fotjnz2t?= =?us-ascii?Q?dmth86kwKj2ZDF1siGUvsmmFN1rsGFGWdkdfs8JR7APhAn7N9wvvjKKt1Z//?= =?us-ascii?Q?/+JR/2cIzcR+WblG4PzFsnYZsGLGf4f4/pYD07ct+94+wfFZyxYgtoweSt4u?= =?us-ascii?Q?K5aiymYxeos2TaXVk2O37x8+8gFbUdVxfd3WgHjTTrXjqLdK3MM1NpKekERB?= =?us-ascii?Q?HchsHj8v8VUbcXRzagpdk7hFscUwhGnE7/haLOaWw4FMpCDjIZJeZH7EDd4w?= =?us-ascii?Q?S23R0qC92BO+xhf4ondFu0TRi+7xrCSz//6wd25VbnwSl7TkYHtVfDOuiWmK?= =?us-ascii?Q?8X2eZiqzQRLC4TiqHXuRy+By08iXpn1C0oY4v95zgXHuKJeho9O26m9nY0RY?= =?us-ascii?Q?rV0FFd+WgmRwfoKxuORPZ2zsgpLXnlmjeTTwE7zwyskyiAa3QAoGu8R8hAD7?= =?us-ascii?Q?gKMTQyi7dNsmwJvoUXXFcuO//7OSnqnYl5HzFFhVpCwYP+MTMY/RGqyDgiJg?= =?us-ascii?Q?1KjPNQFjpPgrrv1YW/zXdoq8Dkyw0uhEUjFdLYaXJwCg3wb1zAURA+7RYx72?= =?us-ascii?Q?GHV2gbaVcHGIYRnpqdQGGgo70SBQNqWdgUMk9NtNCW0dl2nWZ2lP5kTjYd/9?= =?us-ascii?Q?kU0Sf++6SZJaoL6ZpNIqbokYiR1ihMLSW6zekERkXOf9X1VCm51cpZiLDQVT?= =?us-ascii?Q?x1In6Ya5CylZDHPo8iCXZI7iCjkY4JjYK0eM8o3ZqV69zij28G0xmBg2Jx6Y?= =?us-ascii?Q?Ol4GeeCIiTSNxD9hCx46pHK74Me1PzEGSE80bmp4BZgBwKyu9yuNd3izuTZ/?= =?us-ascii?Q?VDvkdJ4gG7uYMJ1Q8bOvUx8Op7A8xQ73/nahLlgZ1k7uN4mG5UcfLTBq3ZlY?= =?us-ascii?Q?S0iO70D1l6FhqKIF6K2/IXzjuBCY2JXX0Bt8yJCx1KZt9PyhearTEShI+M8g?= =?us-ascii?Q?m7rtV7g0vozbnOPmeSy613TF8AvpU4eCJndKuR1zAPPjOju+hQe0xQm7lkGM?= =?us-ascii?Q?5vy9Uj3uzU+L5GKFY4p7G2gkN1SMGODymEalYB92XFMYbiYvJMWB80z6wG0y?= =?us-ascii?Q?piCdj3jcDp5w+mXEk4ha5K1KULV1qShUqspk4VsgukRPdXgyRCH4vqQAu/xl?= =?us-ascii?Q?voYlFhlsuwJihWNrmyPrvJ4SI4kvW8Fv86t4Uk17/W9k4ctuwpu1bgaGFZN1?= =?us-ascii?Q?pKrxg+BklEw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR17MB5365.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HYUrwbXn/J59zatTmoaAE78U56LTDflIZWPSd6JT8fik6pGKi8q0CRxAlom1?= =?us-ascii?Q?30gdqA1IzwWtxOTF/5fMWdv5JRni/DzeJyHNBXphY9VTZ+fI2CzkAYqaUEqF?= =?us-ascii?Q?aznyu5sfv1J06eT0bqDCS38/26jcVq1Z4eSu+WhDmw1zRRFd69NsbuDwb8oy?= =?us-ascii?Q?T1Na2Hk8qUkj4LNyzz+BRQeymtkCmd2no6s+3ZBqpeuJyzn+pG/wKI+8ftHR?= =?us-ascii?Q?5Jeye0qV7ZZ/6NHsGSJXBk7GKTYL4eAVvCpDKel3QelN/psgbqA7rYGSMbm+?= =?us-ascii?Q?/Bac8HrNVCekAT9r/AHso3CW4oqt2mCIuZvnofphf0nwFqRGsXtvU1D66aI6?= =?us-ascii?Q?15MY4Ef/ENh/8snRpiaRQ4UI58e4RMFbGjgRTRzTeFxOCVy1sykWAr4FcQw8?= =?us-ascii?Q?qdXPCzWHqsr7pV4vC6fStqMehMG4CiP/5ErG5/0UPV/iUyG7yX5LHYmcV1BE?= =?us-ascii?Q?YFxqVK2UrnxM9b4oVKy26MGqT06QCnxQV9u71aqftdBemVsSIv6afPwQGDKD?= =?us-ascii?Q?jnZDm4Kq9eAq7U22963W5IkRv85LUz+9Cjinea+o9vF6oF8+nYHqwvO+70wZ?= =?us-ascii?Q?uJME4Z0//GcfLCUBQ6sN4ZydoBR1kblEjYmHpOUdOLi7+hIYJu7BVfE9B4NJ?= =?us-ascii?Q?0RaLaD8YsqWEbBemTOxtgmW0Xqn7izfrwnFMH5KLXoGkuC58UX7Wr0M0bY2g?= =?us-ascii?Q?pBN3rGAQd92isTxxnP0nQ4Zpm1TzaaJAB/GyX4vXt5IsiaqgHvjPqfpSdp8u?= =?us-ascii?Q?bdbo06tu0EafctuTJHMXxhAdwvNjyi/GF2F1C/rqqcZhdP0S430jqetFo62+?= =?us-ascii?Q?7ExItfKCKVC0/eTXG+GqtcJ2UdaJ3aODIHjLUUMopfJPmky4NMTZ49xhZgJx?= =?us-ascii?Q?eVMdSAZuhfBL/aZer4UGfHXfmeoe7Sog0c5SG3Kw4a7b+oOHGdkGjgM4a1c+?= =?us-ascii?Q?Du/rlK1otf9LuFnlOrXuskhaN38DkUr5bGziRuwTbEPguAyixOc5psV0qeWj?= =?us-ascii?Q?6uArX4wma6sQuQ78u2P2Mf/MiWAPPhnxLFlNwaKSqq4IQJ52g9t1dHOymFXo?= =?us-ascii?Q?mj648JkZW0BmGBqD9bKZSm7JKgSP64Ruv54S9AvB79G+vFSq/rqbYeN6Yqj2?= =?us-ascii?Q?sO78JH49I/TRb39hn4NrLxhq2Brg8uQDiOO9JCS7cfq5m70Tv80vzwOumMOh?= =?us-ascii?Q?FiEtOyhcvPCflgD3b0i8pL1vCT1Iu02o2FsN3RT1BNj6ygJTGwOgDSEjsxGE?= =?us-ascii?Q?WghjqXovi4b8dziNXVSc+8hie2zc+yjgfJQkjRakMxswntMNmsDokGFxNLC7?= =?us-ascii?Q?iX2diHqVOcTOzkEhPqKaajVb4KkFh6saBOo/YyHgPIaE4fx27aSBrnIZ+ufC?= =?us-ascii?Q?W9z45ew/SKTpROVNLFQoBYkq41Ta9/xeSoqFBnWoA3lo4rgIpEd/uTGml596?= =?us-ascii?Q?Pq+tHjUTeZrLbZ1nvje/0QaT+tn80yftuzpQum6dy2R8lKJ0EEfZ3MQMj4GV?= =?us-ascii?Q?V5umwfBJ92W8nU3lGT5KuDmwkWEfUVNY7Y+ugqkj2UfsgDtZ9ZF7iVL+qY7w?= =?us-ascii?Q?odJekGICexCEpctn6tQrNIq0mz/7pEkeULMY7Yvc?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: b50a567b-560a-4b70-f0a7-08ddb2708163 X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5365.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2025 16:10:43.6370 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5db0322-1aa0-4c0a-859c-ad0f96966f4c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cqf/NlnX64VfWaQ9wX8FKOFiQOU5EViKoyduezE3e6zrn0ViLh9pcUYi/8BFM8411bp9be1wUrmPYodoqEgQ6g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR17MB4637 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: gG01RxNA8eTG8-QkTnmpcOtdNWAY_nefK5qzrP6yqqQ_1750695044 X-Mimecast-Originator: labware.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=WINDOWS-1252 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 While working on new Python API to create new function types I realized that there's no easy way to create a new function type and control where it is going to be allocated (whether in gdbarch's obstack pr objfile's). Functions lookup_function_type and lookup_function_type_with_arguments always allocate at the same obstack as its return type. This is not sufficient for the new Python API - the user may use any type it can get hold of. For example, one may want to create a function returning arch-owned type and taking one argument of objfile-owned type. In that case we need to allocate the new type on that very objfile's obstack. This commit introduces new function - create_function_type - that takes type_allocator as first parameter, allowing caller to control the allocation. Existing functions (lookup_function_type and lookup_function_type_with_arguments) are reimplemented by means of new create_function_type. --- gdb/gdbtypes.c | 47 +++++++++++++++++++++++++++++------------------ gdb/gdbtypes.h | 24 +++++++++++++++++++----- 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 9c57f30a1dd..591a3cc4323 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -561,27 +561,19 @@ make_function_type (struct type *type, struct type **= typeptr) return ntype; } =20 -/* Given a type TYPE, return a type of functions that return that type. - May need to construct such a type if this is the first use. */ - -struct type * -lookup_function_type (struct type *type) -{ - return make_function_type (type, (struct type **) 0); -} - -/* Given a type TYPE and argument types, return the appropriate - function type. If the final type in PARAM_TYPES is NULL, make a - varargs function. */ +/* See gdbtypes.h. */ =20 struct type * -lookup_function_type_with_arguments (struct type *type, -=09=09=09=09 int nparams, -=09=09=09=09 struct type **param_types) +create_function_type (type_allocator &alloc, +=09=09 struct type *return_type, +=09=09 int nparams, +=09=09 struct type **param_types) { - struct type *fn =3D make_function_type (type, (struct type **) 0); + struct type *fn =3D alloc.new_type (); int i; =20 + make_function_type (return_type, &fn); + if (nparams > 0) { if (param_types[nparams - 1] =3D=3D NULL) @@ -589,8 +581,7 @@ lookup_function_type_with_arguments (struct type *type, =09 --nparams; =09 fn->set_has_varargs (true); =09} - else if (check_typedef (param_types[nparams - 1])->code () -=09 =3D=3D TYPE_CODE_VOID) + else if ((param_types[nparams - 1])->is_void ()) =09{ =09 --nparams; =09 /* Caller should have ensured this. */ @@ -608,6 +599,26 @@ lookup_function_type_with_arguments (struct type *type= , return fn; } =20 +/* See gdbtypes.h. */ + +struct type * +lookup_function_type (struct type *return_type) +{ + type_allocator alloc (return_type); + return create_function_type (alloc, return_type, 0, nullptr); +} + +/* See gdbtypes.h. */ + +struct type * +lookup_function_type_with_arguments (struct type *return_type, +=09=09=09=09 int nparams, +=09=09=09=09 struct type **param_types) +{ + type_allocator alloc (return_type); + return create_function_type (alloc, return_type, nparams, param_types); +} + /* Identify address space identifier by name -- return a type_instance_flags. */ =20 diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 9e2efe99cff..ba216c6db54 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -2526,11 +2526,25 @@ extern struct type *lookup_pointer_type (struct typ= e *); =20 extern struct type *make_function_type (struct type *, struct type **); =20 -extern struct type *lookup_function_type (struct type *); - -extern struct type *lookup_function_type_with_arguments (struct type *, -=09=09=09=09=09=09=09 int, -=09=09=09=09=09=09=09 struct type **); +/* Given a return type and argument types, create new function type. + If the final type in PARAM_TYPES is NULL, create a varargs function. + New type is allocated using ALLOC. */ +extern struct type *create_function_type (type_allocator &alloc, +=09=09=09=09=09 struct type *return_type, +=09=09=09=09=09 int nparams, +=09=09=09=09=09 struct type **param_types); + +/* Like create_function_type, but allocate the new function type at + the same obstack as RETURN_TYPE and with unspecified number of + parameters and their types. */ +extern struct type *lookup_function_type (struct type *return_type); + +/* Like create_function_type, but allocate the new function type at + the same obstack as RETURN_TYPE. */ +extern struct type *lookup_function_type_with_arguments +=09=09=09=09=09(struct type *return_type, +=09=09=09=09=09 int nparams, +=09=09=09=09=09 struct type **param_types); =20 /* Create a range type using ALLOC. =20 --=20 2.47.2