aboutsummaryrefslogtreecommitdiff
path: root/gold/symtab.h
diff options
context:
space:
mode:
authorDoug Kwan <dougkwan@google.com>2009-10-01 00:58:38 +0000
committerDoug Kwan <dougkwan@google.com>2009-10-01 00:58:38 +0000
commit966d4097440bd7c3e35524bebf39d8bbe2e26fd6 (patch)
tree80a25b71ca7f2b3529c90ee004d50fb78239c298 /gold/symtab.h
parent7cacf37ef6dca17f1e65cbfa073faac07504397f (diff)
downloadfsf-binutils-gdb-966d4097440bd7c3e35524bebf39d8bbe2e26fd6.zip
fsf-binutils-gdb-966d4097440bd7c3e35524bebf39d8bbe2e26fd6.tar.gz
fsf-binutils-gdb-966d4097440bd7c3e35524bebf39d8bbe2e26fd6.tar.bz2
2009-09-30 Doug Kwan <dougkwan@google.com>
* arm.cc (Target_arm::may_need_copy_reloc): Check for THUMB function symbol and call Symbol::may_need_copy_reloc to determine if a copy reloc is needed. * copy-relocs.cc (Copy_relocs::need_copy_reloc): Return false if -z nocopyreloc is given in command line. (Copy_relocs::emit_copy_reloc): Assert that -z nocopyreloc is not given in command line. * i386.cc (Target_i386::may_need_copy_reloc): Remove. (Target_i386::Scan::global): Use Symbol::may_need_copy_reloc instead of the removed Target_i386::may_need_copy_reloc. * options.h (copyreloc): New option with default value false. * powerpc.cc (Target_powerpc::may_need_copy_reloc): Remove. (Target_powerpc::Scan::global): Use Symbol::may_need_copy_reloc instead of the removed Target_powerpc::may_need_copy_reloc. * sparc.cc (Target_powerpc::may_need_copy_reloc): Remove. (Target_sparc::Scan::global): Use Symbol::may_need_copy_reloc instead of the removed Target_sparc::may_need_copy_reloc. * symtab.h (Symbol::may_need_copy_reloc): New method definition. * x86_64.cc (Target_powerpc::may_need_copy_reloc): Remove. (Target_x86_64::Scan::global): Use Symbol::may_need_copy_reloc instead of the removed Target_x86_64::may_need_copy_reloc.
Diffstat (limited to 'gold/symtab.h')
-rw-r--r--gold/symtab.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/gold/symtab.h b/gold/symtab.h
index ef8e680..8dd7a72 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -726,6 +726,18 @@ class Symbol
set_is_forced_local()
{ this->is_forced_local_ = true; }
+ // Return true if this may need a COPY relocation.
+ // References from an executable object to non-function symbols
+ // defined in a dynamic object may need a COPY relocation.
+ bool
+ may_need_copy_reloc() const
+ {
+ return (!parameters->options().shared()
+ && parameters->options().copyreloc()
+ && this->is_from_dynobj()
+ && this->type() != elfcpp::STT_FUNC);
+ }
+
protected:
// Instances of this class should always be created at a specific
// size.