diff --git a/ld/ChangeLog b/ld/ChangeLog
index e61f71960bd..0f5562268c0 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-07  Andreas Schwab  <schwab@suse.de>
+
+	* ldexp.c (fold_binary) [DATA_SEGMENT_ALIGN]: Apply data segment
+	alignment before adjusting DATA_SEGMENT_RELRO_END.
+
 2004-09-06  Mark Mitchell  <mark@codesourcery.com>
 
 	* emulparams/armsymbian.sh: Use armbpabi script.
diff --git a/ld/ldexp.c b/ld/ldexp.c
index e7587c17100..c19070f41dc 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -427,6 +427,7 @@ fold_binary (etree_type *tree,
 			 a common page boundary.  */
 		      bfd_vma relro;
 
+		      result.value += dot & (maxpage - 1);
 		      relro = exp_data_seg.relro_end - exp_data_seg.base;
 		      result.value += -relro & (other.value - 1);
 		      exp_data_seg.base = result.value;