forked from Imagelibrary/binutils-gdb
2010-09-03 Rafael Espindola <espindola@google.com>
* layout.cc (Layout::set_segment_offsets): Always advance to a new page.
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
2010-09-03 Rafael Espindola <espindola@google.com>
|
||||
|
||||
* layout.cc (Layout::set_segment_offsets): Always advance to a new page.
|
||||
|
||||
2010-09-08 Doug Kwan <dougkwan@google.com>
|
||||
|
||||
* arm.cc (Arm_exidx_cantunwind::do_print_to_mapfile): New method.
|
||||
|
||||
@@ -2567,7 +2567,6 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg,
|
||||
const bool check_sections = parameters->options().check_sections();
|
||||
Output_segment* last_load_segment = NULL;
|
||||
|
||||
bool was_readonly = false;
|
||||
for (Segment_list::iterator p = this->segment_list_.begin();
|
||||
p != this->segment_list_.end();
|
||||
++p)
|
||||
@@ -2614,21 +2613,17 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg,
|
||||
|
||||
if (!are_addresses_set)
|
||||
{
|
||||
// If the last segment was readonly, and this one is
|
||||
// not, then skip the address forward one page,
|
||||
// maintaining the same position within the page. This
|
||||
// lets us store both segments overlapping on a single
|
||||
// page in the file, but the loader will put them on
|
||||
// different pages in memory.
|
||||
// Skip the address forward one page, maintaining the same
|
||||
// position within the page. This lets us store both segments
|
||||
// overlapping on a single page in the file, but the loader will
|
||||
// put them on different pages in memory. We will revisit this
|
||||
// decision once we know the size of the segment.
|
||||
|
||||
addr = align_address(addr, (*p)->maximum_alignment());
|
||||
aligned_addr = addr;
|
||||
|
||||
if (was_readonly && ((*p)->flags() & elfcpp::PF_W) != 0)
|
||||
{
|
||||
if ((addr & (abi_pagesize - 1)) != 0)
|
||||
addr = addr + abi_pagesize;
|
||||
}
|
||||
if ((addr & (abi_pagesize - 1)) != 0)
|
||||
addr = addr + abi_pagesize;
|
||||
|
||||
off = orig_off + ((addr - orig_addr) & (abi_pagesize - 1));
|
||||
}
|
||||
@@ -2686,9 +2681,6 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg,
|
||||
|
||||
addr = new_addr;
|
||||
|
||||
if (((*p)->flags() & elfcpp::PF_W) == 0)
|
||||
was_readonly = true;
|
||||
|
||||
// Implement --check-sections. We know that the segments
|
||||
// are sorted by LMA.
|
||||
if (check_sections && last_load_segment != NULL)
|
||||
|
||||
Reference in New Issue
Block a user