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> 2015-01-22 Alan Modra <amodra@gmail.com>
* powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct * powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct

View File

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