From: Alan Modra Date: Tue, 9 Dec 2025 07:25:53 +0000 (+1030) Subject: tail recursion in _bfd_elf_link_hide_symbol X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1507ceb53d16c6db45a3aeba89d1072fc3c40dc;p=thirdparty%2Fbinutils-gdb.git tail recursion in _bfd_elf_link_hide_symbol We can clear the flags first if no backend hide_symbol function tests or sets them, which is true. * elflink.c (_bfd_elf_link_hide_symbol): Clear flags before calling elf_backend_hide_symbol, to enable tail recursion. --- diff --git a/bfd/elflink.c b/bfd/elflink.c index 39fac0639a0..3f60dba1fef 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -8368,14 +8368,12 @@ _bfd_elf_link_hide_symbol (bfd *output_bfd, { if (is_elf_hash_table (info->hash)) { - const struct elf_backend_data *bed - = get_elf_backend_data (output_bfd); - struct elf_link_hash_entry *eh - = (struct elf_link_hash_entry *) h; - bed->elf_backend_hide_symbol (info, eh, true); + const struct elf_backend_data *bed = get_elf_backend_data (output_bfd); + struct elf_link_hash_entry *eh = (struct elf_link_hash_entry *) h; eh->def_dynamic = 0; eh->ref_dynamic = 0; eh->dynamic_def = 0; + bed->elf_backend_hide_symbol (info, eh, true); } }