diff --git a/bfd/elf.c b/bfd/elf.c
index 74236a658fd9a10a61f466d9a2191998c2f4ce06..28d0143acca351203c840e6afc1dca710d6f671a 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -6152,7 +6152,12 @@ assign_file_positions_for_load_sections (bfd *abfd,
       if (m == phdr_load_seg)
 	{
 	  if (!m->includes_filehdr)
-	    p->p_offset = off;
+	    {
+	      if (((bfd_vma) off) < p->p_align)
+		p->p_offset = p->p_align;
+	      else
+		p->p_offset = off;
+	    }
 	  off += actual * bed->s->sizeof_phdr;
 	}
 
