aboutsummaryrefslogtreecommitdiff
path: root/gold/dynobj.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-09-11 22:57:35 +0000
committerIan Lance Taylor <iant@google.com>2007-09-11 22:57:35 +0000
commit92f0e169b4932e9e143a10788b448d2cac35f770 (patch)
tree479992576fc2f8e1191a28992797f7db934ff1eb /gold/dynobj.cc
parent50c7215d2f16cc6c31f613dde45a1696b6e2b43e (diff)
downloadfsf-binutils-gdb-92f0e169b4932e9e143a10788b448d2cac35f770.zip
fsf-binutils-gdb-92f0e169b4932e9e143a10788b448d2cac35f770.tar.gz
fsf-binutils-gdb-92f0e169b4932e9e143a10788b448d2cac35f770.tar.bz2
Only create a version definition for a shared library. Set the
dynamic symbol index for a version definition when finalizing versions.
Diffstat (limited to 'gold/dynobj.cc')
-rw-r--r--gold/dynobj.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/gold/dynobj.cc b/gold/dynobj.cc
index 874b4e7..96488d8 100644
--- a/gold/dynobj.cc
+++ b/gold/dynobj.cc
@@ -1195,7 +1195,10 @@ Versions::record_version(const General_options* options,
const char* version = dynpool->add(sym->version(), &version_key);
if (!sym->is_from_dynobj())
- this->add_def(options, sym, version, version_key);
+ {
+ if (options->is_shared())
+ this->add_def(options, sym, version, version_key);
+ }
else
{
// This is a version reference.
@@ -1331,6 +1334,7 @@ Versions::finalize(const Target* target, Symbol_table* symtab,
elfcpp::STV_DEFAULT, 0,
false);
vsym->set_needs_dynsym_entry();
+ vsym->set_dynsym_index(dynsym_index);
++dynsym_index;
syms->push_back(vsym);
// The name is already in the dynamic pool.