From 7f3a18cfb58deb36e05469d94e7b9e48b19d90af Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 17 Dec 2020 07:44:48 +1030 Subject: Statically initialise target common sections This tidies initialisation of target common sections, doing so using a static initialiser rather than via code and deleting unnecessary symbol_ptr_ptr variables (the one in asection is used instead). The patch also initialises ecoff.c:bfd_debug_section using BFD_FAKE_SECTION. That does change bfd_debug_section slightly, output_section was NULL now bfd_debug_section, and symbol_ptr_ptr was NULL now &bfd_debug_section.symbol, but I believe those changes are safe. bfd/ * ecoff.c (bfd_debug_section): Init using BFD_FAKE_SECTION. (ecoff_scom_section, ecoff_scom_symbol): Statically init using BFD_FAKE_SECTION and GLOBAL_SYM_INIT. Delete initialisation code. (ecoff_scom_symbol_ptr): Delete. * elf32-m32r.c (m32r_elf_scom_section, m32r_elf_scom_symbol), (m32r_elf_scom_symbol_ptr), * elf32-score.c (score_elf_scom_section, score_elf_scom_symbol), (score_elf_scom_symbol_ptr), * elf32-score7.c (score_elf_scom_section, score_elf_scom_symbol), (score_elf_scom_symbol_ptr), * elf32-tic6x.c (tic6x_elf_scom_section, tic6x_elf_scom_symbol), (tic6x_elf_scom_symbol_ptr), * elf32-v850.c (v850_elf_scom_section, v850_elf_scom_symbol), (v850_elf_scom_symbol_ptr), (v850_elf_tcom_section, v850_elf_tcom_symbol), (v850_elf_tcom_symbol_ptr), (v850_elf_zcom_section, v850_elf_zcom_symbol), (v850_elf_zcom_symbol_ptr), * elf64-mmix.c (mmix_elf_reg_section, mmix_elf_reg_section_symbol), (mmix_elf_reg_section_symbol_ptr), * elfxx-mips.c (mips_elf_scom_section, mips_elf_scom_symbol), (mips_elf_scom_symbol_ptr): Likewise. gas/ * ecoff.c (ecoff_frob_symbol): Rename scom_section to ecoff_scom_section and statically initialise. --- gas/ChangeLog | 5 +++++ gas/ecoff.c | 25 ++++++++----------------- 2 files changed, 13 insertions(+), 17 deletions(-) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index 2816395..8cdf93b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2020-12-18 Alan Modra + + * ecoff.c (ecoff_frob_symbol): Rename scom_section to + ecoff_scom_section, move to file scope and statically initialise. + 2020-12-16 Alan Modra * config/obj-elf.c (obj_elf_section): Don't set elf_osabi here. diff --git a/gas/ecoff.c b/gas/ecoff.c index 69af2ce..b708f53 100644 --- a/gas/ecoff.c +++ b/gas/ecoff.c @@ -3551,6 +3551,13 @@ ecoff_stab (segT sec ATTRIBUTE_UNUSED, cur_file_ptr = save_file_ptr; } +static asection ecoff_scom_section; +static const asymbol ecoff_scom_symbol = + GLOBAL_SYM_INIT (SCOMMON, &ecoff_scom_section); +static asection ecoff_scom_section = + BFD_FAKE_SECTION (ecoff_scom_section, &ecoff_scom_symbol, + SCOMMON, 0, SEC_IS_COMMON | SEC_SMALL_DATA); + /* Frob an ECOFF symbol. Small common symbols go into a special .scommon section rather than bfd_com_section. */ @@ -3561,23 +3568,7 @@ ecoff_frob_symbol (symbolS *sym) && S_GET_VALUE (sym) > 0 && S_GET_VALUE (sym) <= bfd_get_gp_size (stdoutput)) { - static asection scom_section; - static asymbol scom_symbol; - - /* We must construct a fake section similar to bfd_com_section - but with the name .scommon. */ - if (scom_section.name == NULL) - { - scom_section = *bfd_com_section_ptr; - scom_section.name = ".scommon"; - scom_section.output_section = &scom_section; - scom_section.symbol = &scom_symbol; - scom_section.symbol_ptr_ptr = &scom_section.symbol; - scom_symbol = *bfd_com_section_ptr->symbol; - scom_symbol.name = ".scommon"; - scom_symbol.section = &scom_section; - } - S_SET_SEGMENT (sym, &scom_section); + S_SET_SEGMENT (sym, &ecoff_scom_section); } /* Double check weak symbols. */ -- cgit v1.1