// common.cc -- handle common symbols for gold
+// Copyright 2006, 2007 Free Software Foundation, Inc.
+// Written by Ian Lance Taylor <iant@google.com>.
+
+// This file is part of gold.
+
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+// MA 02110-1301, USA.
+
#include "gold.h"
#include <algorithm>
void
Symbol_table::allocate_commons(const General_options& options, Layout* layout)
{
- if (this->get_size() == 32)
- this->do_allocate_commons<32>(options, layout);
- else if (this->get_size() == 64)
- this->do_allocate_commons<64>(options, layout);
+ if (parameters->get_size() == 32)
+ {
+#if defined(HAVE_TARGET_32_LITTLE) || defined(HAVE_TARGET_32_BIG)
+ this->do_allocate_commons<32>(options, layout);
+#else
+ gold_unreachable();
+#endif
+ }
+ else if (parameters->get_size() == 64)
+ {
+#if defined(HAVE_TARGET_64_LITTLE) || defined(HAVE_TARGET_64_BIG)
+ this->do_allocate_commons<64>(options, layout);
+#else
+ gold_unreachable();
+#endif
+ }
else
gold_unreachable();
}
off = align_address(off, ssym->value());
- Size_type symsize = ssym->symsize();
- ssym->init(ssym->name(), poc, off, symsize, ssym->type(),
- ssym->binding(), ssym->visibility(), ssym->nonvis(),
- false);
+ ssym->allocate_common(poc, off);
- off += symsize;
+ off += ssym->symsize();
}
- poc->set_space_size(off);
+ poc->set_current_data_size(off);
this->commons_.clear();
}