Don't align start of segment unless alignment is larger than page size.
[binutils-gdb.git] / gold / layout.cc
index acc03b21e19bf09cbb035709abdfb79945e56e7b..bcdaac825dbc83c7c2526f439f7e0a6bcd270adb 100644 (file)
@@ -3524,7 +3524,9 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg,
              // 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)