Fix problem causing internal error when -z max-page-size is used.
If the default starting address is less than the new ABI page size, we end up misaligning the file header, causing an internal error. gold/ PR gold/20834 * target.h (Target::default_text_segment_address): Bump default start address up to ABI page size.
This commit is contained in:
parent
376c3ecd17
commit
be2884c1ea
2 changed files with 17 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2016-12-01 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
PR gold/20834
|
||||
* target.h (Target::default_text_segment_address): Bump default
|
||||
start address up to ABI page size.
|
||||
|
||||
2016-12-01 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
PR gold/18989
|
||||
|
|
|
@ -119,9 +119,19 @@ class Target
|
|||
{ return this->pti_->dynamic_linker; }
|
||||
|
||||
// Return the default address to use for the text segment.
|
||||
// If a -z max-page-size argument has set the ABI page size
|
||||
// to a value larger than the default starting address,
|
||||
// bump the starting address up to the page size, to avoid
|
||||
// misaligning the text segment in the file.
|
||||
uint64_t
|
||||
default_text_segment_address() const
|
||||
{ return this->pti_->default_text_segment_address; }
|
||||
{
|
||||
uint64_t addr = this->pti_->default_text_segment_address;
|
||||
uint64_t pagesize = this->abi_pagesize();
|
||||
if (addr < pagesize)
|
||||
addr = pagesize;
|
||||
return addr;
|
||||
}
|
||||
|
||||
// Return the ABI specified page size.
|
||||
uint64_t
|
||||
|
|
Loading…
Add table
Reference in a new issue