Move .stack before debug sections
authorAlan Modra <amodra@gmail.com>
Mon, 20 Feb 2017 02:55:13 +0000 (13:25 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 20 Feb 2017 09:03:28 +0000 (19:33 +1030)
PR 20199
* emulparams/elf32m32c.sh: Define STACK_ADDR and STACK_SENTINEL
rather than using OTHER_SECTIONS.
* emulparams/elf32mt.sh: Likewise.
* emulparams/elf32rx.sh: Likewise.
* emulparams/elf32rl78.sh: Likewise.  Use OTHER_SYMBOLS to
define __rl78_abs__.
* emulparams/shelf.sh: Define STACK_ADDR and STACK_SENTINEL
rather than using OTHER_SECTIONS.
* emulparams/shelf32.sh: Likewise.  Use OTHER_SECTIONS for .cranges.
* emulparams/shelf64.sh: Unset OTHER_SECTIONS.
* emulparams/shelf_nbsd.sh: Unset STACK_ADDR not OTHER_SECTIONS.
* emulparams/shelf_uclinux.sh: Likewise.
* emulparams/shlsymbian.sh: Unset STACK_ADDR.  Use OTHER_SYMBOLS
to define _stack, not OTHER_SECTIONS.
* scripttempl/elf.sc: Move STACK, TINY_DATA_SECTION, and
TINY_BSS_SECTION before debug sections.  Add STACK_SENTINEL.
* scripttempl/arclinux.sc: Likewise.
* scripttempl/elf64hppa.sc: Likewise.
* scripttempl/elfxtensa.sc: Likewise.
* scripttempl/nds32elf.sc: Likewise.
* scripttempl/armbpabi.sc: Move STACK before debug sections.
* scripttempl/elf_chaos.sc: Likewise.
* scripttempl/elfarc.sc: Delete STACK.
* scripttempl/epiphany_4x4.sc: Delete STACK.  Move TINY_DATA_SECTION,
TINY_BSS_SECTION, and .stack before debug sections.

20 files changed:
ld/ChangeLog
ld/emulparams/elf32m32c.sh
ld/emulparams/elf32mt.sh
ld/emulparams/elf32rl78.sh
ld/emulparams/elf32rx.sh
ld/emulparams/shelf.sh
ld/emulparams/shelf32.sh
ld/emulparams/shelf64.sh
ld/emulparams/shelf_nbsd.sh
ld/emulparams/shelf_uclinux.sh
ld/emulparams/shlsymbian.sh
ld/scripttempl/arclinux.sc
ld/scripttempl/armbpabi.sc
ld/scripttempl/elf.sc
ld/scripttempl/elf64hppa.sc
ld/scripttempl/elf_chaos.sc
ld/scripttempl/elfarc.sc
ld/scripttempl/elfxtensa.sc
ld/scripttempl/epiphany_4x4.sc
ld/scripttempl/nds32elf.sc

index ce8cdb3311a643ed1bee7029be4047330f23395b..d02d009d3932d0f41c0fa255b5bcb578e8533a7d 100644 (file)
@@ -1,3 +1,32 @@
+2017-02-17  Alan Modra  <amodra@gmail.com>
+
+       PR 20199
+       * emulparams/elf32m32c.sh: Define STACK_ADDR and STACK_SENTINEL
+       rather than using OTHER_SECTIONS.
+       * emulparams/elf32mt.sh: Likewise.
+       * emulparams/elf32rx.sh: Likewise.
+       * emulparams/elf32rl78.sh: Likewise.  Use OTHER_SYMBOLS to
+       define __rl78_abs__.
+       * emulparams/shelf.sh: Define STACK_ADDR and STACK_SENTINEL
+       rather than using OTHER_SECTIONS.
+       * emulparams/shelf32.sh: Likewise.  Use OTHER_SECTIONS for .cranges.
+       * emulparams/shelf64.sh: Unset OTHER_SECTIONS.
+       * emulparams/shelf_nbsd.sh: Unset STACK_ADDR not OTHER_SECTIONS.
+       * emulparams/shelf_uclinux.sh: Likewise.
+       * emulparams/shlsymbian.sh: Unset STACK_ADDR.  Use OTHER_SYMBOLS
+       to define _stack, not OTHER_SECTIONS.
+       * scripttempl/elf.sc: Move STACK, TINY_DATA_SECTION, and
+       TINY_BSS_SECTION before debug sections.  Add STACK_SENTINEL.
+       * scripttempl/arclinux.sc: Likewise.
+       * scripttempl/elf64hppa.sc: Likewise.
+       * scripttempl/elfxtensa.sc: Likewise.
+       * scripttempl/nds32elf.sc: Likewise.
+       * scripttempl/armbpabi.sc: Move STACK before debug sections.
+       * scripttempl/elf_chaos.sc: Likewise.
+       * scripttempl/elfarc.sc: Delete STACK.
+       * scripttempl/epiphany_4x4.sc: Delete STACK.  Move TINY_DATA_SECTION,
+       TINY_BSS_SECTION, and .stack before debug sections.
+
 2017-02-17  Nick Clifton  <nickc@redhat.com>
 
        PR ld/20825
index eaf2c4e8f5ba03abdb0d62dfd29635d754f69fc4..cd2b700a18d340e3c850d8661449fe943dd48070 100644 (file)
@@ -10,17 +10,8 @@ TEMPLATE_NAME=elf32
 EXTRA_EM_FILE=needrelax
 ELFSIZE=32
 MAXPAGESIZE=256
-# This is like setting STACK_ADDR to 0x0073FFFF0, except that the setting can
-# be overridden, e.g. --defsym _stack=0x0f00, and that we put an extra
-# sentinal value at the bottom.
-# N.B. We can't use PROVIDE to set the default value in a symbol because
-# the address is needed to place the .stack section, which in turn is needed
-# to hold the sentinel value(s).
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="  .stack        ${RELOCATING-0}${RELOCATING+(DEFINED(__stack) ? __stack : 0x7fc)} :
-  {
-    ${RELOCATING+__stack = .;}
-    *(.stack)
-    LONG(0xdeaddead)
-  }"
+
+STACK_ADDR="(DEFINED(__stack) ? __stack : 0x7fc)"
+STACK_SENTINEL="LONG(0xdeaddead)"
 # We do not need .stack for shared library.
-test -n "$CREATE_SHLIB" && OTHER_SECTIONS=""
+test -n "$CREATE_SHLIB" && unset STACK_ADDR
index 04fc1ed83d85661c87ab684e7df767a2fc358036..6880db84dd050a16813a7b399ce9140bec24c0fb 100644 (file)
@@ -10,17 +10,8 @@ ENTRY=_start
 EMBEDDED=yes
 ELFSIZE=32
 MAXPAGESIZE=256
-# This is like setting STACK_ADDR to 0x0073FFFF0, except that the setting can
-# be overridden, e.g. --defsym _stack=0x0f00, and that we put an extra
-# sentinal value at the bottom.
-# N.B. We can't use PROVIDE to set the default value in a symbol because
-# the address is needed to place the .stack section, which in turn is needed
-# to hold the sentinel value(s).
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="  .stack        ${RELOCATING-0}${RELOCATING+(DEFINED(__stack) ? __stack : 0x007FFFF0)} :
-  {
-    ${RELOCATING+__stack = .;}
-    *(.stack)
-    LONG(0xdeaddead)
-  }"
+
+STACK_ADDR="(DEFINED(__stack) ? __stack : 0x007FFFF0)"
+STACK_SENTINEL="LONG(0xdeaddead)"
 # We do not need .stack for shared library.
-test -n "$CREATE_SHLIB" && OTHER_SECTIONS=""
+test -n "$CREATE_SHLIB" && unset STACK_ADDR
index 7073efb04315180e401847161e3d5d4c138d7194..b782d0316bad684864c7fdaef468f8e6f4e5f00b 100644 (file)
@@ -10,18 +10,11 @@ TEMPLATE_NAME=elf32
 ELFSIZE=32
 # EXTRA_EM_FILE=needrelax
 MAXPAGESIZE=256
-# This is like setting STACK_ADDR to 0xffedc, except that the setting can
-# be overridden, e.g. --defsym _stack=0x0f00, and that we put an extra
-# sentinal value at the bottom.
-# N.B. We can't use PROVIDE to set the default value in a symbol because
-# the address is needed to place the .stack section, which in turn is needed
-# to hold the sentinel value(s).
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="  .stack        ${RELOCATING-0}${RELOCATING+(DEFINED(__stack) ? __stack : 0xffedc)} :
-  {
-    ${RELOCATING+__stack = .;}
-    *(.stack)
-    LONG(0xdead)
-  }
-  ${RELOCATING+PROVIDE (__rl78_abs__ = 0);}"
+
+STACK_ADDR="(DEFINED(__stack) ? __stack : 0xffedc)"
+STACK_SENTINEL="LONG(0xdead)"
 # We do not need .stack for shared library.
-test -n "$CREATE_SHLIB" && OTHER_SECTIONS=""
+test -n "$CREATE_SHLIB" && unset STACK_ADDR
+
+OTHER_SYMBOLS="PROVIDE (__rl78_abs__ = 0);"
+test -n "$CREATE_SHLIB" && unset OTHER_SYMBOLS
index 2288667deb4ae8d763423d561e9c996cdbdf7f9a..e139be7196efa357fe8ca757451cae604eb16805 100644 (file)
@@ -11,20 +11,11 @@ EXTRA_EM_FILE=rxelf
 # EXTRA_EM_FILE=needrelax
 ELFSIZE=32
 MAXPAGESIZE=256
-# This is like setting STACK_ADDR to 0xbffffffc, except that the setting can
-# be overridden, e.g. --defsym _stack=0x0f00, and that we put an extra
-# sentinal value at the bottom.
-# N.B. We can't use PROVIDE to set the default value in a symbol because
-# the address is needed to place the .stack section, which in turn is needed
-# to hold the sentinel value(s).
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="  .stack        ${RELOCATING-0}${RELOCATING+(DEFINED(__stack) ? __stack : 0xbffffffc)} :
-  {
-    ${RELOCATING+__stack = .;}
-    *(.stack)
-    LONG(0xdeaddead)
-  }"
+
+STACK_ADDR="(DEFINED(__stack) ? __stack : 0xbffffffc)"
+STACK_SENTINEL="LONG(0xdeaddead)"
 # We do not need .stack for shared library.
-test -n "$CREATE_SHLIB" && OTHER_SECTIONS=""
+test -n "$CREATE_SHLIB" && unset STACK_ADDR
 
 OTHER_TEXT_SECTIONS='*(P)'
 OTHER_READONLY_SECTIONS='C_1 : { *(C_1) } C_2 : { *(C_2) } C : { *(C) } W_1 : { *(W_1) } W_2 : { *(W_2) } W : { *(W) }'
index d3f4752e883a17de27e589fab052ba79646e1ee2..8d79b8d86c568c957a25caec929500adc5ff4717 100644 (file)
@@ -21,17 +21,7 @@ CTOR_START='___ctors = .;'
 CTOR_END='___ctors_end = .;'
 DTOR_START='___dtors = .;'
 DTOR_END='___dtors_end = .;'
-# This is like setting STACK_ADDR to 0x3FFFFF00, except that the setting can
-# be overridden, e.g. --defsym _stack=0x0f00, and that we put an extra
-# sentinal value at the bottom.
-# N.B. We can't use PROVIDE to set the default value in a symbol because
-# the address is needed to place the .stack section, which in turn is needed
-# to hold the sentinel value(s).
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="  .stack        ${RELOCATING-0}${RELOCATING+(DEFINED(_stack) ? _stack : 0x3FFFFF00)} :
-  {
-    ${RELOCATING+_stack = .;}
-    *(.stack)
-    LONG(0xdeaddead)
-  }"
+STACK_ADDR="(DEFINED(_stack) ? _stack : 0x3FFFFF00)"
+STACK_SENTINEL="LONG(0xdeaddead)"
 # We do not need .stack for shared library.
-test -n "$CREATE_SHLIB" && OTHER_SECTIONS=""
+test -n "$CREATE_SHLIB" && unset STACK_ADDR
index bf362c5a2ebdd8be39028b5b98e8689bc71642ac..7f4640730d387823e5e5d09ca355bc5f0bc84d47 100644 (file)
@@ -34,28 +34,12 @@ CTOR_END='___ctors_end = .;'
 DTOR_START='___dtors = .;'
 DTOR_END='___dtors_end = .;'
 
-# Do not use the varname=${varname-'string'} construct here; there are
-# problems with that on some shells (e.g. on Solaris) where there is a bug
-# that trigs when $varname contains a "}".
-# The effect of the .stack definition is like setting STACK_ADDR to 0x80000,
-# except that the setting can be overridden, e.g. --defsym _stack=0xff000,
-# and that we put an extra sentinal value at the bottom.
-# N.B. We can't use PROVIDE to set the default value in a symbol because
-# the address is needed to place the .stack section, which in turn is needed
-# to hold the sentinel value(s).
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="
-  .stack ${RELOCATING-0}${RELOCATING+(DEFINED(_stack) ? _stack : ALIGN (0x40000) + 0x80000)} :
-  {
-    ${RELOCATING+_stack = .;}
-    *(.stack)
-    LONG(0xdeaddead)
-  }
-  .cranges 0 : { *(.cranges) }
-"
+STACK_ADDR="(DEFINED(_stack) ? _stack : ALIGN (0x40000) + 0x80000)"
+STACK_SENTINEL="LONG(0xdeaddead)"
 # We do not need .stack for shared library.
-test -n "$CREATE_SHLIB" && OTHER_SECTIONS="
-  .cranges 0 : { *(.cranges) }
-"
+test -n "$CREATE_SHLIB" && unset STACK_ADDR
+
+OTHER_SECTIONS=".cranges 0 : { *(.cranges) }"
 
 # We need to adjust sizes in the .cranges section after relaxation, so
 # we need an after_allocation function, and it goes in this file.
index 5037f350187c517e0e7cd3d0da9974c369767ac9..5ddcc8d4523a1cc882424d5ee260da6b92332a93 100644 (file)
@@ -6,13 +6,4 @@ EXTRA_EM_FILE=
 . ${srcdir}/emulparams/shelf32.sh
 
 # We do not need .cranges
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="
- .stack ${RELOCATING-0}${RELOCATING+(DEFINED(_stack) ? _stack : ALIGN (0x40000) + 0x80000)} :
-  {
-    ${RELOCATING+_stack = .;}
-    *(.stack)
-    LONG(0xdeaddead)
-  }
-"
-# We do not need .stack for shared library.
-test -n "$CREATE_SHLIB" && OTHER_SECTIONS=""
+unset OTHER_SECTIONS
index 9d331c6b78e44f09dcfa24f5dce9044164bfc946..b27993dc8e797836deb1ad77086e792d97a4f691 100644 (file)
@@ -12,4 +12,4 @@ DATA_START_SYMBOLS='PROVIDE (__data_start = .);';
 ENTRY=_start
 
 unset EMBEDDED
-unset OTHER_SECTIONS
+unset STACK_ADDR
index 2af5da44b8f77bd2056e457e5a9e5a7d54ac87c9..dac390ebfc0d0f8f3e5da8f8c2cbcb23a2228eb6 100644 (file)
@@ -1,4 +1,4 @@
 . ${srcdir}/emulparams/shelf.sh
 
 # We do not want a .stack section
-OTHER_SECTIONS=""
+unset STACK_ADDR
index 9c6dfba7b33fdcbed7a00c72395ad6effc873e78..f729bb59263ab70d7e5d49546a95f60099443f84 100644 (file)
@@ -11,7 +11,9 @@ DTOR_START='__dtors = .;'
 DTOR_END='__dtors_end = .;'
 
 # Suppress the .stack section.
-test -z "$CREATE_SHLIB" && OTHER_SECTIONS="${RELOCATING+PROVIDE (_stack = 0x30000);}"
+unset STACK_ADDR
+OTHER_SYMBOLS="PROVIDE (_stack = 0x30000);"
+test -n "$CREATE_SHLIB" && unset OTHER_SYMBOLS
 
 OUTPUT_FORMAT="elf32-shl-symbian"
 SCRIPT_NAME=elf32sh-symbian
index f3668d2ffeb68776ca37c7539ca7941ac839f257..e692f13e9da52aedd0ce28a3ba9621a05f8c518e 100644 (file)
@@ -303,10 +303,11 @@ DTOR=".dtors        ${CONSTRUCTING-0} :
     KEEP (*(.dtors))
     ${CONSTRUCTING+${DTOR_END}}
   }"
-STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
+STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
   {
     ${RELOCATING+${USER_LABEL_PREFIX}_stack = .;}
     *(.stack)
+    ${RELOCATING+${STACK_SENTINEL}}
   }"
 
 TEXT_START_ADDR="SEGMENT_START(\"text-segment\", ${TEXT_START_ADDR})"
@@ -649,6 +650,9 @@ SHLIB_LARGE_DATA_ADDR=". = SEGMENT_START(\"ldata-segment\", ${SHLIB_LARGE_DATA_A
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
   ${RELOCATING+${DATA_SEGMENT_END}}
+  ${TINY_DATA_SECTION}
+  ${TINY_BSS_SECTION}
+  ${STACK_ADDR+${STACK}}
 EOF
 
 test -z "${NON_ALLOC_DYN}" || emit_dyn
@@ -669,11 +673,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-
-  ${TINY_DATA_SECTION}
-  ${TINY_BSS_SECTION}
-
-  ${STACK_ADDR+${STACK}}
   ${ATTRS_SECTIONS}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}
index 0657aa930c7e7c70bbbeb7524dbc08c1509a6259..dee1028b9659bfc8143e12f6358e5e636f371908 100644 (file)
@@ -317,6 +317,7 @@ cat <<EOF
   ${RELOCATING+_end = .;}
   ${RELOCATING+PROVIDE (end = .);}
   ${RELOCATING+${DATA_SEGMENT_END}}
