Line 2955... |
Line 2955... |
// we do not try to realign it.
|
// we do not try to realign it.
|
|
|
if (!are_addresses_set
|
if (!are_addresses_set
|
&& !has_relro
|
&& !has_relro
|
&& aligned_addr != addr
|
&& aligned_addr != addr
|
&& !parameters->incremental_update())
|
&& !parameters->incremental())
|
{
|
{
|
uint64_t first_off = (common_pagesize
|
uint64_t first_off = (common_pagesize
|
- (aligned_addr
|
- (aligned_addr
|
& (common_pagesize - 1)));
|
& (common_pagesize - 1)));
|
uint64_t last_off = new_addr & (common_pagesize - 1);
|
uint64_t last_off = new_addr & (common_pagesize - 1);
|
Line 3123... |
Line 3123... |
if (off == -1)
|
if (off == -1)
|
{
|
{
|
if (is_debugging_enabled(DEBUG_INCREMENTAL))
|
if (is_debugging_enabled(DEBUG_INCREMENTAL))
|
this->free_list_.dump();
|
this->free_list_.dump();
|
gold_assert((*p)->output_section() != NULL);
|
gold_assert((*p)->output_section() != NULL);
|
gold_fatal(_("out of patch space for section %s; "
|
gold_fallback(_("out of patch space for section %s; "
|
"relink with --incremental-full"),
|
"relink with --incremental-full"),
|
(*p)->output_section()->name());
|
(*p)->output_section()->name());
|
}
|
}
|
(*p)->set_file_offset(off);
|
(*p)->set_file_offset(off);
|
(*p)->finalize_data_size();
|
(*p)->finalize_data_size();
|
if ((*p)->data_size() > current_size)
|
if ((*p)->data_size() > current_size)
|
{
|
{
|
gold_assert((*p)->output_section() != NULL);
|
gold_assert((*p)->output_section() != NULL);
|
gold_fatal(_("%s: section changed size; "
|
gold_fallback(_("%s: section changed size; "
|
"relink with --incremental-full"),
|
"relink with --incremental-full"),
|
(*p)->output_section()->name());
|
(*p)->output_section()->name());
|
}
|
}
|
gold_debug(DEBUG_INCREMENTAL,
|
gold_debug(DEBUG_INCREMENTAL,
|
"set_section_offsets: %08lx %08lx %s",
|
"set_section_offsets: %08lx %08lx %s",
|
Line 3389... |
Line 3389... |
symtab_off = align_address(*poff, align);
|
symtab_off = align_address(*poff, align);
|
else
|
else
|
{
|
{
|
symtab_off = this->allocate(off, align, *poff);
|
symtab_off = this->allocate(off, align, *poff);
|
if (off == -1)
|
if (off == -1)
|
gold_fatal(_("out of patch space for symbol table; "
|
gold_fallback(_("out of patch space for symbol table; "
|
"relink with --incremental-full"));
|
"relink with --incremental-full"));
|
gold_debug(DEBUG_INCREMENTAL,
|
gold_debug(DEBUG_INCREMENTAL,
|
"create_symtab_sections: %08lx %08lx .symtab",
|
"create_symtab_sections: %08lx %08lx .symtab",
|
static_cast<long>(symtab_off),
|
static_cast<long>(symtab_off),
|
static_cast<long>(off));
|
static_cast<long>(off));
|
Line 3460... |
Line 3460... |
else
|
else
|
{
|
{
|
oshdrs->pre_finalize_data_size();
|
oshdrs->pre_finalize_data_size();
|
off = this->allocate(oshdrs->data_size(), oshdrs->addralign(), *poff);
|
off = this->allocate(oshdrs->data_size(), oshdrs->addralign(), *poff);
|
if (off == -1)
|
if (off == -1)
|
gold_fatal(_("out of patch space for section header table; "
|
gold_fallback(_("out of patch space for section header table; "
|
"relink with --incremental-full"));
|
"relink with --incremental-full"));
|
gold_debug(DEBUG_INCREMENTAL,
|
gold_debug(DEBUG_INCREMENTAL,
|
"create_shdrs: %08lx %08lx (section header table)",
|
"create_shdrs: %08lx %08lx (section header table)",
|
static_cast<long>(off),
|
static_cast<long>(off),
|
static_cast<long>(off + oshdrs->data_size()));
|
static_cast<long>(off + oshdrs->data_size()));
|