* options.h (class General_options): Add --spare-dynamic-tags.
* output.cc (Output_data_dynamic::set_final_data_size): Implement --spare-dynamic-tags.
This commit is contained in:
parent
bce522a260
commit
9e9e071b2e
@ -1,3 +1,9 @@
|
||||
2010-03-05 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* options.h (class General_options): Add --spare-dynamic-tags.
|
||||
* output.cc (Output_data_dynamic::set_final_data_size): Implement
|
||||
--spare-dynamic-tags.
|
||||
|
||||
2010-03-05 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* incremental.cc: Include "libiberty.h".
|
||||
|
@ -875,6 +875,10 @@ class General_options
|
||||
N_("Sort common symbols by alignment"),
|
||||
N_("[={ascending,descending}]"));
|
||||
|
||||
DEFINE_uint(spare_dynamic_tags, options::TWO_DASHES, '\0', 5,
|
||||
N_("Dynamic tag slots to reserve (default 5)"),
|
||||
N_("COUNT"));
|
||||
|
||||
DEFINE_bool(strip_all, options::TWO_DASHES, 's', false,
|
||||
N_("Strip all symbols"), NULL);
|
||||
DEFINE_bool(strip_debug, options::TWO_DASHES, 'S', false,
|
||||
|
@ -1622,9 +1622,13 @@ Output_data_dynamic::set_final_data_size()
|
||||
{
|
||||
// Add the terminating entry if it hasn't been added.
|
||||
// Because of relaxation, we can run this multiple times.
|
||||
if (this->entries_.empty()
|
||||
|| this->entries_.rbegin()->tag() != elfcpp::DT_NULL)
|
||||
this->add_constant(elfcpp::DT_NULL, 0);
|
||||
if (this->entries_.empty() || this->entries_.back().tag() != elfcpp::DT_NULL)
|
||||
{
|
||||
int extra = parameters->options().spare_dynamic_tags();
|
||||
for (int i = 0; i < extra; ++i)
|
||||
this->add_constant(elfcpp::DT_NULL, 0);
|
||||
this->add_constant(elfcpp::DT_NULL, 0);
|
||||
}
|
||||
|
||||
int dyn_size;
|
||||
if (parameters->target().get_size() == 32)
|
||||
|
Loading…
Reference in New Issue
Block a user