+  ${STACK_ADDR+${STACK}}
 
   /* These sections are not mapped under the BPABI.  */
   .dynamic      0 : { *(.dynamic) }
@@ -342,7 +343,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-  ${STACK_ADDR+${STACK}}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}
   ${RELOCATING+${DISCARDED}}
index e65f9a3ccf10aee6a16586972b8bae9b7efea61a..d9138bc059ba160cc0cada3d4b15e05df5452c63 100644 (file)
@@ -305,10 +305,11 @@ DTOR=".dtors        ${CONSTRUCTING-0} :
     KEEP (*(.dtors))
     ${CONSTRUCTING+${DTOR_END}}
   }"
-STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
+STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
   {
     ${RELOCATING+${USER_LABEL_PREFIX}_stack = .;}
     *(.stack)
+    ${RELOCATING+${STACK_SENTINEL}}
   }"
 
 TEXT_START_ADDR="SEGMENT_START(\"text-segment\", ${TEXT_START_ADDR})"
@@ -641,7 +642,7 @@ EOF
 LARGE_DATA_ADDR=". = SEGMENT_START(\"ldata-segment\", ${LARGE_DATA_ADDR-.});"
 SHLIB_LARGE_DATA_ADDR=". = SEGMENT_START(\"ldata-segment\", ${SHLIB_LARGE_DATA_ADDR-.});"
 
