This fixes an issue where a page-aligned data section, combined with -z relro,
could lead to a gap between text and data segments larger than a page, and
we would fail to overlap the segments in the file.
gold/
* layout.cc (Layout::set_segment_offsets): Don't align start of segment
unless alignment is larger than page size.
+2015-01-09 Cary Coutant <ccoutant@google.com>
+
+ * layout.cc (Layout::set_segment_offsets): Don't align start of segment
+ unless alignment is larger than page size.
+
2015-01-06 H.J. Lu <hongjiu.lu@intel.com>
Cary Coutant <ccoutant@google.com>
// 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());
+ uint64_t max_align = (*p)->maximum_alignment();
+ if (max_align > abi_pagesize)
+ addr = align_address(addr, max_align);
aligned_addr = addr;
if (load_seg == *p)