ELF symbol version output cleanup

Message ID aSu-gZ8Zb8vuFVtu@squeak.grove.modra.org
State New
Headers
Series ELF symbol version output cleanup |

Commit Message

Alan Modra Nov. 30, 2025, 3:48 a.m. UTC
  * elflink.c (elf_link_output_extsym): Localise code setting
	VERSYM_HIDDEN to previous branch of "if" where def_regular
	might be true.  Delete noversion.  Set vs_vers to zero instead.
  

Patch

diff --git a/bfd/elflink.c b/bfd/elflink.c
index 7a5f54b926f..adc21d7d821 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -11138,7 +11138,6 @@  elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
 	{
 	  Elf_Internal_Versym iversym;
 	  Elf_External_Versym *eversym;
-	  bool noversion = false;
 
 	  if (!h->def_regular && !ELF_COMMON_DEF_P (h))
 	    {
@@ -11150,7 +11149,7 @@  elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
 		  if (strchr (h->root.root.string, ELF_VER_CHR) == NULL)
 		    /* Referenced symbol without ELF_VER_CHR has no
 		       version.  */
-		    noversion = true;
+		    iversym.vs_vers = 0;
 		}
 	      else
 		iversym.vs_vers = h->verinfo.verdef->vd_exp_refno + 1;
@@ -11163,22 +11162,16 @@  elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
 		iversym.vs_vers = h->verinfo.vertree->vernum + 1;
 	      if (flinfo->info->create_default_symver)
 		iversym.vs_vers++;
-	    }
 
-	  /* Don't set its DT_VERSYM entry for unversioned symbol.  */
-	  if (!noversion)
-	    {
 	      /* Turn on VERSYM_HIDDEN only if the hidden versioned
 		 symbol is defined locally.  */
 	      if (h->versioned == versioned_hidden && h->def_regular)
 		iversym.vs_vers |= VERSYM_HIDDEN;
-
-	      eversym
-		= (Elf_External_Versym *) flinfo->symver_sec->contents;
-	      eversym += h->dynindx;
-	      _bfd_elf_swap_versym_out (flinfo->output_bfd, &iversym,
-					eversym);
 	    }
+
+	  eversym = (Elf_External_Versym *) flinfo->symver_sec->contents;
+	  eversym += h->dynindx;
+	  _bfd_elf_swap_versym_out (flinfo->output_bfd, &iversym, eversym);
 	}
     }