]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ELF symbol version output cleanup
authorAlan Modra <amodra@gmail.com>
Sun, 30 Nov 2025 03:44:18 +0000 (14:14 +1030)
committerAlan Modra <amodra@gmail.com>
Sun, 30 Nov 2025 03:48:34 +0000 (14:18 +1030)
* 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.

bfd/elflink.c

index 7a5f54b926f43876609171e5f6ec9b9f7b177e69..adc21d7d821a82cfc8b5dc7912266957b9ea4eb2 100644 (file)
@@ -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);
        }
     }