diff options
Diffstat (limited to 'ld/scripttempl/elf.sc')
-rw-r--r-- | ld/scripttempl/elf.sc | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index e65f9a3..d9138bc 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -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}} |