aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-11-14 08:03:41 +0000
committerIan Lance Taylor <iant@google.com>2007-11-14 08:03:41 +0000
commit601e4987b8dd2639159d387a00b4504744c4abfd (patch)
treea72625b3bd98a7beb23dde4aad331598572564f3 /gold
parentSupport special always-defined symbols for targets. (diff)
downloadbinutils-gdb-601e4987b8dd2639159d387a00b4504744c4abfd.tar.gz
binutils-gdb-601e4987b8dd2639159d387a00b4504744c4abfd.tar.bz2
binutils-gdb-601e4987b8dd2639159d387a00b4504744c4abfd.zip
Revert last patch.
Diffstat (limited to 'gold')
-rw-r--r--gold/i386.cc5
-rw-r--r--gold/symtab.cc3
-rw-r--r--gold/target.h13
-rw-r--r--gold/x86_64.cc5
4 files changed, 1 insertions, 25 deletions
diff --git a/gold/i386.cc b/gold/i386.cc
index 9b90c792b5b..eae6b7fa339 100644
--- a/gold/i386.cc
+++ b/gold/i386.cc
@@ -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>*,
diff --git a/gold/symtab.cc b/gold/symtab.cc
index 24430237d62..f5e21322b78 100644
--- a/gold/symtab.cc
+++ b/gold/symtab.cc
@@ -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());
diff --git a/gold/target.h b/gold/target.h
index 33c351cb4c5..8ecc078330d 100644
--- a/gold/target.h
+++ b/gold/target.h
@@ -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&);
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index ead93d94226..0614e89c606 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -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>*,