diff options
author | Ian Lance Taylor <iant@google.com> | 2007-12-21 23:31:19 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2007-12-21 23:31:19 +0000 |
commit | 99f8facac923848a9496cc34235b608e05a7f160 (patch) | |
tree | d35f563ca6e357ff8ff87d3d3e45c2098b702f46 /gold/x86_64.cc | |
parent | dc96b90a103d5363c3bb298178b6ae3c5124aa19 (diff) | |
download | gdb-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.cc | 5 |
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(). |