[GOLD] Symbol flag for PowerPC64 localentry:0 tracking
[deliverable/binutils-gdb.git] / gold / resolve.cc
index dd5b6b6afa619600bbbd1bb694671613f5bcfc9b..7c2260680072c84da5b803a785adff889fd2508f 100644 (file)
@@ -1,6 +1,6 @@
 // resolve.cc -- symbol resolution for gold
 
-// Copyright (C) 2006-2015 Free Software Foundation, Inc.
+// Copyright (C) 2006-2017 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -98,13 +98,7 @@ Symbol::override_base(const elfcpp::Sym<size, big_endian>& sym,
   this->is_ordinary_shndx_ = is_ordinary;
   // Don't override st_type from plugin placeholder symbols.
   if (object->pluginobj() == NULL)
-    {
-      // Turn IFUNC symbols from shared libraries into normal FUNC symbols.
-      elfcpp::STT type = sym.get_st_type();
-      if (object->is_dynamic() && type == elfcpp::STT_GNU_IFUNC)
-       type = elfcpp::STT_FUNC;
-      this->type_ = type;
-    }
+    this->type_ = sym.get_st_type();
   this->binding_ = sym.get_st_bind();
   this->override_visibility(sym.get_st_visibility());
   this->nonvis_ = sym.get_st_nonvis();
@@ -199,6 +193,7 @@ symbol_to_bits(elfcpp::STB binding, bool is_dynamic,
       // table.
       gold_error(_("invalid STB_LOCAL symbol in external symbols"));
       bits = global_flag;
+      break;
 
     default:
       // Any target which wants to handle STB_LOOS, etc., needs to
@@ -271,8 +266,8 @@ Symbol_table::resolve(Sized_symbol<size>* to,
     {
       Sized_target<size, big_endian>* sized_target;
       sized_target = parameters->sized_target<size, big_endian>();
-      sized_target->resolve(to, sym, object, version);
-      return;
+      if (sized_target->resolve(to, sym, object, version))
+       return;
     }
 
   if (!object->is_dynamic())
This page took 0.023354 seconds and 4 git commands to generate.