2015-01-25 Cary Coutant <ccoutant@google.com>

gold/
	* output.cc (Output_segment::set_section_addresses): Fix calculation
	of size of relro segment.
This commit is contained in:
Cary Coutant 2015-01-25 17:31:32 -08:00
parent 76dbb86382
commit 5485698ae4
2 changed files with 13 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2015-01-25 Cary Coutant <ccoutant@google.com>
* output.cc (Output_segment::set_section_addresses): Fix calculation
of size of relro segment.
2015-01-22 Alan Modra <amodra@gmail.com>
* powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct

View File

@ -4311,8 +4311,8 @@ Output_segment::set_section_addresses(const Target* target,
else
{
// FIXME: This could be faster.
(*p)->set_address_and_file_offset(addr + relro_size,
off + relro_size);
(*p)->set_address_and_file_offset(relro_size,
relro_size);
relro_size += (*p)->data_size();
(*p)->reset_address_and_file_offset();
}
@ -4332,11 +4332,12 @@ Output_segment::set_section_addresses(const Target* target,
// Align to offset N such that (N + RELRO_SIZE) % PAGE_ALIGN == 0.
uint64_t desired_align = page_align - (aligned_size % page_align);
if (desired_align < *poff % page_align)
*poff += page_align - *poff % page_align;
*poff += desired_align - *poff % page_align;
addr += *poff - orig_off;
orig_off = *poff;
if (desired_align < off % page_align)
off += page_align;
off += desired_align - off % page_align;
addr += off - orig_off;
orig_off = off;
*poff = off;
}
if (!reset && this->are_addresses_set_)