diff options
Diffstat (limited to 'ld/scripttempl/i386go32.sc')
-rw-r--r-- | ld/scripttempl/i386go32.sc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/ld/scripttempl/i386go32.sc b/ld/scripttempl/i386go32.sc new file mode 100644 index 0000000..6bd3d09 --- /dev/null +++ b/ld/scripttempl/i386go32.sc @@ -0,0 +1,46 @@ +# Linker script for i386 go32 (DJGPP) + +test -z "$ENTRY" && ENTRY=start +EXE=${CONSTRUCTING+${RELOCATING+-exe}} + +# These are substituted in as variables in order to get '}' in a shell +# conditional expansion. +CTOR='.ctor : { *(.ctor) }' +DTOR='.dtor : { *(.dtor) }' + +cat <<EOF +OUTPUT_FORMAT("${OUTPUT_FORMAT}${EXE}") + +ENTRY(${ENTRY}) + +SECTIONS +{ + .text ${RELOCATING+ ${TARGET_PAGE_SIZE}+SIZEOF_HEADERS} : { + *(.text) + *(.const*) + *(.ro*) + ${RELOCATING+etext = . ; _etext = .}; + ${RELOCATING+. = ALIGN(${SEGMENT_SIZE});} + } + .data ${RELOCATING+ ${DATA_ALIGNMENT}} : { + ${RELOCATING+djgpp_first_ctor = . ; + *(.ctor) + djgpp_last_ctor = . ;} + ${RELOCATING+djgpp_first_dtor = . ; + *(.dtor) + djgpp_last_dtor = . ;} + *(.data) + ${RELOCATING+ edata = . ; _edata = .}; + ${RELOCATING+ . = ALIGN(${SEGMENT_SIZE});} + } + ${CONSTRUCTING+${RELOCATING-$CTOR}} + ${CONSTRUCTING+${RELOCATING-$DTOR}} + .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : + { + *(.bss) + *(COMMON) + ${RELOCATING+ end = . ; _end = .}; + ${RELOCATING+ . = ALIGN(${SEGMENT_SIZE});} + } +} +EOF |