Float16: Fix test failures for non ELF targets
[binutils-gdb.git] / gold / symtab.cc
index c43d127507e6dc7b7f96ef37970e444e4ae617b0..56d1e42b8b0b5eaaeef1f592f9d20d0b393bd84d 100644 (file)
@@ -1,6 +1,6 @@
 // symtab.cc -- the gold symbol table
 
-// Copyright (C) 2006-2018 Free Software Foundation, Inc.
+// Copyright (C) 2006-2019 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -1898,10 +1898,13 @@ Symbol_table::define_special_symbol(const char** pname, const char** pversion,
          add_to_table = true;
          add_loc = ins.first;
 
-         if (is_default_version && !insdefault.second)
+         if (is_default_version
+             && !insdefault.second
+             && insdefault.first->second->version() == NULL)
            {
              // We are adding NAME/VERSION, and it is the default
-             // version.  We already have an entry for NAME/NULL.
+             // version.  We already have an entry for NAME/NULL
+             // that does not already have a version.
              oldsym = insdefault.first->second;
              *resolve_oldsym = true;
            }
@@ -2620,11 +2623,12 @@ Symbol_table::set_dynsym_indexes(unsigned int index,
                versions->record_version(this, dynpool, sym);
              else
                {
-                 gold_warning(_("discarding version information for "
-                                "%s@%s, defined in unused shared library %s "
-                                "(linked with --as-needed)"),
-                              sym->name(), sym->version(),
-                              sym->object()->name().c_str());
+                 if (parameters->options().warn_drop_version())
+                   gold_warning(_("discarding version information for "
+                                  "%s@%s, defined in unused shared library %s "
+                                  "(linked with --as-needed)"),
+                                sym->name(), sym->version(),
+                                sym->object()->name().c_str());
                  sym->clear_version();
                }
            }