-  cat <<EOF
+cat <<EOF
   ${RELOCATING+${CREATE_SHLIB-${CREATE_PIE-${LARGE_DATA_ADDR}}}}
   ${RELOCATING+${CREATE_SHLIB+${SHLIB_LARGE_DATA_ADDR}}}
   ${RELOCATING+${CREATE_PIE+${SHLIB_LARGE_DATA_ADDR}}}
@@ -651,6 +652,9 @@ SHLIB_LARGE_DATA_ADDR=". = SEGMENT_START(\"ldata-segment\", ${SHLIB_LARGE_DATA_A
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
   ${RELOCATING+${DATA_SEGMENT_END}}
+  ${TINY_DATA_SECTION}
+  ${TINY_BSS_SECTION}
+  ${STACK_ADDR+${STACK}}
 EOF
 
 test -z "${NON_ALLOC_DYN}" || emit_dyn
@@ -671,11 +675,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-
-  ${TINY_DATA_SECTION}
-  ${TINY_BSS_SECTION}
-
-  ${STACK_ADDR+${STACK}}
   ${ATTRS_SECTIONS}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}
index b741f88b493453ba80e815b212344d65f40321e0..dec42b54f556c6c9c8a66aff5350a9f79c0295d4 100644 (file)
@@ -255,10 +255,11 @@ DTOR=".dtors        ${CONSTRUCTING-0} :
     KEEP (*(.dtors))
     ${CONSTRUCTING+${DTOR_END}}
   }"
-STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
+STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
   {
-    ${RELOCATING+_stack = .;}
+    ${RELOCATING+${USER_LABEL_PREFIX}_stack = .;}
     *(.stack)
+    ${RELOCATING+${STACK_SENTINEL}}
   }"
 
 TEXT_START_ADDR="SEGMENT_START(\"text-segment\", ${TEXT_START_ADDR})"
@@ -513,6 +514,9 @@ cat <<EOF
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
   ${RELOCATING+${DATA_SEGMENT_END}}
+  ${TINY_DATA_SECTION}
+  ${TINY_BSS_SECTION}
+  ${STACK_ADDR+${STACK}}
 EOF
 
 if test -n "${NON_ALLOC_DYN}"; then
@@ -545,10 +549,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-  ${TINY_DATA_SECTION}
-  ${TINY_BSS_SECTION}
-
-  ${STACK_ADDR+${STACK}}
   ${ATTRS_SECTIONS}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}
index b6d5956a0e38c474da35159f7a69aeb34217b31a..8fe15b44f9c0473527486a7d20af16ecb32b0cf7 100644 (file)
@@ -317,6 +317,7 @@ cat <<EOF
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+_end = .;}
   ${RELOCATING+PROVIDE (end = .);}
+  ${STACK_ADDR+${STACK}}
 
   /* Stabs debugging sections.  */
   . = ALIGN(0x1000);
