aboutsummaryrefslogtreecommitdiff
path: root/gold/x86_64.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-12-21 23:31:19 +0000
committerIan Lance Taylor <iant@google.com>2007-12-21 23:31:19 +0000
commit99f8facac923848a9496cc34235b608e05a7f160 (patch)
treed35f563ca6e357ff8ff87d3d3e45c2098b702f46 /gold/x86_64.cc
parentdc96b90a103d5363c3bb298178b6ae3c5124aa19 (diff)
downloadgdb-99f8facac923848a9496cc34235b608e05a7f160.zip
gdb-99f8facac923848a9496cc34235b608e05a7f160.tar.gz
gdb-99f8facac923848a9496cc34235b608e05a7f160.tar.bz2
From Cary Coutant: Fix handling of versioned symbols, add some tests.
Diffstat (limited to 'gold/x86_64.cc')
-rw-r--r--gold/x86_64.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index ddd125d..afa8070 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -1483,7 +1483,10 @@ Target_x86_64::Relocate::relocate(const Relocate_info<64, false>* relinfo,
case elfcpp::R_X86_64_PLT32:
gold_assert(gsym == NULL
|| gsym->has_plt_offset()
- || gsym->final_value_is_known());
+ || gsym->final_value_is_known()
+ || (gsym->is_defined()
+ && !gsym->is_from_dynobj()
+ && !gsym->is_preemptible()));
// Note: while this code looks the same as for R_X86_64_PC32, it
// behaves differently because psymval was set to point to
// the PLT entry, rather than the symbol, in Scan::global().