// 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
- abort();
+ gold_unreachable();
}
// Allocated the common symbols, sized version.
// Place them in a newly allocated .bss section.
- Output_data_common *poc = new Output_data_common(addralign);
+ Output_data_space *poc = new Output_data_space(addralign);
layout->add_output_section_data(".bss", elfcpp::SHT_NOBITS,
elfcpp::SHF_WRITE | elfcpp::SHF_ALLOC,
off += symsize;
}
- poc->set_common_size(off);
+ poc->set_space_size(off);
this->commons_.clear();
}