From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id IdSzFhtE7WhcES8AWB0awg (envelope-from ) for ; Mon, 13 Oct 2025 14:25:31 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=labware.com header.i=@labware.com header.a=rsa-sha256 header.s=mimecast20220511 header.b=TlGI4nnD; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 56F8E1E0B6; Mon, 13 Oct 2025 14:25:31 -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 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 A57751E047 for ; Mon, 13 Oct 2025 14:25:30 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C9BD93857735 for ; Mon, 13 Oct 2025 18:25:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C9BD93857735 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=labware.com header.i=@labware.com header.a=rsa-sha256 header.s=mimecast20220511 header.b=TlGI4nnD 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 11B573858C83 for ; Mon, 13 Oct 2025 18:23:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 11B573858C83 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 11B573858C83 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=1760379833; cv=none; b=Vk9S0bfYnxMdNo2S+4TKL8QfN6LFMkSmM/DG5KMUyAbW2jzhDszytR0750E92P0cRBxMR8JT6oduLXqoAqA0BiZ9G9awClISm/IOcDgqDjp1AYgTxoI9nqH540kkq85UkVrFLru6G5xj6TJneinjM8+yJ/hENXsF8tGPN1reHZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1760379833; c=relaxed/simple; bh=nx4wGRPpQVfqdawcypS405Wj9ddTQlJsA6G4kPgdAps=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=R/Pgm9SMn52bd22crlzKEEQneuxpNiqvVd32xguFvwbsbaRG+XYYe9haaADa2+wbrYRR4KabPE8kzq9fYZKcaJ/Dc9Rv+Yc4EkQdeA7E+J01OQD77mD8q4TD9+AqzawtxLaYfii84ZJhwLd9QIvqZFAchSWZPSvwTkLBEs3TgwM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 11B573858C83 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=labware.com; s=mimecast20220511; t=1760379832; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4G+EiAG7VEp+v3WRaIZW684oNbcXwvpRzFSktDOadLI=; b=TlGI4nnDJIdfULvUdwWPyWGUzcck5zvs0CvguAti0SW3LKeCMiji+jlWOnVbfwDxyrDN8z OYCF0HFBwzMCSRl6ezCk5YKHxFF+1SNPDr+N12vsIW1JtUtRbjDQyLr9TZDbt3A7pLRQCO h3RRk5T4Skc1m5hVgW9+Ec+bCA+5oeI= Received: from SJ2PR03CU001.outbound.protection.outlook.com (mail-westusazon11022091.outbound.protection.outlook.com [52.101.43.91]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-49-7JeyV4o7MDao2ZGfzeOrDQ-1; Mon, 13 Oct 2025 14:23:50 -0400 X-MC-Unique: 7JeyV4o7MDao2ZGfzeOrDQ-1 X-Mimecast-MFC-AGG-ID: 7JeyV4o7MDao2ZGfzeOrDQ_1760379829 Received: from SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) by LV3PR17MB7120.namprd17.prod.outlook.com (2603:10b6:408:1a3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.9; Mon, 13 Oct 2025 18:23:44 +0000 Received: from SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::9a:538a:fa42:730e]) by SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::9a:538a:fa42:730e%3]) with mapi id 15.20.9228.005; Mon, 13 Oct 2025 18:23:42 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany Subject: [PATCH 1/2] gdb: allocate blockvector on heap Date: Mon, 13 Oct 2025 19:23:17 +0100 Message-ID: <20251013182318.1045138-2-jan.vrany@labware.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251013182318.1045138-1-jan.vrany@labware.com> References: <20251013182318.1045138-1-jan.vrany@labware.com> X-ClientProxiedBy: LO4P123CA0292.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:196::9) To SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR17MB5365:EE_|LV3PR17MB7120:EE_ X-MS-Office365-Filtering-Correlation-Id: fc2b5c69-2253-4b20-cb31-08de0a85a334 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014 X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dUYjpNR8ecKfZxezE/3zSy3LiQMf3VSukSx5NuuXH3lmSwVpQuH4b8Kx2uIC?= =?us-ascii?Q?YkH0WpLNbuDpEqOwplNaseQPlOTuA4zeS9Bt9cRCatXFMPLIWl3nW8h+uCTX?= =?us-ascii?Q?BTJpYugGQqg61VUP6GH3PwWHSda6AXEmVpsd3qYTamoJlfLXNw6SPQn/Nuch?= =?us-ascii?Q?1R9s+Sr1hMWzeL/t2485EbpPQJhTpcvDtwTxTO9VUnQDAAWVFU08gjgp+W48?= =?us-ascii?Q?UhauYbHcjMTONJrcNj506D9Lkn0rzz0a1arkWxIHDwEUwY92BQfronSwvi2J?= =?us-ascii?Q?31G5g8NRPZzMALTMKAzbUDnL0/BmrJ1luFcQGRKxjvRwRz8k3K/9PylDvdzq?= =?us-ascii?Q?9ltTo4XO07kP9jUxAEe+YBdWVRJmn65Xv6tBX6ZOGNWs+nGGksC6NZr91V0V?= =?us-ascii?Q?WpkUJ4JDcbS0rbmBVrrrKRjAMeLqenMsxsA4x+oJYIJKVMR5YxkO5Kr2QXze?= =?us-ascii?Q?xPkWR/79zLqWcR4ev7qYPqxC4IKV3Ir3XoToKbwLw68HiacSREmlMmArYG5J?= =?us-ascii?Q?5fvuyjuUyZAv7QQv8ZxiNMvMOlTuBcbiOtL1tOXQfbLGKQu+0Ev1LYbI+/Yg?= =?us-ascii?Q?A6ZpLr6xZTOUL0eT2owiO4n2R6Zi9psEQVEiSoIQARnD+dE0N1jS2RF3SNps?= =?us-ascii?Q?6U7WPEfVCpK+tCeuzzt9OnVsA8xZYayGlbPuUVmD4I5rkCmAa+i5lUGiYL9Z?= =?us-ascii?Q?CK556tOO5ES5KhmjT+94I2hGXdyppYRXsqfJYFtu/bMXOLA9Ih91mMx1UluY?= =?us-ascii?Q?fg9ynUcSjbUn9Wh2g+evDHAFpCO6pTN1Cp3/BcHPjcpus1Wg4xDNvso57sQY?= =?us-ascii?Q?OLaQtSf7rCuevkkyfUlzbQJfeIL+TC5LVlIad0tvRhF3MWzAmuhZ0lluej9v?= =?us-ascii?Q?SPdCTo4HFPOR5CCo2nVgOPvNxrFGD/0gmuwGvw155Wswb13+l8bRfDlKDebE?= =?us-ascii?Q?XuFAFVVQfN+pBmere53VRxSUyx4iPzhWMDdJTNLz4T5x+r1Y1Vq7lLM7gUEF?= =?us-ascii?Q?n8q8Nr8WZ6QFL3eCpBC3RIzoVz/hJ7L7krGwaS+8sJTPidlnDfdrvtJ4B+0v?= =?us-ascii?Q?PFQXx/CaPhskLGmT22Ggl55R79wCdCMCDy6BewAgK31O99smKGeo7iR7syNf?= =?us-ascii?Q?yETStFcjyVUVbVoaRPh0VcnfZ0FtUn+uH36mYPYAjlqb/shiafdreJFc2RjV?= =?us-ascii?Q?ajVNlGwHlkWym0Bb0zRJ+KoKtEhDbp2CsEGr6DX0KQtRFM5CyKy8/Nt5Zl1h?= =?us-ascii?Q?WfOzMwKPW+1Nsc+KYI7IiTu6ZFbhDqRCxuXLSh9wJkmzHUNsRPM6+1C+Ga4N?= =?us-ascii?Q?traoZdtbseDhxRrf6GEuE6GpAmQfz82+F9P2PB0jSdEbNuuBiXaX2xAW3ty9?= =?us-ascii?Q?Qqtqq3fxX+t3mlHxj6+gA/jSjMT0/QaGr3thUC7Uq9cUgYkBxyixPanM+FDa?= =?us-ascii?Q?MEJQFbkJAjd81DOFaHFg6deroq6lSRKT?= 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)(1800799024)(376014); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7fIpCXt2x94MAVBqBUYveUQZUx1JT2H2q9pF5KTKwPA9xINTaHut1mv5jj52?= =?us-ascii?Q?4E24x8yS9nN9+FAvkhaGTLE6oWr+MoauBi2p1qRO6/ja5B+3niCDyH5VxKkE?= =?us-ascii?Q?iOf6bznRT0TaPXTKWvC0siZVdwMPaKcpoA3EAOHWS5SqCmi43UYyzcBacRIJ?= =?us-ascii?Q?5SuuXU/J3e2UloGoJ9COQZpZr6njtOWxI0gX6EO5tUrX6GEEtc1v1gLHsjAh?= =?us-ascii?Q?IuCcQDgGnfW5tWZZunCNb7lPE+QPH4F62f1dEvXUTjWA1TltyPC67Wmokbta?= =?us-ascii?Q?lLDioRG/tx+SbxDo1heLlqManbLct7YYQtJnt6UQH90JCPgjVus2bjSBF1kQ?= =?us-ascii?Q?29vkqWecedD20u5ukwMB/yWtqM1ODeTjk5ZjRpbZeYhh17t32Y9Rpn04Td/8?= =?us-ascii?Q?vWahNfCiCja0otMbk79svYyhj3geIRk00UamWCnNTyRQUlgLp+yqnvaOu9QF?= =?us-ascii?Q?xC2Iqm5pjiyWr1WIebA9Kht9sk9Ovl+egNmh06wNe64CWbNPqj/HkXjofKvQ?= =?us-ascii?Q?R09DYK680BJlXuADnmCzNojrIMuHpdiDITF8ScZwfhOfnSfKK1pxoFES6okF?= =?us-ascii?Q?WLop2XHRv8PfHopQwkmwXKeeulJ7J/DJCtCh2ggnLI1OleiVv/RgC82Uu7xM?= =?us-ascii?Q?K2O+Ah1Ij9C3/Hx1XEwnMD0vvs5V/pxTQOTbFjvD62t70m777EpRz34tzLmk?= =?us-ascii?Q?aiA1CuOLE+4EH3+LfanvnAEpT3YLno6FAEKqQUooBRHSCmf90eeVdumW5Evp?= =?us-ascii?Q?qBZa34rA9Gfigs8usxC77dlPeDf2ZAZCwFdidTb4q1/s2IAL1KfzwrolVEgx?= =?us-ascii?Q?/3mhjZzcazpHW8RK4PqujnFoml8hvIKxTLmxs7yPi0NLhX6pyCbjh50hF0v1?= =?us-ascii?Q?fOJaEIj/e3WErRjgOYTxcWuQ23y0+uFIZ1uCTqFhemRDXFm5xiCrEi8Ye92V?= =?us-ascii?Q?M6NeGZSqEu/LZ1oOf4TgfmvByWOnbtBB1ZgSVSRBJiS/N3mHac8xw8YtWOiA?= =?us-ascii?Q?DFwp8FWSDO0ZlEUwf1cWIZyfiOckq/39GuJIsfMRgYu3tquZySLGbng5U9xf?= =?us-ascii?Q?EYCdtvhKLcWoV89uVZmMazIZrlSnzJSVTaRYPsK5maGrmKmNUrfcBA13x3Fx?= =?us-ascii?Q?oZQWdNPgIdAPdn3wjnP3DD1Hf/PRXOqyCksoLunHTEhtIO+DoEcz92XP2aMm?= =?us-ascii?Q?OShIJiSxnyh8FwQR8LDI7rbxcFiLAw+eV7VldpTZKfL2zQN4cveH5WvwYb7X?= =?us-ascii?Q?mI1PccSM9O9onvHFQFRwvp24tnl8wV6Qzm5/PYa2Ahwjj1XGkWH6+27Ek4I9?= =?us-ascii?Q?HxcWxbelmsBo1TqsPuoQ/N3JyLyisl5AnxE+UJyE2IThAgI4nfGyZzsRBY5X?= =?us-ascii?Q?FXSj24aBetDek9MTMFezCvGWbw+ik7vMyqhF+al4aGqbJqX+lM8VKhzDFy5x?= =?us-ascii?Q?ieQOyqkQNA/MX/2+U81qPvhwB5hFcoJPYFEiUkoQB8nFPXC1I4TlCSYQ7Lxc?= =?us-ascii?Q?dOPqrzzV+J6GUjsUhq/+lYmoW/8k46BlH7dUKJxCquuIAUVOWE1Ir8hzxrs8?= =?us-ascii?Q?17BYe0I8+jcUV0UhhgskTXCzLtXqPfBlfcOG8lPS?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc2b5c69-2253-4b20-cb31-08de0a85a334 X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5365.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2025 18:23:41.9674 (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: cL933YJp/ztZPf6+oSy8AzpJEIsen8i2MjlXgJvPItha+eALWiSvFsLVWw+0jrM9yXZcEzw7aAzFHafcSO/ksg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR17MB7120 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: wlzQ4YZAIzV5QRDEdqgNYcab9yJQ35IZObXsM5y_aso_1760379829 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 This patch changes blockvector to be allocated on the heap, using 'new'. The code is little awkward since blockvector uses flexible array member to hold on blocks. So in order to make it working, this commit overloads 'new' and 'delete' operators to take the number of blocks as parameter and allocates/deallocates memory using std::malloc and std::free. This will go away in following commit that will change blockvector to use std::vector rather than flexible array member. --- gdb/block.h | 18 ++++++++++++++++++ gdb/buildsym.c | 5 +---- gdb/jit.c | 8 +------- gdb/mdebugread.c | 38 +++++++++++--------------------------- 4 files changed, 31 insertions(+), 38 deletions(-) diff --git a/gdb/block.h b/gdb/block.h index 8a3ea822d04..d1ca41d7482 100644 --- a/gdb/block.h +++ b/gdb/block.h @@ -420,6 +420,24 @@ struct global_block : public block =20 struct blockvector { + void *operator new (size_t size, size_t num_blocks) + { + size_t size_in_bytes =3D size + (num_blocks - 1) * (sizeof (struct blo= ck *)); + return std::malloc (size_in_bytes); + } + + void operator delete (void *memory) + { + std::free (memory); + } + + blockvector (int nblocks) + : m_map (nullptr), + m_num_blocks (nblocks) + { + std::memset (m_blocks, 0, nblocks * sizeof (struct block *)); + } + /* Return a view on the blocks of this blockvector. */ gdb::array_view blocks () { diff --git a/gdb/buildsym.c b/gdb/buildsym.c index 2a8e95e078b..a61ef68ada1 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -427,10 +427,7 @@ buildsym_compunit::make_blockvector () { } =20 - blockvector =3D (struct blockvector *) - obstack_alloc (&m_objfile->objfile_obstack, -=09=09 (sizeof (struct blockvector) -=09=09 + (i - 1) * sizeof (struct block *))); + blockvector =3D new (i) struct blockvector (i); =20 /* Copy the blocks into the blockvector. This is done in reverse order, which happens to put the blocks into the proper order diff --git a/gdb/jit.c b/gdb/jit.c index ca817e85c71..d95fe542a29 100644 --- a/gdb/jit.c +++ b/gdb/jit.c @@ -517,7 +517,6 @@ jit_symtab_close_impl (struct gdb_symbol_callbacks *cb, static void finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile) { - size_t blockvector_size; CORE_ADDR begin, end; struct blockvector *bv; =20 @@ -554,18 +553,13 @@ finalize_symtab (struct gdb_symtab *stab, struct objf= ile *objfile) filetab->set_linetable (new_table); } =20 - blockvector_size =3D (sizeof (struct blockvector) -=09=09 + (actual_nblocks - 1) * sizeof (struct block *)); - bv =3D (struct blockvector *) obstack_alloc (&objfile->objfile_obstack, -=09=09=09=09=09 blockvector_size); + bv =3D new (actual_nblocks) blockvector (actual_nblocks); cust->set_blockvector (bv); =20 /* At the end of this function, (begin, end) will contain the PC range t= his entire blockvector spans. */ - bv->set_map (nullptr); begin =3D stab->blocks.front ().begin; end =3D stab->blocks.front ().end; - bv->set_num_blocks (actual_nblocks); =20 /* First run over all the gdb_block objects, creating a real block object for each. Simultaneously, keep setting the real_block diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index 9504e5e1670..3cedf0e4fc2 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -242,8 +242,6 @@ static struct compunit_symtab *new_symtab (const char *= , int, struct objfile *); =20 static struct linetable *new_linetable (int); =20 -static struct blockvector *new_bvect (int); - static struct type *parse_type (int, union aux_ext *, unsigned int, int *, =09=09=09=09int, const char *); =20 @@ -4501,18 +4499,19 @@ add_block (struct block *b, struct symtab *s) { /* Cast away "const", but that's ok because we're building the symtab and blockvector here. */ - struct blockvector *bv + struct blockvector *old_bv =3D (struct blockvector *) s->compunit ()->blockvector (); =20 - bv =3D (struct blockvector *) xrealloc ((void *) bv, -=09=09=09=09=09(sizeof (struct blockvector) -=09=09=09=09=09 + bv->num_blocks () -=09=09=09=09=09 * sizeof (struct block))); - if (bv !=3D s->compunit ()->blockvector ()) - s->compunit ()->set_blockvector (bv); + struct blockvector *new_bv =3D new (old_bv->num_blocks () + 1) + blockvector (old_bv->num_blocks () + 1); + + s->compunit ()->set_blockvector (old_bv); =20 - bv->set_block (bv->num_blocks (), b); - bv->set_num_blocks (bv->num_blocks () + 1); + for (int i =3D 0; i < old_bv->num_blocks (); i++) + new_bv->set_block (i, old_bv->block (i)); + new_bv->set_block (new_bv->num_blocks () - 1, b); + + delete old_bv; } =20 /* Add a new linenumber entry (LINENO,ADR) to a linevector LT. @@ -4636,7 +4635,7 @@ new_symtab (const char *name, int maxlines, struct ob= jfile *objfile) lang =3D cust->language (); =20 /* All symtabs must have at least two blocks. */ - bv =3D new_bvect (2); + bv =3D new (2) blockvector (2); bv->set_block (GLOBAL_BLOCK, new_block (objfile, NON_FUNCTION_BLOCK, lan= g)); bv->set_block (STATIC_BLOCK, new_block (objfile, NON_FUNCTION_BLOCK, lan= g)); bv->static_block ()->set_superblock (bv->global_block ()); @@ -4704,21 +4703,6 @@ shrink_linetable (struct linetable *lt) =09=09=09=09=09 * sizeof (lt->item)))); } =20 -/* Allocate and zero a new blockvector of NBLOCKS blocks. */ - -static struct blockvector * -new_bvect (int nblocks) -{ - struct blockvector *bv; - int size; - - size =3D sizeof (struct blockvector) + nblocks * sizeof (struct block *)= ; - bv =3D (struct blockvector *) xzalloc (size); - bv->set_num_blocks (nblocks); - - return bv; -} - /* Allocate and zero a new block of language LANGUAGE, and set its BLOCK_MULTIDICT. If function is non-zero, assume the block is associated to a function, and make sure that the symbols are stored --=20 2.51.0