@@ -335,7 +336,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-  ${STACK_ADDR+${STACK}}
   ${ATTRS_SECTIONS}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}
index 9d1e139ed15730be26d1b0065508b2760edcc4aa..6754c028c5183253a7f703172d62e41280354d76 100644 (file)
@@ -433,7 +433,6 @@ cat <<EOF
   /* ARC Extension Sections */
   .arcextmap     0 : { *(.gnu.linkonce.arcextmap.*) }
 
-  ${STACK_ADDR+${STACK}}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${STACKNOTE}}
index 6eb9d337a1f018b2eae49a5a86181b155ce791fc..769168e946e19e07063085383f8a0dbe6ae922db 100644 (file)
@@ -272,10 +272,11 @@ DTOR=".dtors        ${CONSTRUCTING-0} :
     KEEP (*(.dtors))
     ${CONSTRUCTING+${DTOR_END}}
   }"
-STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
+STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
   {
-    ${RELOCATING+_stack = .;}
+    ${RELOCATING+${USER_LABEL_PREFIX}_stack = .;}
     *(.stack)
+    ${RELOCATING+${STACK_SENTINEL}}
   }"
 
 # If this is for an embedded system, don't add SIZEOF_HEADERS.
@@ -523,6 +524,9 @@ cat <<EOF
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
   ${RELOCATING+${DATA_SEGMENT_END}}
+  ${TINY_DATA_SECTION}
+  ${TINY_BSS_SECTION}
+  ${STACK_ADDR+${STACK}}
 EOF
 
 if test -n "${NON_ALLOC_DYN}"; then
@@ -555,10 +559,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-  ${TINY_DATA_SECTION}
-  ${TINY_BSS_SECTION}
-
-  ${STACK_ADDR+${STACK}}
   ${ATTRS_SECTIONS}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}
index 10d3d237a0b8cdad20f2ae70cb312e3214ca5f98..b661fc2eadf633a663a8a3ea36a6cfe5c6f1eab5 100644 (file)
@@ -54,7 +54,6 @@
 #      combination of .init sections.
 #      FINI_START, FINI_END - statements just before and just after
 #      combination of .fini sections.
-#      STACK_ADDR - start of a .stack section.
 #      OTHER_SYMBOLS - symbols to place right at the end of the script.
 #      ETEXT_NAME - name of a symbol for the end of the text section,
 #              normally etext.
@@ -242,11 +241,6 @@ DTOR=".dtors     ADDR(.ctors) + SIZEOF(.ctors)    ${CONSTRUCTING-0} :
     KEEP (*(.dtors))
     ${CONSTRUCTING+${DTOR_END}}
   }   /*> INTERNAL_RAM*/ "
-STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
-  {
-    ${RELOCATING+___stack = .;}
-    *(.stack)
-  }"
 
 # If this is for an embedded system, don't add SIZEOF_HEADERS.
 if [ -z "$EMBEDDED" ]; then
@@ -608,6 +602,12 @@ cat <<EOF
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
   ${RELOCATING+${DATA_SEGMENT_END}}
+
+  PROVIDE ( __stack_start_ = ORIGIN(EXTERNAL_DRAM_0) + __PROG_SIZE_FOR_CORE__ * __CORE_NUM_ + __PROG_SIZE_FOR_CORE__  - 0x10) ;
+  .stack ${RELOCATING+__stack_start_} :  {    ${RELOCATING+___stack = .;}    *(.stack)  }
+
+  PROVIDE (  ___heap_start = ORIGIN(EXTERNAL_DRAM_1)  + __HEAP_SIZE_FOR_CORE__ * __CORE_NUM_ );
+  PROVIDE (  ___heap_end =   ORIGIN(EXTERNAL_DRAM_1)  + __HEAP_SIZE_FOR_CORE__ * __CORE_NUM_  + __HEAP_SIZE_FOR_CORE__ - 4 );
 EOF
 
 if test -n "${NON_ALLOC_DYN}"; then
@@ -640,23 +640,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-  ${TINY_DATA_SECTION}
-  ${TINY_BSS_SECTION}
-
-  /*${STACK_ADDR+${STACK}}*/
-  
-  PROVIDE ( __stack_start_ = ORIGIN(EXTERNAL_DRAM_0) + __PROG_SIZE_FOR_CORE__ * __CORE_NUM_ + __PROG_SIZE_FOR_CORE__  - 0x10) ;
-  .stack ${RELOCATING+__stack_start_} :  {    ___stack = .;    *(.stack)  }
-
-  PROVIDE (  ___heap_start = ORIGIN(EXTERNAL_DRAM_1)  + __HEAP_SIZE_FOR_CORE__ * __CORE_NUM_ );
-  /*.heap_start      __heap_start_    :  {    _heap_start_ = .;    *(.heap_start)  }*/
-
-  PROVIDE (  ___heap_end =   ORIGIN(EXTERNAL_DRAM_1)  + __HEAP_SIZE_FOR_CORE__ * __CORE_NUM_  + __HEAP_SIZE_FOR_CORE__ - 4 );
-  
-  
- /* .heap_end      __heap_end_    :  {    _heap_end_ = .;    *(.heap_end)  }*/
-
-
   ${ATTRS_SECTIONS}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}
index de2b28b0bd108d0c9336f4de55ab07d8f28b8194..db4bf57794946c77ad4f0a37c73a9c40c94921ff 100644 (file)
@@ -246,10 +246,11 @@ DTOR=".dtors        ${CONSTRUCTING-0} :
     KEEP (*(.dtors))
     ${CONSTRUCTING+${DTOR_END}}
   }"
-STACK="  .stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
+STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
   {
     ${RELOCATING+${USER_LABEL_PREFIX}_stack = .;}
     *(.stack)
+    ${RELOCATING+${STACK_SENTINEL}}
   }"
 
 TEXT_START_ADDR="SEGMENT_START(\"text-segment\", ${TEXT_START_ADDR})"
@@ -594,6 +595,9 @@ SHLIB_LARGE_DATA_ADDR=". = SEGMENT_START(\"ldata-segment\", ${SHLIB_LARGE_DATA_A
   ${RELOCATING+${OTHER_END_SYMBOLS}}
   ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}}
   ${RELOCATING+${DATA_SEGMENT_END}}
+  ${TINY_DATA_SECTION}
+  ${TINY_BSS_SECTION}
+  ${STACK_ADDR+${STACK}}
 EOF
 
 test -z "${NON_ALLOC_DYN}" || emit_dyn
@@ -614,11 +618,6 @@ EOF
 . $srcdir/scripttempl/DWARF.sc
 
 cat <<EOF
-
-  ${TINY_DATA_SECTION}
-  ${TINY_BSS_SECTION}
-
-  ${STACK_ADDR+${STACK}}
   ${ATTRS_SECTIONS}
   ${OTHER_SECTIONS}
   ${RELOCATING+${OTHER_SYMBOLS}}