From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by sourceware.org (Postfix) with ESMTPS id F1806385842E for ; Mon, 9 Jan 2023 23:19:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F1806385842E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-x62f.google.com with SMTP id jn22so11258333plb.13 for ; Mon, 09 Jan 2023 15:19:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-disposition:mime-version:message-id:subject:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=GF8K/fS2465qjycNgMp+HqqNGIscuQbOqfQVWRFA9/o=; b=n075VgpeliOqN7IOsveHg5xnU3drkHZaj9av1cQ+Wk+SuUlU++X1Iwwf6D0jC1Wv2y 2p8RhZRlDOoItadEsyFMG2aTluMjHXV9IpXC6Op1c7mKY0tWAkFgiI4YsXt4ICyekm0R QS84lYXU7oIhP1VgkaFW7/9bRd2B5gV2B60sMRKVNxIlH7XhuW0wbxGpByMUODWbIWiG eX0pflV+8HCgkt2qFaFhKSPaDaaHGmcjC2R32nol7mHXVGqpzzPFBHa/ifw3UMqMOI1c 1knHq7B4sS4y2ccLHJDuQyCoaB6PGL1n39s8SzmO3pxZP4li7HU78q2QEl1xlmee33+H wq4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-disposition:mime-version:message-id:subject:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=GF8K/fS2465qjycNgMp+HqqNGIscuQbOqfQVWRFA9/o=; b=vcYZh3K7sJbutPFC+ib8eMcOleMTgHVoG+YqCQ0J/95uFa5mB1h+c7bRcVCjJ0AISj y7wzvRnYwxG1f8UPq5otEg9yn9zI+LEC8QBJhAdLTWbwDIib6UbvaDLoGlKHc9Jbygfk F/TFLQihmKvER5VUtWH6ZJfhjGBMjgF8XdalcZrMBYnxH2d/u+chR+mCB0pArQpPgAF3 /Brmc6vCe+vfbnwtg1msYN1AM9PqFP3qAJPm+r3PKYRRJtvreC4lv/xZi6LJdYBOExil NuUArWFh0q9J5FlkK58kXT9uC1xCPFd+aZcsGPGGdwzQfd4Oqa0s/HUHM9imihIPQyPL 4bKQ== X-Gm-Message-State: AFqh2kqCvPJ57NFvOh3bQHDxMpTZg97pST2jZGdfhB/m4V+zH/6mcRO1 8UJiIOGWlfmdVuGWk7DcYeQhe5tMA2E= X-Google-Smtp-Source: AMrXdXu3UH/7tjPkwvuBojqXiGYu3qPginKw0dCGydFWxvxAlHCX610fgUguw3/Z3tqWLWIpk4mHEA== X-Received: by 2002:a05:6a20:b92f:b0:ac:16ae:1082 with SMTP id fe47-20020a056a20b92f00b000ac16ae1082mr71747714pzb.32.1673306354872; Mon, 09 Jan 2023 15:19:14 -0800 (PST) Received: from squeak.grove.modra.org ([2406:3400:51d:8cc0:86e3:29a7:f00c:acc1]) by smtp.gmail.com with ESMTPSA id p64-20020a625b43000000b00581fb8e665csm6515pfb.67.2023.01.09.15.19.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jan 2023 15:19:14 -0800 (PST) Received: by squeak.grove.modra.org (Postfix, from userid 1000) id 030E11142CDB; Tue, 10 Jan 2023 09:49:12 +1030 (ACDT) Date: Tue, 10 Jan 2023 09:49:11 +1030 From: Alan Modra To: binutils@sourceware.org Subject: Move mips_refhi_list to bfd tdata Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-3035.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Similar to commit c799eddb3512, but for mips-ecoff. mips-ecoff is marked obsolete, but we still allow reading of these object files in a number of mips targets. * coff-mips.c (struct mips_hi, mips_refhi_list): Delete. (mips_refhi_reloc, mips_reflo_reloc): Access mips_refhi_list in ecoff_data. * ecoff.c (_bfd_ecoff_close_and_cleanup): New function. * libecoff.h (struct mips_hi): Moved from coff-mips.c. (struct ecoff_tdata): Add mips_refhi_list. (_bfd_ecoff_close_and_cleanup): Declare. diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c index 79cbc20a03d..fdc0771979d 100644 --- a/bfd/coff-mips.c +++ b/bfd/coff-mips.c @@ -423,19 +423,8 @@ mips_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED, reloc. This extension permits gcc to output the HI and LO relocs itself. */ -struct mips_hi -{ - struct mips_hi *next; - bfd_byte *addr; - bfd_vma addend; -}; - -/* FIXME: This should not be a static variable. */ - -static struct mips_hi *mips_refhi_list; - static bfd_reloc_status_type -mips_refhi_reloc (bfd *abfd ATTRIBUTE_UNUSED, +mips_refhi_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, void * data, @@ -480,8 +469,8 @@ mips_refhi_reloc (bfd *abfd ATTRIBUTE_UNUSED, return bfd_reloc_outofrange; n->addr = (bfd_byte *) data + reloc_entry->address; n->addend = relocation; - n->next = mips_refhi_list; - mips_refhi_list = n; + n->next = ecoff_data (abfd)->mips_refhi_list; + ecoff_data (abfd)->mips_refhi_list = n; if (output_bfd != (bfd *) NULL) reloc_entry->address += input_section->output_offset; @@ -502,11 +491,11 @@ mips_reflo_reloc (bfd *abfd, bfd *output_bfd, char **error_message) { - if (mips_refhi_list != NULL) + if (ecoff_data (abfd)->mips_refhi_list != NULL) { struct mips_hi *l; - l = mips_refhi_list; + l = ecoff_data (abfd)->mips_refhi_list; while (l != NULL) { unsigned long insn; @@ -549,7 +538,7 @@ mips_reflo_reloc (bfd *abfd, l = next; } - mips_refhi_list = NULL; + ecoff_data (abfd)->mips_refhi_list = NULL; } /* Now do the REFLO reloc in the usual way. */ diff --git a/bfd/ecoff.c b/bfd/ecoff.c index 228394a5046..717d2fa2c75 100644 --- a/bfd/ecoff.c +++ b/bfd/ecoff.c @@ -109,6 +109,21 @@ _bfd_ecoff_mkobject_hook (bfd *abfd, void * filehdr, void * aouthdr) return (void *) ecoff; } +bool +_bfd_ecoff_close_and_cleanup (bfd *abfd) +{ + struct ecoff_tdata *tdata = ecoff_data (abfd); + + if (tdata != NULL && bfd_get_format (abfd) == bfd_object) + while (tdata->mips_refhi_list != NULL) + { + struct mips_hi *ref = tdata->mips_refhi_list; + tdata->mips_refhi_list = ref->next; + free (ref); + } + return _bfd_generic_close_and_cleanup (abfd); +} + /* Initialize a new section. */ bool diff --git a/bfd/libecoff.h b/bfd/libecoff.h index 9db5012292b..12664b890c4 100644 --- a/bfd/libecoff.h +++ b/bfd/libecoff.h @@ -80,6 +80,13 @@ struct ecoff_backend_data members of the embedded bfd_coff_backend_data struct. */ #define ECOFF_NO_LONG_SECTION_NAMES (false), _bfd_ecoff_no_long_sections +struct mips_hi +{ + struct mips_hi *next; + bfd_byte *addr; + bfd_vma addend; +}; + /* This is the target specific information kept for ECOFF files. */ #define ecoff_data(abfd) ((abfd)->tdata.ecoff_obj_data) @@ -148,6 +155,8 @@ typedef struct ecoff_tdata ecoff_compute_section_file_positions is called. */ bool rdata_in_text; + /* Used by coff-mips.c to track REFHI relocs for pairing with REFLO. */ + struct mips_hi *mips_refhi_list; } ecoff_data_type; /* Each canonical asymbol really looks like this. */ @@ -234,7 +243,7 @@ extern bool _bfd_ecoff_slurp_symbolic_info extern bool _bfd_ecoff_write_object_contents (bfd *); -#define _bfd_ecoff_close_and_cleanup _bfd_generic_close_and_cleanup +extern bool _bfd_ecoff_close_and_cleanup (bfd *); #define _bfd_ecoff_bfd_free_cached_info _bfd_generic_bfd_free_cached_info extern bool _bfd_ecoff_new_section_hook (bfd *, asection *); -- Alan Modra Australia Development Lab, IBM