From b1507ceb53d16c6db45a3aeba89d1072fc3c40dc Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 9 Dec 2025 17:55:53 +1030 Subject: [PATCH] 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. --- bfd/elflink.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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); } } -- 2.47.3