[PATCH] Fix DATA_SEGMENT_ALIGN

Jakub Jelinek jakub@redhat.com
Mon Mar 4 07:21:00 GMT 2002


Hi!

Somehow forgot to post this.
If DATA_SEGMENT_ALIGN (X, Y); is not used in the linker
script (e.g. because of -N), there is no point to use DATA_SEGMENT_END ().
Ok to commit?

2002-02-15  Jakub Jelinek  <jakub@redhat.com>

	* scripttempl/elf.sc: Only use DATA_SEGMENT_END() together with
	DATA_SEGMENT_ALIGN.

--- ld/scripttempl/elf.sc.jj	Tue Feb 12 15:10:29 2002
+++ ld/scripttempl/elf.sc	Fri Feb 15 23:17:52 2002
@@ -70,9 +70,13 @@ if [ -z "$MACHINE" ]; then OUTPUT_ARCH=$
 test -z "${ELFSIZE}" && ELFSIZE=32
 test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
 test "$LD_FLAG" = "N" && DATA_ADDR=.
+test -n "$CREATE_SHLIB" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
+test -z "$CREATE_SHLIB" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
 DATA_SEGMENT_ALIGN="ALIGN(${MAXPAGESIZE}) + (. & (${MAXPAGESIZE} - 1))"
-if [ -n "${COMMONPAGESIZE}" ]; then
+DATA_SEGMENT_END=""
+if test -n "${COMMONPAGESIZE}"; then
   DATA_SEGMENT_ALIGN="DATA_SEGMENT_ALIGN(${MAXPAGESIZE}, ${COMMONPAGESIZE})"
+  DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);"
 fi
 INTERP=".interp       ${RELOCATING-0} : { *(.interp) }"
 PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
@@ -320,7 +324,7 @@ cat <<EOF
   ${RELOCATING+_end = .;}
   ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
   ${RELOCATING+PROVIDE (end = .);}
-  ${COMMONPAGESIZE+${RELOCATING+. = DATA_SEGMENT_END (.);}}
+  ${RELOCATING+${DATA_SEGMENT_END}}
 
   /* Stabs debugging sections.  */
   .stab          0 : { *(.stab) }

	Jakub



More information about the Binutils mailing list