Revert last patch.
authorIan Lance Taylor <iant@google.com>
Wed, 14 Nov 2007 08:03:41 +0000 (08:03 +0000)
committerIan Lance Taylor <iant@google.com>
Wed, 14 Nov 2007 08:03:41 +0000 (08:03 +0000)
gold/i386.cc
gold/symtab.cc
gold/target.h
gold/x86_64.cc

index 9b90c792b5b0d4e344d2745b9902a1005b5a0e20..eae6b7fa3397bf9efc1e1b369f81d0e712ccf401 100644 (file)
@@ -84,11 +84,6 @@ class Target_i386 : public Sized_target<32, false>
   uint64_t
   do_dynsym_value(const Symbol*) const;
 
-  // Return whether SYM is always defined.
-  bool
-  do_is_always_defined(Symbol* sym) const
-  { return strcmp(sym->name(), "___tls_get_addr") == 0; }
-
   // Relocate a section.
   void
   relocate_section(const Relocate_info<32, false>*,
index 24430237d62865b7ef9544916517df8d9c54cb6c..f5e21322b78eb1f5f1863c3941f85b3430b0a6be 100644 (file)
@@ -1610,8 +1610,7 @@ Symbol_table::sized_write_globals(const Target* target,
           && sym->object()->is_dynamic()
           && sym->shndx() == elfcpp::SHN_UNDEF
          && sym->binding() != elfcpp::STB_WEAK
-         && !parameters->allow_shlib_undefined()
-         && !target->is_always_defined(sym))
+         && !parameters->allow_shlib_undefined())
        {
          // A very ugly cast.
          Dynobj* dynobj = static_cast<Dynobj*>(sym->object());
index 33c351cb4c5496b68210f71277b93702d7def4ec..8ecc078330d76efeace35f8dfd10e1bd57459586 100644 (file)
@@ -137,13 +137,6 @@ class Target
   code_fill(off_t length)
   { return this->do_code_fill(length); }
 
-  // Return whether SYM is a special symbol which is known to be
-  // defined.  This is used to avoid inappropriate warnings about
-  // undefined symbols.
-  bool
-  is_always_defined(Symbol* sym) const
-  { return this->do_is_always_defined(sym); }
-
  protected:
   // This struct holds the constant information for a child class.  We
   // use a struct to avoid the overhead of virtual function calls for
@@ -195,12 +188,6 @@ class Target
   do_code_fill(off_t)
   { gold_unreachable(); }
 
-  // Virtual function which may be implemented by the child class if
-  // needed.
-  virtual bool
-  do_is_always_defined(Symbol*) const
-  { return false; }
-
  private:
   Target(const Target&);
   Target& operator=(const Target&);
index ead93d942268b3070abd43e366e2c912e65e73c9..0614e89c6064acc7b7f707ac86b6fcb3b1d89488 100644 (file)
@@ -97,11 +97,6 @@ class Target_x86_64 : public Sized_target<64, false>
   uint64_t
   do_dynsym_value(const Symbol*) const;
 
-  // Return whether SYM is always defined.
-  bool
-  do_is_always_defined(Symbol* sym) const
-  { return strcmp(sym->name(), "__tls_get_addr") == 0; }
-
   // Relocate a section.
   void
   relocate_section(const Relocate_info<64, false>*,