diff options
Diffstat (limited to 'ld/emulparams')
110 files changed, 400 insertions, 599 deletions
diff --git a/ld/emulparams/arcelf.sh b/ld/emulparams/arcelf.sh index b1c9c1760cee..6c524c9a762a 100644 --- a/ld/emulparams/arcelf.sh +++ b/ld/emulparams/arcelf.sh @@ -1,11 +1,12 @@ SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-littlearc" LITTLE_OUTPUT_FORMAT="elf32-littlearc" BIG_OUTPUT_FORMAT="elf32-bigarc" TEXT_START_ADDR=0x0 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x0 ARCH=arc MACHINE= ENTRY=start -#TEMPLATE_NAME=elf32 diff --git a/ld/emulparams/arm_wince_pe.sh b/ld/emulparams/arm_wince_pe.sh new file mode 100644 index 000000000000..2d0019fc47af --- /dev/null +++ b/ld/emulparams/arm_wince_pe.sh @@ -0,0 +1,14 @@ +ARCH=arm +SCRIPT_NAME=pe + +OUTPUT_FORMAT="pei-arm-wince-little" +LITTLE_OUTPUT_FORMAT="pei-arm-wince-little" +BIG_OUTPUT_FORMAT="pei-arm-wince-big" + +RELOCATEABLE_OUTPUT_FORMAT="pe-arm-wince-little" + +TEMPLATE_NAME=pe +ENTRY="WinMainCRTStartup" +SUBSYSTEM=PE_DEF_SUBSYSTEM +INITIAL_SYMBOL_CHAR=\"\" +TARGET_PAGE_SIZE=0x1000 diff --git a/ld/emulparams/armelf.sh b/ld/emulparams/armelf.sh index 6dc50b271fa9..ba9fdbe3ff4a 100644 --- a/ld/emulparams/armelf.sh +++ b/ld/emulparams/armelf.sh @@ -6,12 +6,12 @@ LITTLE_OUTPUT_FORMAT="elf32-littlearm" TEXT_START_ADDR=0x8000 TEMPLATE_NAME=elf32 EXTRA_EM_FILE=armelf -OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)' +OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7) *(.vfp11_veneer)' OTHER_BSS_SYMBOLS='__bss_start__ = .;' OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' OTHER_END_SYMBOLS='__end__ = . ;' -OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) }' +OTHER_SECTIONS='.note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }' +ATTRS_SECTIONS='.ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) }' OTHER_READONLY_SECTIONS=" .ARM.extab ${RELOCATING-0} : { *(.ARM.extab${RELOCATING+* .gnu.linkonce.armextab.*}) } ${RELOCATING+ __exidx_start = .; } @@ -24,7 +24,7 @@ GENERATE_SHLIB_SCRIPT=yes ARCH=arm MACHINE= -MAXPAGESIZE=256 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=_start EMBEDDED=yes diff --git a/ld/emulparams/armelf_linux.sh b/ld/emulparams/armelf_linux.sh index 39b7f656409f..e7f301fd37ca 100644 --- a/ld/emulparams/armelf_linux.sh +++ b/ld/emulparams/armelf_linux.sh @@ -3,15 +3,15 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-littlearm" BIG_OUTPUT_FORMAT="elf32-bigarm" LITTLE_OUTPUT_FORMAT="elf32-littlearm" -MAXPAGESIZE=0x8000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" TEMPLATE_NAME=elf32 EXTRA_EM_FILE=armelf GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes DATA_START_SYMBOLS='__data_start = . ;'; -OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)' +OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7) *(.vfp11_veneer)' OTHER_BSS_SYMBOLS='__bss_start__ = .;' OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' OTHER_END_SYMBOLS='__end__ = . ;' diff --git a/ld/emulparams/armelf_nbsd.sh b/ld/emulparams/armelf_nbsd.sh index 3d9483915356..517cd626594c 100644 --- a/ld/emulparams/armelf_nbsd.sh +++ b/ld/emulparams/armelf_nbsd.sh @@ -1,5 +1,5 @@ . ${srcdir}/emulparams/armelf.sh -MAXPAGESIZE=0x8000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEXT_START_ADDR=0x00008000 TARGET2_TYPE=got-rel diff --git a/ld/emulparams/armelf_vxworks.sh b/ld/emulparams/armelf_vxworks.sh index 7b6445e83082..ca5c907a07b1 100644 --- a/ld/emulparams/armelf_vxworks.sh +++ b/ld/emulparams/armelf_vxworks.sh @@ -2,5 +2,5 @@ OUTPUT_FORMAT="elf32-littlearm-vxworks" BIG_OUTPUT_FORMAT="elf32-bigarm-vxworks" LITTLE_OUTPUT_FORMAT="$OUTPUT_FORMAT" -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" . ${srcdir}/emulparams/vxworks.sh diff --git a/ld/emulparams/armnto.sh b/ld/emulparams/armnto.sh index 64296129dc2c..ae0b4bea5bc9 100644 --- a/ld/emulparams/armnto.sh +++ b/ld/emulparams/armnto.sh @@ -6,7 +6,7 @@ LITTLE_OUTPUT_FORMAT="elf32-littlearm" TEXT_START_ADDR=0x00100000 TEMPLATE_NAME=elf32 EXTRA_EM_FILE=armelf -OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)' +OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7) *(.vfp11_veneer)' OTHER_BSS_SYMBOLS='__bss_start__ = .;' OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;' OTHER_END_SYMBOLS='__end__ = . ;' @@ -17,7 +17,7 @@ GENERATE_SHLIB_SCRIPT=yes ARCH=arm MACHINE= -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=_start diff --git a/ld/emulparams/armsymbian.sh b/ld/emulparams/armsymbian.sh index a52d05b24806..3d7e86495974 100644 --- a/ld/emulparams/armsymbian.sh +++ b/ld/emulparams/armsymbian.sh @@ -19,7 +19,4 @@ OTHER_READONLY_SECTIONS=" ${RELOCATING+ __exidx_end = .; } ${RELOCATING+ .ARM.exidx\$\$Limit = . ; }" -# This value should match ELF_MAXPAGESIZE in BFD. Otherwise, elf.c -# will not place read-write sections in a separate ELF segment from -# the read-only sections. -MAXPAGESIZE=0x8000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/avr1.sh b/ld/emulparams/avr1.sh index 4ccc9ed34f37..7d907fe008d6 100644 --- a/ld/emulparams/avr1.sh +++ b/ld/emulparams/avr1.sh @@ -4,7 +4,8 @@ SCRIPT_NAME=avr OUTPUT_FORMAT="elf32-avr" MAXPAGESIZE=1 EMBEDDED=yes -TEMPLATE_NAME=generic +TEMPLATE_NAME=elf32 TEXT_LENGTH=8K DATA_LENGTH=0 +EXTRA_EM_FILE=avrelf diff --git a/ld/emulparams/avr2.sh b/ld/emulparams/avr2.sh index 9c98ce1dd68c..2bd677bfc8c6 100644 --- a/ld/emulparams/avr2.sh +++ b/ld/emulparams/avr2.sh @@ -4,7 +4,8 @@ SCRIPT_NAME=avr OUTPUT_FORMAT="elf32-avr" MAXPAGESIZE=1 EMBEDDED=yes -TEMPLATE_NAME=generic +TEMPLATE_NAME=elf32 TEXT_LENGTH=8K DATA_LENGTH=0xffa0 +EXTRA_EM_FILE=avrelf diff --git a/ld/emulparams/avr3.sh b/ld/emulparams/avr3.sh index 0434d074dec1..ff559e6d29a2 100644 --- a/ld/emulparams/avr3.sh +++ b/ld/emulparams/avr3.sh @@ -4,7 +4,8 @@ SCRIPT_NAME=avr OUTPUT_FORMAT="elf32-avr" MAXPAGESIZE=1 EMBEDDED=yes -TEMPLATE_NAME=generic +TEMPLATE_NAME=elf32 TEXT_LENGTH=128K DATA_LENGTH=0xffa0 +EXTRA_EM_FILE=avrelf diff --git a/ld/emulparams/avr4.sh b/ld/emulparams/avr4.sh index 33fc83aff511..2f57cb0eb76e 100644 --- a/ld/emulparams/avr4.sh +++ b/ld/emulparams/avr4.sh @@ -4,7 +4,8 @@ SCRIPT_NAME=avr OUTPUT_FORMAT="elf32-avr" MAXPAGESIZE=1 EMBEDDED=yes -TEMPLATE_NAME=generic +TEMPLATE_NAME=elf32 TEXT_LENGTH=8K DATA_LENGTH=0xffa0 +EXTRA_EM_FILE=avrelf diff --git a/ld/emulparams/avr5.sh b/ld/emulparams/avr5.sh index 5b175b82f044..69090beedefa 100644 --- a/ld/emulparams/avr5.sh +++ b/ld/emulparams/avr5.sh @@ -4,7 +4,8 @@ SCRIPT_NAME=avr OUTPUT_FORMAT="elf32-avr" MAXPAGESIZE=1 EMBEDDED=yes -TEMPLATE_NAME=generic +TEMPLATE_NAME=elf32 TEXT_LENGTH=128K DATA_LENGTH=0xffa0 +EXTRA_EM_FILE=avrelf diff --git a/ld/emulparams/avr6.sh b/ld/emulparams/avr6.sh new file mode 100644 index 000000000000..5326488ec474 --- /dev/null +++ b/ld/emulparams/avr6.sh @@ -0,0 +1,11 @@ +ARCH=avr:6 +MACHINE= +SCRIPT_NAME=avr +OUTPUT_FORMAT="elf32-avr" +MAXPAGESIZE=1 +EMBEDDED=yes +TEMPLATE_NAME=elf32 + +TEXT_LENGTH=1024K +DATA_LENGTH=0xffa0 +EXTRA_EM_FILE=avrelf diff --git a/ld/emulparams/bfin.sh b/ld/emulparams/bfin.sh index 5e7adda4dd9b..73e2b946a5a8 100755 --- a/ld/emulparams/bfin.sh +++ b/ld/emulparams/bfin.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-bfin" TEXT_START_ADDR=0x0 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TARGET_PAGE_SIZE=0x1000 NONPAGED_TEXT_START_ADDR=${TEXT_START_ADDR} ARCH=bfin @@ -10,5 +10,4 @@ ENTRY=__start TEMPLATE_NAME=elf32 GENERATE_SHLIB_SCRIPT=yes EMBEDDED=yes -DATA_END_SYMBOLS="__edata = .; PROVIDE (_edata = .);" -END_SYMBOLS="__end = .; PROVIDE (_end = .);" +USER_LABEL_PREFIX=_ diff --git a/ld/emulparams/criself.sh b/ld/emulparams/criself.sh index 0478f345af42..1d374ae44bbc 100644 --- a/ld/emulparams/criself.sh +++ b/ld/emulparams/criself.sh @@ -13,7 +13,12 @@ ALIGNMENT=32 TEXT_START_ADDR=0 # Put crt0 for flash/eprom etc. in this section. -INITIAL_READONLY_SECTIONS='.startup : { KEEP(*(.startup)) }' +INITIAL_READONLY_SECTIONS= +if test -z "${CREATE_SHLIB}"; then + INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }" +fi +INITIAL_READONLY_SECTIONS="${INITIAL_READONLY_SECTIONS} + .startup : { KEEP(*(.startup)) }" # Setting __Stext to . in TEXT_START_SYMBOLS doesn't get what we want # most of the time, which is the start of all read-only sections; diff --git a/ld/emulparams/crislinux.sh b/ld/emulparams/crislinux.sh index 98d12f3929b8..e41024c9a7af 100644 --- a/ld/emulparams/crislinux.sh +++ b/ld/emulparams/crislinux.sh @@ -14,7 +14,7 @@ GENERATE_SHLIB_SCRIPT=yes # Is this high enough and low enough? TEXT_START_ADDR=0x80000 -MAXPAGESIZE=8192 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" # We don't do the hoops through DEFINED to provide [_]*start, as it # doesn't work with --gc-sections, and the start-name is pretty fixed diff --git a/ld/emulparams/d30v_e.sh b/ld/emulparams/d30v_e.sh index a8ab5a25dbd1..617a048c898d 100644 --- a/ld/emulparams/d30v_e.sh +++ b/ld/emulparams/d30v_e.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=elfd30v +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-d30v" TEXT_START_ADDR=0x00000000 DATA_START_ADDR=0x20000000 diff --git a/ld/emulparams/d30v_o.sh b/ld/emulparams/d30v_o.sh index 6cbcb42abdbd..79ba83ba7e98 100644 --- a/ld/emulparams/d30v_o.sh +++ b/ld/emulparams/d30v_o.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=elfd30v +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-d30v" TEXT_START_ADDR=0x00000000 DATA_START_ADDR=0x20000000 diff --git a/ld/emulparams/d30velf.sh b/ld/emulparams/d30velf.sh index 949de78655a7..ab0d70f6bfc7 100644 --- a/ld/emulparams/d30velf.sh +++ b/ld/emulparams/d30velf.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=elfd30v +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-d30v" TEXT_START_ADDR=0x00000000 DATA_START_ADDR=0x20000000 diff --git a/ld/emulparams/elf32_dlx.sh b/ld/emulparams/elf32_dlx.sh index d3ff81c34145..525b209209d2 100644 --- a/ld/emulparams/elf32_dlx.sh +++ b/ld/emulparams/elf32_dlx.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=dlx TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-dlx" ARCH=dlx MACHINE= diff --git a/ld/emulparams/elf32_i860.sh b/ld/emulparams/elf32_i860.sh index 6769fa54d262..589067f818b9 100644 --- a/ld/emulparams/elf32_i860.sh +++ b/ld/emulparams/elf32_i860.sh @@ -1,9 +1,11 @@ # A work in progress... SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-i860-little" BIG_OUTPUT_FORMAT="elf32-i860" LITTLE_OUTPUT_FORMAT="elf32-i860-little" TEXT_START_ADDR=0 PAGE_SIZE=0x1000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=i860 diff --git a/ld/emulparams/elf32_i960.sh b/ld/emulparams/elf32_i960.sh index 10ec3fa573b7..1ef729297ab1 100644 --- a/ld/emulparams/elf32_i960.sh +++ b/ld/emulparams/elf32_i960.sh @@ -5,4 +5,4 @@ ARCH=i960 MACHINE= TEXT_START_ADDR=0 EMBEDDED=yes -MAXPAGESIZE=0x2000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/elf32_sparc.sh b/ld/emulparams/elf32_sparc.sh index af23252949ff..d09d9dc7edb9 100644 --- a/ld/emulparams/elf32_sparc.sh +++ b/ld/emulparams/elf32_sparc.sh @@ -1,8 +1,11 @@ +# If you change this file, please also look at files which source this one: +# elf32_sparc_vxworks.sh + SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sparc" TEXT_START_ADDR=0x10000 -MAXPAGESIZE=0x10000 -COMMONPAGESIZE=0x2000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x10000 ALIGNMENT=8 ARCH=sparc diff --git a/ld/emulparams/elf32_spu.sh b/ld/emulparams/elf32_spu.sh new file mode 100644 index 000000000000..4af608cb2e17 --- /dev/null +++ b/ld/emulparams/elf32_spu.sh @@ -0,0 +1,20 @@ +SCRIPT_NAME=elf +TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=spuelf +OUTPUT_FORMAT="elf32-spu" +ARCH=spu +MACHINE= +ALIGNMENT=16 +TEXT_START_ADDR=0 +INITIAL_READONLY_SECTIONS='.interrupt : { KEEP(*(.interrupt)) }' +if test -z "${CREATE_SHLIB}"; then + INITIAL_READONLY_SECTIONS="${INITIAL_READONLY_SECTIONS} + .interp ${RELOCATING-0} : { *(.interp) }" +fi +OTHER_END_SYMBOLS='PROVIDE (__stack = 0x3fff0);' +NO_SMALL_DATA=true +EMBEDDED=true +MAXPAGESIZE=0x80 +DATA_ADDR="ALIGN(${MAXPAGESIZE})" +OTHER_BSS_SECTIONS=".toe ALIGN(128) : { *(.toe) } = 0" +OTHER_SECTIONS=".note.spu_name 0 : { KEEP(*(.note.spu_name)) }" diff --git a/ld/emulparams/elf32am33lin.sh b/ld/emulparams/elf32am33lin.sh index f8b3a8906217..31dbc70b882d 100644 --- a/ld/emulparams/elf32am33lin.sh +++ b/ld/emulparams/elf32am33lin.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-am33lin" TEXT_START_ADDR=0x8000000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x8000000 ARCH=mn10300 MACHINE= diff --git a/ld/emulparams/elf32bfinfd.sh b/ld/emulparams/elf32bfinfd.sh index 9047c6a750f0..19ec748b7fb9 100644 --- a/ld/emulparams/elf32bfinfd.sh +++ b/ld/emulparams/elf32bfinfd.sh @@ -1,7 +1,7 @@ . ${srcdir}/emulparams/bfin.sh unset STACK_ADDR OUTPUT_FORMAT="elf32-bfinfdpic" -MAXPAGESIZE=0x4000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEMPLATE_NAME=elf32 GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes diff --git a/ld/emulparams/elf32bmip.sh b/ld/emulparams/elf32bmip.sh index 614856573faa..ce33674cf93c 100644 --- a/ld/emulparams/elf32bmip.sh +++ b/ld/emulparams/elf32bmip.sh @@ -1,5 +1,6 @@ # If you change this file, please also look at files which source this one: # elf32b4300.sh elf32bsmip.sh elf32btsmip.sh elf32ebmip.sh elf32lmip.sh +# elf32ebmipvxworks.sh elf32elmipvxworks.sh SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-bigmips" @@ -7,15 +8,26 @@ BIG_OUTPUT_FORMAT="elf32-bigmips" LITTLE_OUTPUT_FORMAT="elf32-littlemips" TEXT_START_ADDR=0x0400000 test -n "${EMBEDDED}" || DATA_ADDR=0x10000000 -MAXPAGESIZE=0x40000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x0400000 SHLIB_TEXT_START_ADDR=0x5ffe0000 TEXT_DYNAMIC= -INITIAL_READONLY_SECTIONS=" +INITIAL_READONLY_SECTIONS= +if test -z "${CREATE_SHLIB}"; then + INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }" +fi +INITIAL_READONLY_SECTIONS="${INITIAL_READONLY_SECTIONS} .reginfo ${RELOCATING-0} : { *(.reginfo) } " OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)' +# Unlike most targets, the MIPS backend puts all dynamic relocations +# in a single dynobj section, which it also calls ".rel.dyn". It does +# this so that it can easily sort all dynamic relocations before the +# output section has been populated. +OTHER_GOT_RELOC_SECTIONS=" + .rel.dyn ${RELOCATING-0} : { *(.rel.dyn) } +" # If the output has a GOT section, there must be exactly 0x7ff0 bytes # between .got and _gp. The ". = ." below stops the orphan code from # inserting other sections between the assignment to _gp and the start @@ -46,5 +58,6 @@ OTHER_SECTIONS=' ARCH=mips MACHINE= TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=mipself GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes diff --git a/ld/emulparams/elf32bmipn32-defs.sh b/ld/emulparams/elf32bmipn32-defs.sh index b81ac49ec305..49d2f8545da5 100644 --- a/ld/emulparams/elf32bmipn32-defs.sh +++ b/ld/emulparams/elf32bmipn32-defs.sh @@ -11,6 +11,7 @@ BIG_OUTPUT_FORMAT="elf32-bigmips" LITTLE_OUTPUT_FORMAT="elf32-littlemips" TEMPLATE_NAME=elf32 +EXTRA_EM_FILE=mipself case "$EMULATION_NAME" in elf32*n32*) ELFSIZE=32 ;; @@ -33,9 +34,16 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes TEXT_START_ADDR=0x10000000 -MAXPAGESIZE=0x100000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=__start +# Unlike most targets, the MIPS backend puts all dynamic relocations +# in a single dynobj section, which it also calls ".rel.dyn". It does +# this so that it can easily sort all dynamic relocations before the +# output section has been populated. +OTHER_GOT_RELOC_SECTIONS=" + .rel.dyn ${RELOCATING-0} : { *(.rel.dyn) } +" # GOT-related settings. # If the output has a GOT section, there must be exactly 0x7ff0 bytes # between .got and _gp. The ". = ." below stops the orphan code from @@ -56,7 +64,12 @@ TEXT_START_SYMBOLS='_ftext = . ;' DATA_START_SYMBOLS='_fdata = . ;' OTHER_BSS_SYMBOLS='_fbss = .;' -INITIAL_READONLY_SECTIONS=".MIPS.options : { *(.MIPS.options) }" +INITIAL_READONLY_SECTIONS= +if test -z "${CREATE_SHLIB}"; then + INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }" +fi +INITIAL_READONLY_SECTIONS="${INITIAL_READONLY_SECTIONS} + .reginfo ${RELOCATING-0} : { *(.reginfo) }" # Discard any .MIPS.content* or .MIPS.events* sections. The linker # doesn't know how to adjust them. OTHER_SECTIONS="/DISCARD/ : { *(.MIPS.content*) *(.MIPS.events*) }" diff --git a/ld/emulparams/elf32bmipn32.sh b/ld/emulparams/elf32bmipn32.sh index a320eb23ed07..c26b6b3dcb2e 100755 --- a/ld/emulparams/elf32bmipn32.sh +++ b/ld/emulparams/elf32bmipn32.sh @@ -3,7 +3,7 @@ OUTPUT_FORMAT="elf32-nbigmips" BIG_OUTPUT_FORMAT="elf32-nbigmips" LITTLE_OUTPUT_FORMAT="elf32-nlittlemips" SHLIB_TEXT_START_ADDR=0x5ffe0000 -COMMONPAGESIZE=0x1000 +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" # IRIX6 defines these symbols. 0x34 is the size of the ELF header. EXECUTABLE_SYMBOLS=" diff --git a/ld/emulparams/elf32btsmipn32.sh b/ld/emulparams/elf32btsmipn32.sh index 5ca6797e52a9..10c5565cc432 100644 --- a/ld/emulparams/elf32btsmipn32.sh +++ b/ld/emulparams/elf32btsmipn32.sh @@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf32-ntradbigmips" BIG_OUTPUT_FORMAT="elf32-ntradbigmips" LITTLE_OUTPUT_FORMAT="elf32-ntradlittlemips" -COMMONPAGESIZE=0x1000 +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" # Magic sections. OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)' diff --git a/ld/emulparams/elf32cr16.sh b/ld/emulparams/elf32cr16.sh new file mode 100644 index 000000000000..756d02bf568c --- /dev/null +++ b/ld/emulparams/elf32cr16.sh @@ -0,0 +1,6 @@ +SCRIPT_NAME=elf32cr16 +TEMPLATE_NAME=elf32 +OUTPUT_FORMAT="elf32-cr16" +ARCH=cr16 +ENTRY=_start +EXTRA_EM_FILE=cr16elf diff --git a/ld/emulparams/elf32ebmipvxworks.sh b/ld/emulparams/elf32ebmipvxworks.sh index 4145488ae28e..6d1cc3c96ca1 100644 --- a/ld/emulparams/elf32ebmipvxworks.sh +++ b/ld/emulparams/elf32ebmipvxworks.sh @@ -3,6 +3,15 @@ OUTPUT_FORMAT="elf32-bigmips-vxworks" BIG_OUTPUT_FORMAT="elf32-bigmips-vxworks" LITTLE_OUTPUT_FORMAT="elf32-littlemips-vxworks" +# VxWorks .rdata sections are normally read-only, but one of the objects +# in libdl.a (the dynamic loader) is actually read-write. Explicitly +# place the section in the appropriate segment for its flags. +OTHER_READONLY_SECTIONS=" + .rdata ${RELOCATING-0} : ONLY_IF_RO { *(.rdata) } +" +OTHER_READWRITE_SECTIONS=" + .rdata ${RELOCATING-0} : ONLY_IF_RW { *(.rdata) } +" unset OTHER_GOT_SYMBOLS SHLIB_TEXT_START_ADDR=0 unset TEXT_DYNAMIC diff --git a/ld/emulparams/elf32fr30.sh b/ld/emulparams/elf32fr30.sh index 069c623cd30f..d078155909a1 100755 --- a/ld/emulparams/elf32fr30.sh +++ b/ld/emulparams/elf32fr30.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-fr30" TEXT_START_ADDR=0x10000 ARCH=fr30 diff --git a/ld/emulparams/elf32frv.sh b/ld/emulparams/elf32frv.sh index 16773b716cad..903707243f7d 100755 --- a/ld/emulparams/elf32frv.sh +++ b/ld/emulparams/elf32frv.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-frv" TEXT_START_ADDR=0x10000 ARCH=frv diff --git a/ld/emulparams/elf32frvfd.sh b/ld/emulparams/elf32frvfd.sh index 42b36f7d63d6..c17466962655 100644 --- a/ld/emulparams/elf32frvfd.sh +++ b/ld/emulparams/elf32frvfd.sh @@ -1,8 +1,9 @@ . ${srcdir}/emulparams/elf32frv.sh unset STACK_ADDR OUTPUT_FORMAT="elf32-frvfdpic" -MAXPAGESIZE=0x4000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEMPLATE_NAME=elf32 +unset EXTRA_EM_FILE GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes EMBEDDED= # This gets us program headers mapped as part of the text segment. diff --git a/ld/emulparams/elf32i370.sh b/ld/emulparams/elf32i370.sh index d9d5d85617a9..425238c2afcc 100644 --- a/ld/emulparams/elf32i370.sh +++ b/ld/emulparams/elf32i370.sh @@ -3,6 +3,6 @@ GENERATE_SHLIB_SCRIPT=yes SCRIPT_NAME=elfi370 OUTPUT_FORMAT="elf32-i370" TEXT_START_ADDR=0x01800000 -MAXPAGESIZE=0x40000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=i370 MACHINE= diff --git a/ld/emulparams/elf32iq10.sh b/ld/emulparams/elf32iq10.sh index 1721f5228d2f..2c0d75f100ee 100755 --- a/ld/emulparams/elf32iq10.sh +++ b/ld/emulparams/elf32iq10.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=iq2000 +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-iq2000" DATA_ADDR=0x1000 TEXT_START_ADDR=0x80000000 diff --git a/ld/emulparams/elf32iq2000.sh b/ld/emulparams/elf32iq2000.sh index 18f239da37df..a21276ac22a2 100755 --- a/ld/emulparams/elf32iq2000.sh +++ b/ld/emulparams/elf32iq2000.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=iq2000 +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-iq2000" DATA_ADDR=0x1000 TEXT_START_ADDR=0x80000000 diff --git a/ld/emulparams/elf32lppcnto.sh b/ld/emulparams/elf32lppcnto.sh index 1f1905542b23..c45260d0236e 100644 --- a/ld/emulparams/elf32lppcnto.sh +++ b/ld/emulparams/elf32lppcnto.sh @@ -1,5 +1,5 @@ . ${srcdir}/emulparams/elf32ppc.sh OUTPUT_FORMAT="elf32-powerpcle" -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEXT_START_ADDR=0x48040000 diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh index 930a9c3c8bcd..6d9f2d6a992c 100644 --- a/ld/emulparams/elf32mcore.sh +++ b/ld/emulparams/elf32mcore.sh @@ -4,7 +4,7 @@ BIG_OUTPUT_FORMAT="elf32-mcore-big" LITTLE_OUTPUT_FORMAT="elf32-mcore-little" PAGE_SIZE=0x1000 TARGET_PAGE_SIZE=0x400 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEXT_START_ADDR=0 NONPAGED_TEXT_START_ADDR=0 ARCH=mcore diff --git a/ld/emulparams/elf32mep.sh b/ld/emulparams/elf32mep.sh new file mode 100755 index 000000000000..886ca4728515 --- /dev/null +++ b/ld/emulparams/elf32mep.sh @@ -0,0 +1,55 @@ +MACHINE= +SCRIPT_NAME=mep +OUTPUT_FORMAT="elf32-mep" +TEXT_START_ADDR=0x1000 +ARCH=mep +MAXPAGESIZE=256 +ENTRY=_start +EMBEDDED=yes +TEMPLATE_NAME=elf32 +DATA_START_SYMBOLS='__data_start = . ;' +OTHER_GOT_SYMBOLS=' + . = ALIGN(4); + __sdabase = . + 0x8000; + .srodata : { *(.srodata) *(.srodata.*) *(.gnu.linkonce.srd.*) } +' +OTHER_SDATA_SECTIONS=' + PROVIDE (__sdabase = .); + __assert_tiny_size = ASSERT ((. < __sdabase) || ((. - __sdabase) <= 0x8000), + "tiny section overflow"); +' +OTHER_READONLY_SECTIONS=' + __stack = 0x001ffff0; + __stack_size = 0x100000; + __stack0 = (__stack - (0 * (__stack_size / 1)) + 15) / 16 * 16; + + .rostacktab : + { + /* Emit a table describing the location of the different stacks. + Only 1 processor in the default configuration. */ + . = ALIGN(4); + __stack_table = .; + LONG (__stack0); + } +' +OTHER_END_SYMBOLS=' + PROVIDE (__heap = _end); + PROVIDE (__heap_end = 0); +' +OTHER_TEXT_SECTIONS=' + *(.ftext) *(.ftext.*) *(.gnu.linkonce.ft.*) + . = ALIGN(8); + *(.vftext) *(.vftext.*) *(.gnu.linkonce.vf.*) + *(.frodata) *(.frodata.*) *(.gnu.linkonce.frd.*) +' +OTHER_READWRITE_SECTIONS=' + . = ALIGN(4); + __tpbase = .; + .based : { *(.based) *(.based.*) *(.gnu.linkonce.based.*) } + __assert_based_size = ASSERT ((. - __tpbase) <= 0x80, "based section overflow"); + .far : { *(.far) *(.far.*) *(.gnu.linkonce.far.*) } +' +OTHER_BSS_SECTIONS=' + __assert_near_size = ASSERT (. <= 0x1000000, "near section overflow"); + .farbss : { PROVIDE (__farbss_start = .); *(.farbss) *(.farbss.*) PROVIDE (__farbss_end = .); } +' diff --git a/ld/emulparams/elf32mt.sh b/ld/emulparams/elf32mt.sh index 667979e65bb9..04fc1ed83d85 100644 --- a/ld/emulparams/elf32mt.sh +++ b/ld/emulparams/elf32mt.sh @@ -1,5 +1,7 @@ MACHINE= SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-mt" # See also `include/elf/mt.h' TEXT_START_ADDR=0x2000 diff --git a/ld/emulparams/elf32openrisc.sh b/ld/emulparams/elf32openrisc.sh index a65dcd89c57e..53e88ddf86ad 100755 --- a/ld/emulparams/elf32openrisc.sh +++ b/ld/emulparams/elf32openrisc.sh @@ -3,7 +3,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-openrisc" TEXT_START_ADDR=0x10000 ARCH=openrisc -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=_start EMBEDDED=yes NOP=0x15000000 diff --git a/ld/emulparams/elf32ppc.sh b/ld/emulparams/elf32ppc.sh index 587b8d3aca0a..68962d7325d7 100644 --- a/ld/emulparams/elf32ppc.sh +++ b/ld/emulparams/elf32ppc.sh @@ -1,5 +1,6 @@ # If you change this file, please also look at files which source this one: -# elf32lppc.sh elf32ppclinux.sh elf32ppcsim.sh +# elf32lppcnto.sh elf32lppc.sh elf32ppclinux.sh elf32ppcnto.sh +# elf32ppcsim.sh . ${srcdir}/emulparams/elf32ppccommon.sh # Yes, we want duplicate .got and .plt sections. The linker chooses the diff --git a/ld/emulparams/elf32ppccommon.sh b/ld/emulparams/elf32ppccommon.sh index b5fbc8d8e898..1a12890b0639 100644 --- a/ld/emulparams/elf32ppccommon.sh +++ b/ld/emulparams/elf32ppccommon.sh @@ -6,8 +6,8 @@ GENERATE_PIE_SCRIPT=yes SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-powerpc" TEXT_START_ADDR=0x01800000 -MAXPAGESIZE=0x10000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" ARCH=powerpc:common MACHINE= EXECUTABLE_SYMBOLS='PROVIDE (__stack = 0); PROVIDE (___stack = 0);' diff --git a/ld/emulparams/elf32ppcnto.sh b/ld/emulparams/elf32ppcnto.sh index dd4a79cb91a8..d0b3e3dfb60f 100644 --- a/ld/emulparams/elf32ppcnto.sh +++ b/ld/emulparams/elf32ppcnto.sh @@ -1,4 +1,4 @@ . ${srcdir}/emulparams/elf32ppc.sh -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEXT_START_ADDR=0x48040000 diff --git a/ld/emulparams/elf32ppcwindiss.sh b/ld/emulparams/elf32ppcwindiss.sh index c0e6138c29f7..d217de94007c 100644 --- a/ld/emulparams/elf32ppcwindiss.sh +++ b/ld/emulparams/elf32ppcwindiss.sh @@ -4,7 +4,7 @@ OUTPUT_FORMAT="elf32-powerpc" ARCH=powerpc MACHINE= EMBEDDED=yes -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" # The data below is taken from the windiss.dld linker script that comes with # the Diab linker. diff --git a/ld/emulparams/elf32vax.sh b/ld/emulparams/elf32vax.sh index 56bbab7deb38..42e846f22e2b 100644 --- a/ld/emulparams/elf32vax.sh +++ b/ld/emulparams/elf32vax.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-vax" TEXT_START_ADDR=0x10000 -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x1000 ARCH=vax MACHINE= diff --git a/ld/emulparams/elf32xc16x.sh b/ld/emulparams/elf32xc16x.sh index 808feeddc47a..f88ccee8177a 100644 --- a/ld/emulparams/elf32xc16x.sh +++ b/ld/emulparams/elf32xc16x.sh @@ -3,6 +3,6 @@ TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf32-xc16x" TEXT_START_ADDR=0x00400 ARCH=xc16x -MAXPAGESIZE=256 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=_start EMBEDDED=yes diff --git a/ld/emulparams/elf32xc16xl.sh b/ld/emulparams/elf32xc16xl.sh index 333f2a6fd78a..14eb24bec81b 100644 --- a/ld/emulparams/elf32xc16xl.sh +++ b/ld/emulparams/elf32xc16xl.sh @@ -3,6 +3,6 @@ TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf32-xc16x" TEXT_START_ADDR=0xc00300 ARCH=xc16x:xc16xl -MAXPAGESIZE=256 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=_start EMBEDDED=yes diff --git a/ld/emulparams/elf32xc16xs.sh b/ld/emulparams/elf32xc16xs.sh index df36f4109771..2454963a970b 100644 --- a/ld/emulparams/elf32xc16xs.sh +++ b/ld/emulparams/elf32xc16xs.sh @@ -3,6 +3,6 @@ TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf32-xc16x" TEXT_START_ADDR=0xc00300 ARCH=xc16x:xc16xs -MAXPAGESIZE=256 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=_start EMBEDDED=yes diff --git a/ld/emulparams/elf32xtensa.sh b/ld/emulparams/elf32xtensa.sh index c4b13b9a511f..185da49dfbbc 100644 --- a/ld/emulparams/elf32xtensa.sh +++ b/ld/emulparams/elf32xtensa.sh @@ -1,7 +1,3 @@ -# First set some configuration-specific variables -. ${srcdir}/emulparams/xtensa-config.sh - -# See genscripts.sh and ../scripttempl/elfxtensa.sc for the meaning of these. SCRIPT_NAME=elfxtensa TEMPLATE_NAME=elf32 EXTRA_EM_FILE=xtensaelf @@ -10,26 +6,40 @@ BIG_OUTPUT_FORMAT="elf32-xtensa-be" LITTLE_OUTPUT_FORMAT="elf32-xtensa-le" TEXT_START_ADDR=0x400000 NONPAGED_TEXT_START_ADDR=0x400000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=xtensa MACHINE= GENERATE_SHLIB_SCRIPT=yes +GENERATE_PIE_SCRIPT=yes GENERATE_COMBRELOC_SCRIPT=yes NO_SMALL_DATA=yes +TEXT_PLT=yes PLT="/* .plt* sections are embedded in .text */" GOT=".got ${RELOCATING-0} : { *(.got) }" OTHER_READONLY_SECTIONS=" .got.loc ${RELOCATING-0} : { *(.got.loc) } - .xt_except_table ${RELOCATING-0} : { KEEP (*(.xt_except_table)) } + .xt_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.xt_except_table${RELOCATING+ .xt_except_table.* .gnu.linkonce.e.*})) } +" +OTHER_RELRO_SECTIONS=" + .xt_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.xt_except_table${RELOCATING+ .xt_except_table.* .gnu.linkonce.e.*})) } " OTHER_READWRITE_SECTIONS=" .xt_except_desc ${RELOCATING-0} : { - *(.xt_except_desc${RELOCATING+ .gnu.linkonce.h.*}) + *(.xt_except_desc${RELOCATING+ .xt_except_desc.* .gnu.linkonce.h.*}) ${RELOCATING+*(.xt_except_desc_end)} } " +OTHER_SDATA_SECTIONS=" + .lit4 ${RELOCATING-0} : + { + ${RELOCATING+PROVIDE (_lit4_start = .);} + *(.lit4${RELOCATING+ .lit4.* .gnu.linkonce.lit4.*}) + ${RELOCATING+PROVIDE (_lit4_end = .);} + } +" OTHER_SECTIONS=" - .xt.lit 0 : { *(.xt.lit${RELOCATING+ .xt.lit.* .gnu.linkonce.p.*}) } - .xt.insn 0 : { *(.xt.insn${RELOCATING+ .gnu.linkonce.x.*}) } - .xt.prop 0 : { *(.xt.prop${RELOCATING+ .gnu.linkonce.prop.*}) } + .xt.lit 0 : { KEEP (*(.xt.lit${RELOCATING+ .xt.lit.* .gnu.linkonce.p.*})) } + .xt.insn 0 : { KEEP (*(.xt.insn${RELOCATING+ .gnu.linkonce.x.*})) } + .xt.prop 0 : { KEEP (*(.xt.prop${RELOCATING+ .xt.prop.* .gnu.linkonce.prop.*})) } " diff --git a/ld/emulparams/elf64_aix.sh b/ld/emulparams/elf64_aix.sh index 738fea94ff03..39325f577201 100644 --- a/ld/emulparams/elf64_aix.sh +++ b/ld/emulparams/elf64_aix.sh @@ -5,7 +5,7 @@ TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf64-ia64-aix-little" ARCH=ia64 MACHINE= -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEXT_START_ADDR="0x10000000" DATA_ADDR="ALIGN (0x10000000) + (. & (${MAXPAGESIZE} - 1))" GENERATE_SHLIB_SCRIPT=yes diff --git a/ld/emulparams/elf64_ia64.sh b/ld/emulparams/elf64_ia64.sh index c5be56e8508f..7e5e54d391ed 100644 --- a/ld/emulparams/elf64_ia64.sh +++ b/ld/emulparams/elf64_ia64.sh @@ -6,12 +6,12 @@ EXTRA_EM_FILE=ia64elf OUTPUT_FORMAT="elf64-ia64-little" ARCH=ia64 MACHINE= -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" # FIXME: It interferes with linker relaxation. Disable it until it is # fixed. if test "0" = "1" -a -n "$CREATE_SHLIB"; then # Optimize shared libraries for 16K page size - COMMONPAGESIZE=0x4000 + COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" fi TEXT_START_ADDR="0x4000000000000000" DATA_ADDR="0x6000000000000000 + (. & (${MAXPAGESIZE} - 1))" diff --git a/ld/emulparams/elf64_s390.sh b/ld/emulparams/elf64_s390.sh index ea75d319838b..a26bbb63e0de 100644 --- a/ld/emulparams/elf64_s390.sh +++ b/ld/emulparams/elf64_s390.sh @@ -2,8 +2,8 @@ SCRIPT_NAME=elf ELFSIZE=64 OUTPUT_FORMAT="elf64-s390" TEXT_START_ADDR=0x80000000 -MAXPAGESIZE=0x1000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x80000000 ARCH="s390:64-bit" MACHINE= diff --git a/ld/emulparams/elf64_sparc.sh b/ld/emulparams/elf64_sparc.sh index 0c0f5d89e3d3..cef4bff96e1b 100644 --- a/ld/emulparams/elf64_sparc.sh +++ b/ld/emulparams/elf64_sparc.sh @@ -2,8 +2,8 @@ SCRIPT_NAME=elf ELFSIZE=64 TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf64-sparc" -MAXPAGESIZE=0x100000 -COMMONPAGESIZE=0x2000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" ARCH="sparc:v9" MACHINE= DATA_PLT= diff --git a/ld/emulparams/elf64_sparc_fbsd.sh b/ld/emulparams/elf64_sparc_fbsd.sh index 232a32143b0c..21d13ab49853 100644 --- a/ld/emulparams/elf64_sparc_fbsd.sh +++ b/ld/emulparams/elf64_sparc_fbsd.sh @@ -1,2 +1,4 @@ . ${srcdir}/emulparams/elf64_sparc.sh . ${srcdir}/emulparams/elf_fbsd.sh + +OUTPUT_FORMAT="elf64-sparc-freebsd" diff --git a/ld/emulparams/elf64alpha.sh b/ld/emulparams/elf64alpha.sh index 47a0bb009c77..2c3b7d4dd2b6 100644 --- a/ld/emulparams/elf64alpha.sh +++ b/ld/emulparams/elf64alpha.sh @@ -5,8 +5,8 @@ TEMPLATE_NAME=elf32 EXTRA_EM_FILE=alphaelf OUTPUT_FORMAT="elf64-alpha" TEXT_START_ADDR="0x120000000" -MAXPAGESIZE=0x10000 -COMMONPAGESIZE=0x2000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR="0x120000000" ARCH=alpha MACHINE= diff --git a/ld/emulparams/elf64bmip-defs.sh b/ld/emulparams/elf64bmip-defs.sh new file mode 100644 index 000000000000..110f8929de1a --- /dev/null +++ b/ld/emulparams/elf64bmip-defs.sh @@ -0,0 +1,3 @@ +. ${srcdir}/emulparams/elf32bmipn32-defs.sh +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" +INITIAL_READONLY_SECTIONS=".MIPS.options : { *(.MIPS.options) }" diff --git a/ld/emulparams/elf64bmip.sh b/ld/emulparams/elf64bmip.sh index a4ce6d49519e..0df65285f5d1 100755 --- a/ld/emulparams/elf64bmip.sh +++ b/ld/emulparams/elf64bmip.sh @@ -1,4 +1,4 @@ -. ${srcdir}/emulparams/elf32bmipn32-defs.sh +. ${srcdir}/emulparams/elf64bmip-defs.sh OUTPUT_FORMAT="elf64-bigmips" BIG_OUTPUT_FORMAT="elf64-bigmips" LITTLE_OUTPUT_FORMAT="elf64-littlemips" diff --git a/ld/emulparams/elf64btsmip.sh b/ld/emulparams/elf64btsmip.sh index 23a20c7b8b02..b9e80bb17b3f 100644 --- a/ld/emulparams/elf64btsmip.sh +++ b/ld/emulparams/elf64btsmip.sh @@ -1,7 +1,7 @@ # If you change this file, please also look at files which source this one: # elf64ltsmip.sh -. ${srcdir}/emulparams/elf32bmipn32-defs.sh +. ${srcdir}/emulparams/elf64bmip-defs.sh OUTPUT_FORMAT="elf64-tradbigmips" BIG_OUTPUT_FORMAT="elf64-tradbigmips" LITTLE_OUTPUT_FORMAT="elf64-tradlittlemips" diff --git a/ld/emulparams/elf64hppa.sh b/ld/emulparams/elf64hppa.sh index 26c3153f069b..b0a1fdc5008a 100755 --- a/ld/emulparams/elf64hppa.sh +++ b/ld/emulparams/elf64hppa.sh @@ -4,7 +4,7 @@ LIB_PATH="=/usr/lib/pa20_64:=/opt/langtools/lib/pa20_64" TEXT_START_ADDR=0x4000000000001000 DATA_ADDR=0x8000000000001000 TARGET_PAGE_SIZE=4096 -MAXPAGESIZE=4096 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" # The HP dynamic linker actually requires you set the start of text and # data to some reasonable value. Of course nobody knows what reasoanble diff --git a/ld/emulparams/elf64mmix.sh b/ld/emulparams/elf64mmix.sh index 22b207fce164..7f867fb8cff4 100644 --- a/ld/emulparams/elf64mmix.sh +++ b/ld/emulparams/elf64mmix.sh @@ -12,11 +12,7 @@ TEXT_START_ADDR='DEFINED (__.MMIX.start..text) ? __.MMIX.start..text : 0' TEXT_BASE_ADDRESS=$TEXT_START_ADDR DATA_ADDR='DEFINED (__.MMIX.start..data) ? __.MMIX.start..data : 0x2000000000000000' -# Setting this anywhere near the quite reasonable value of 0x10000 -# causes the binary to bloat to reach page alignment between segments. -# Let's just have a 256-byte default page alignment. Having some -# alignment at all gives a warm feeling but not much more. -MAXPAGESIZE=256 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=mmix MACHINE= COMPILE_IN=yes diff --git a/ld/emulparams/elf64ppc.sh b/ld/emulparams/elf64ppc.sh index 8285723fba01..2fecba8c3ebe 100644 --- a/ld/emulparams/elf64ppc.sh +++ b/ld/emulparams/elf64ppc.sh @@ -7,8 +7,8 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf64-powerpc" TEXT_START_ADDR=0x10000000 #SEGMENT_SIZE=0x10000000 -MAXPAGESIZE=0x10000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" ARCH=powerpc:common64 MACHINE= NOP=0x60000000 @@ -31,7 +31,8 @@ OTHER_GOT_RELOC_SECTIONS=" .rela.toc ${RELOCATING-0} : { *(.rela.toc) }" OTHER_READWRITE_SECTIONS=" .toc1 ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.toc1) } - .opd ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { KEEP (*(.opd)) }" + .opd ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { KEEP (*(.opd)) } + .branch_lt ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.branch_lt) }" # Treat a host that matches the target with the possible exception of "64" # in the name as if it were native. diff --git a/ld/emulparams/elf_i386.sh b/ld/emulparams/elf_i386.sh index af7010b6836e..bdeaebb30849 100644 --- a/ld/emulparams/elf_i386.sh +++ b/ld/emulparams/elf_i386.sh @@ -1,8 +1,8 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" TEXT_START_ADDR=0x08048000 -MAXPAGESIZE=0x1000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x08048000 ARCH=i386 MACHINE= diff --git a/ld/emulparams/elf_i386_be.sh b/ld/emulparams/elf_i386_be.sh index 2c681b763afd..460707fc484a 100644 --- a/ld/emulparams/elf_i386_be.sh +++ b/ld/emulparams/elf_i386_be.sh @@ -3,7 +3,7 @@ OUTPUT_FORMAT="elf32-i386" TEXT_START_ADDR=0x80000000 #SHLIB_TEXT_START_ADDR=0x80000000 NONPAGED_TEXT_START_ADDR=0x80000000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=i386 MACHINE= NOP=0x90909090 diff --git a/ld/emulparams/elf_i386_chaos.sh b/ld/emulparams/elf_i386_chaos.sh index e018231f043e..a652913f86e5 100644 --- a/ld/emulparams/elf_i386_chaos.sh +++ b/ld/emulparams/elf_i386_chaos.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf_chaos OUTPUT_FORMAT="elf32-i386" TEXT_START_ADDR=0x40000000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x40000000 ARCH=i386 MACHINE= diff --git a/ld/emulparams/elf_i386_ldso.sh b/ld/emulparams/elf_i386_ldso.sh index a477a6932863..d62184fc9c29 100644 --- a/ld/emulparams/elf_i386_ldso.sh +++ b/ld/emulparams/elf_i386_ldso.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" TEXT_START_ADDR=0x08048000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x08048000 ARCH=i386 MACHINE= diff --git a/ld/emulparams/elf_i386_vxworks.sh b/ld/emulparams/elf_i386_vxworks.sh index 8bce8f722c0b..cb36283da4f6 100644 --- a/ld/emulparams/elf_i386_vxworks.sh +++ b/ld/emulparams/elf_i386_vxworks.sh @@ -1,8 +1,8 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386-vxworks" TEXT_START_ADDR=0x08048000 -MAXPAGESIZE=0x1000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x08048000 ARCH=i386 MACHINE= diff --git a/ld/emulparams/elf_s390.sh b/ld/emulparams/elf_s390.sh index 8d057dc3df14..d958504a8345 100644 --- a/ld/emulparams/elf_s390.sh +++ b/ld/emulparams/elf_s390.sh @@ -1,8 +1,8 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-s390" TEXT_START_ADDR=0x00400000 -MAXPAGESIZE=0x1000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x00400000 ARCH="s390:31-bit" MACHINE= diff --git a/ld/emulparams/elf_x86_64.sh b/ld/emulparams/elf_x86_64.sh index 35240df04cf9..449ccc90bd8d 100644 --- a/ld/emulparams/elf_x86_64.sh +++ b/ld/emulparams/elf_x86_64.sh @@ -2,8 +2,8 @@ SCRIPT_NAME=elf ELFSIZE=64 OUTPUT_FORMAT="elf64-x86-64" TEXT_START_ADDR=0x400000 -MAXPAGESIZE=0x100000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x400000 ARCH="i386:x86-64" MACHINE= @@ -22,12 +22,16 @@ if [ "x${host}" = "x${target}" ]; then esac fi -# Linux modify the default library search path to first include +# Linux/Solaris modify the default library search path to first include # a 64-bit specific directory. case "$target" in - x86_64*-linux*) + x86_64*-linux*|i[3-7]86-*-linux-*) case "$EMULATION_NAME" in *64*) LIBPATH_SUFFIX=64 ;; esac ;; + *-*-solaris2*) + LIBPATH_SUFFIX=/amd64 + ELF_INTERPRETER_NAME=\"/lib/amd64/ld.so.1\" + ;; esac diff --git a/ld/emulparams/elf_x86_64_fbsd.sh b/ld/emulparams/elf_x86_64_fbsd.sh index 34258cb92899..35b6a626cd3d 100644 --- a/ld/emulparams/elf_x86_64_fbsd.sh +++ b/ld/emulparams/elf_x86_64_fbsd.sh @@ -1,2 +1,3 @@ . ${srcdir}/emulparams/elf_x86_64.sh . ${srcdir}/emulparams/elf_fbsd.sh +OUTPUT_FORMAT="elf64-x86-64-freebsd" diff --git a/ld/emulparams/h8300.sh b/ld/emulparams/h8300.sh index 68ecdb3be7d4..7042535b4007 100644 --- a/ld/emulparams/h8300.sh +++ b/ld/emulparams/h8300.sh @@ -10,7 +10,7 @@ TINY_READONLY_SECTION=".tinyrodata : TINY_DATA_SECTION=".tinydata 0xff8000 : { *(.tinydata) - _tinydata = .; + ${RELOCATING+ _tinydata = .; } }" TINY_BSS_SECTION=".tinybss : AT (_tinydata) { diff --git a/ld/emulparams/h8300elf.sh b/ld/emulparams/h8300elf.sh index 67d5b20361e8..fb4db40ddcf9 100644 --- a/ld/emulparams/h8300elf.sh +++ b/ld/emulparams/h8300elf.sh @@ -14,12 +14,12 @@ TINY_READONLY_SECTION=".tinyrodata : { *(.tinyrodata) } =0" -TINY_DATA_SECTION=".tinydata 0xff8000 : +TINY_DATA_SECTION=".tinydata ${RELOCATING+0xff8000} : { *(.tinydata) - _tinydata = .; + ${RELOCATING+ _tinydata = .; } }" -TINY_BSS_SECTION=".tinybss : AT (_tinydata) +TINY_BSS_SECTION=".tinybss : ${RELOCATING+AT (_tinydata)} { *(.tinybss) }" diff --git a/ld/emulparams/h8300sxelf.sh b/ld/emulparams/h8300sxelf.sh index bac2cc3cd0e8..c0b715f0ba90 100644 --- a/ld/emulparams/h8300sxelf.sh +++ b/ld/emulparams/h8300sxelf.sh @@ -8,7 +8,7 @@ TINY_READONLY_SECTION=".tinyrodata : TINY_DATA_SECTION=".tinydata 0xff8000 : { *(.tinydata) - _tinydata = .; + ${RELOCATING+ _tinydata = .; } }" TINY_BSS_SECTION=".tinybss : AT (_tinydata) { diff --git a/ld/emulparams/hppa64linux.sh b/ld/emulparams/hppa64linux.sh index aaf8c7251f5a..1af8e37d3767 100644 --- a/ld/emulparams/hppa64linux.sh +++ b/ld/emulparams/hppa64linux.sh @@ -7,7 +7,7 @@ ELFSIZE=64 OUTPUT_FORMAT="elf64-hppa-linux" TEXT_START_ADDR=0x10000 TARGET_PAGE_SIZE=0x10000 -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=hppa MACHINE=hppa2.0w ENTRY="main" @@ -28,7 +28,7 @@ OTHER_READWRITE_SECTIONS=" .dlt ${RELOCATING-0} : { *(.dlt) }" # The PA64 ELF port has an additional huge bss section. -LARGE_SECTIONS=".hbss ${RELOCATING-0} : { *(.hbss) }" +OTHER_BSS_SECTIONS=".hbss ${RELOCATING-0} : { *(.hbss) }" #OTHER_SYMBOLS='PROVIDE (__TLS_SIZE = SIZEOF (.tbss));' OTHER_SYMBOLS=' diff --git a/ld/emulparams/hppalinux.sh b/ld/emulparams/hppalinux.sh index 89a253f2e0a1..4c4f94334bad 100644 --- a/ld/emulparams/hppalinux.sh +++ b/ld/emulparams/hppalinux.sh @@ -6,7 +6,7 @@ ELFSIZE=32 OUTPUT_FORMAT="elf32-hppa-linux" TEXT_START_ADDR=0x10000 TARGET_PAGE_SIZE=0x10000 -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=hppa MACHINE=hppa1.1 # We use 1.1 specific features. NOP=0x08000240 diff --git a/ld/emulparams/hppaobsd.sh b/ld/emulparams/hppaobsd.sh index 0227dc5c3351..0d3bf949423c 100644 --- a/ld/emulparams/hppaobsd.sh +++ b/ld/emulparams/hppaobsd.sh @@ -3,4 +3,4 @@ OUTPUT_FORMAT="elf32-hppa" TEXT_START_ADDR=0x1000 TARGET_PAGE_SIZE=0x1000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/i386lynx.sh b/ld/emulparams/i386lynx.sh index 3235ebea01a6..18e0860c0f51 100644 --- a/ld/emulparams/i386lynx.sh +++ b/ld/emulparams/i386lynx.sh @@ -4,7 +4,7 @@ ENTRY=_main TEXT_BASE=0x0 DYN_TEXT_BASE=0x00400000 TEXT_START_ADDR="(DEFINED(_DYNAMIC) ? ${DYN_TEXT_BASE} : ${TEXT_BASE})" -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x1000 ARCH=i386 MACHINE= diff --git a/ld/emulparams/i386moss.sh b/ld/emulparams/i386moss.sh index eece4473976c..659c7f2c9d55 100644 --- a/ld/emulparams/i386moss.sh +++ b/ld/emulparams/i386moss.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" TEXT_START_ADDR=0x00002000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x00002000 ARCH=i386 MACHINE= diff --git a/ld/emulparams/i386nto.sh b/ld/emulparams/i386nto.sh index e4872edec511..256d4c8d1418 100644 --- a/ld/emulparams/i386nto.sh +++ b/ld/emulparams/i386nto.sh @@ -2,7 +2,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" TEXT_START_ADDR=0x08048000 TEXT_START_SYMBOLS='_btext = .;' -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x08048000 #SHLIB_TEXT_START_ADDR=0xb0300000 ARCH=i386 diff --git a/ld/emulparams/i386nw.sh b/ld/emulparams/i386nw.sh index 621b4755b8bc..dd5558cf0008 100644 --- a/ld/emulparams/i386nw.sh +++ b/ld/emulparams/i386nw.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=nw OUTPUT_FORMAT="elf32-i386" TEXT_START_ADDR=0x08000000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x08000000 ARCH=i386 NOP=0x90909090 diff --git a/ld/emulparams/i386pep.sh b/ld/emulparams/i386pep.sh new file mode 100644 index 000000000000..d20f3aba5f05 --- /dev/null +++ b/ld/emulparams/i386pep.sh @@ -0,0 +1,9 @@ +ARCH="i386:x86-64" +SCRIPT_NAME=pep +OUTPUT_FORMAT="pei-x86-64" +RELOCATEABLE_OUTPUT_FORMAT="pe-x86-64" +TEMPLATE_NAME=pep +ENTRY="_mainCRTStartup" +SUBSYSTEM=PE_DEF_SUBSYSTEM +INITIAL_SYMBOL_CHAR=\"_\" +TARGET_PAGE_SIZE=0x1000 diff --git a/ld/emulparams/m32relf_linux.sh b/ld/emulparams/m32relf_linux.sh index be2ad23240ca..9a4ee9778e94 100644 --- a/ld/emulparams/m32relf_linux.sh +++ b/ld/emulparams/m32relf_linux.sh @@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf32-m32r-linux" TEXT_START_ADDR=0x1000 ARCH=m32r MACHINE= -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" # Hmmm, there's got to be a better way. This sets the stack to the # top of simulator memory (32MB). diff --git a/ld/emulparams/m68kelf.sh b/ld/emulparams/m68kelf.sh index b784a3ca54a3..4771f6b50faf 100644 --- a/ld/emulparams/m68kelf.sh +++ b/ld/emulparams/m68kelf.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-m68k" TEXT_START_ADDR=0x80000000 -MAXPAGESIZE=0x2000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=${TEXT_START_ADDR} ARCH=m68k MACHINE= diff --git a/ld/emulparams/m68kpsos.sh b/ld/emulparams/m68kpsos.sh index 34eb8ca549ce..22d1598e0ec6 100644 --- a/ld/emulparams/m68kpsos.sh +++ b/ld/emulparams/m68kpsos.sh @@ -1,6 +1,6 @@ SCRIPT_NAME=psos OUTPUT_FORMAT="elf32-m68k" TEXT_START_ADDR=0x20000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=m68k TEMPLATE_NAME=elf32 diff --git a/ld/emulparams/mn10200.sh b/ld/emulparams/mn10200.sh index f96224b04923..74f48d0c4867 100644 --- a/ld/emulparams/mn10200.sh +++ b/ld/emulparams/mn10200.sh @@ -2,6 +2,8 @@ # mn10300.sh SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-mn10200" TEXT_START_ADDR=0x0 ARCH=mn10200 diff --git a/ld/emulparams/mn10300.sh b/ld/emulparams/mn10300.sh index 23bbda440d96..121987c29eeb 100644 --- a/ld/emulparams/mn10300.sh +++ b/ld/emulparams/mn10300.sh @@ -2,4 +2,5 @@ OUTPUT_FORMAT="elf32-mn10300" ARCH=mn10300 TEMPLATE_NAME=elf32 +unset EXTRA_EM_FILE GENERATE_SHLIB_SCRIPT=yes diff --git a/ld/emulparams/msp430all.sh b/ld/emulparams/msp430all.sh index baee02eefd57..57d21c2d409c 100644 --- a/ld/emulparams/msp430all.sh +++ b/ld/emulparams/msp430all.sh @@ -4,1005 +4,550 @@ MSP430_NAME=${EMULATION_NAME} -if [ "${MSP430_NAME}" = "msp430x110" ] ; then -ARCH=msp:11 -MACHINE= SCRIPT_NAME=elf32msp430 +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-msp430" +MACHINE= MAXPAGESIZE=1 EMBEDDED=yes -TEMPLATE_NAME=generic +if [ "${MSP430_NAME}" = "msp430x110" ] ; then +ARCH=msp:11 ROM_START=0xfc00 ROM_SIZE=0x3e0 RAM_START=0x0200 RAM_SIZE=128 - STACK=0x280 fi if [ "${MSP430_NAME}" = "msp430x1101" ] ; then ARCH=msp:110 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xfc00 ROM_SIZE=0x3e0 RAM_START=0x0200 RAM_SIZE=128 - STACK=0x280 fi if [ "${MSP430_NAME}" = "msp430x1111" ] ; then ARCH=msp:110 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf800 ROM_SIZE=0x07e0 RAM_START=0x0200 RAM_SIZE=128 - STACK=0x280 fi if [ "${MSP430_NAME}" = "msp430x112" ] ; then ARCH=msp:11 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0xfe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x1121" ] ; then ARCH=msp:110 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0x0fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x1122" ] ; then ARCH=msp:110 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0x0fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x1132" ] ; then ARCH=msp:110 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x122" ] ; then ARCH=msp:12 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0xfe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x1222" ] ; then ARCH=msp:12 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0xfe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x123" ] ; then ARCH=msp:12 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x1232" ] ; then ARCH=msp:12 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x133" ] ; then ARCH=msp:13 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x1331" ] ; then ARCH=msp:13 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x135" ] ; then ARCH=msp:13 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x1351" ] ; then ARCH=msp:13 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x147" ] ; then ARCH=msp:14 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1K - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x148" ] ; then ARCH=msp:14 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x4000 ROM_SIZE=0xbfe0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430x149" ] ; then ARCH=msp:14 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x1100 ROM_SIZE=0xeee0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430x155" ] ; then ARCH=msp:15 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x156" ] ; then ARCH=msp:15 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xa000 ROM_SIZE=0x5fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x157" ] ; then ARCH=msp:15 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1K - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x167" ] ; then ARCH=msp:16 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1K - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x168" ] ; then ARCH=msp:16 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x4000 ROM_SIZE=0xbfe0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430x169" ] ; then ARCH=msp:16 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x1100 ROM_SIZE=0xeee0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430x1610" ] ; then ARCH=msp:16 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x1100 RAM_SIZE=0x1400 - STACK=0x2500 fi if [ "${MSP430_NAME}" = "msp430x1611" ] ; then ARCH=msp:16 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x4000 ROM_SIZE=0xbfe0 RAM_START=0x1100 RAM_SIZE=0x2800 - STACK=0x3900 fi if [ "${MSP430_NAME}" = "msp430x1612" ] ; then ARCH=msp:16 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x2500 ROM_SIZE=0xdae0 RAM_START=0x1100 RAM_SIZE=0x1400 - STACK=0x2500 fi if [ "${MSP430_NAME}" = "msp430x2101" ] ; then ARCH=msp:21 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xFC00 ROM_SIZE=0x03e0 RAM_START=0x0200 RAM_SIZE=128 - STACK=0x280 fi if [ "${MSP430_NAME}" = "msp430x2111" ] ; then ARCH=msp:21 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xF800 ROM_SIZE=0x07e0 RAM_START=0x0200 RAM_SIZE=128 - STACK=0x280 fi if [ "${MSP430_NAME}" = "msp430x2121" ] ; then ARCH=msp:21 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0x0fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x2131" ] ; then ARCH=msp:21 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x311" ] ; then ARCH=msp:31 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf800 ROM_SIZE=0x07e0 RAM_START=0x0200 RAM_SIZE=128 - STACK=0x280 fi if [ "${MSP430_NAME}" = "msp430x312" ] ; then ARCH=msp:31 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0x0fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x313" ] ; then ARCH=msp:31 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x314" ] ; then ARCH=msp:31 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xd000 ROM_SIZE=0x2fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x315" ] ; then ARCH=msp:31 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x323" ] ; then ARCH=msp:32 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x325" ] ; then ARCH=msp:32 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x336" ] ; then ARCH=msp:33 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xa000 ROM_SIZE=0x5fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x337" ] ; then ARCH=msp:33 -MACHINE= SCRIPT_NAME=elf32msp430_3 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x412" ] ; then ARCH=msp:41 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xf000 ROM_SIZE=0x0fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x413" ] ; then ARCH=msp:41 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430x415" ] ; then ARCH=msp:41 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x417" ] ; then ARCH=msp:41 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x435" ] ; then ARCH=msp:43 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430x436" ] ; then ARCH=msp:43 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xa000 ROM_SIZE=0x5fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x437" ] ; then ARCH=msp:43 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x447" ] ; then ARCH=msp:44 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430x448" ] ; then ARCH=msp:44 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x4000 ROM_SIZE=0xbfe0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430x449" ] ; then ARCH=msp:44 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x1100 ROM_SIZE=0xeee0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430xE423" ] ; then ARCH=msp:42 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430xE425" ] ; then ARCH=msp:42 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430xE427" ] ; then ARCH=msp:42 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430xG437" ] ; then ARCH=msp:43 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=1024 - STACK=0x600 fi if [ "${MSP430_NAME}" = "msp430xG438" ] ; then ARCH=msp:43 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x4000 ROM_SIZE=0xbef0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430xG439" ] ; then ARCH=msp:43 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x1100 ROM_SIZE=0xeee0 RAM_START=0x0200 RAM_SIZE=0x0800 - STACK=0xa00 fi if [ "${MSP430_NAME}" = "msp430xW423" ] ; then ARCH=msp:42 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xe000 ROM_SIZE=0x1fe0 RAM_START=0x0200 RAM_SIZE=256 - STACK=0x300 fi if [ "${MSP430_NAME}" = "msp430xW425" ] ; then ARCH=msp:42 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0xc000 ROM_SIZE=0x3fe0 RAM_START=0x0200 RAM_SIZE=512 - STACK=0x400 fi if [ "${MSP430_NAME}" = "msp430xW427" ] ; then ARCH=msp:42 -MACHINE= -SCRIPT_NAME=elf32msp430 -OUTPUT_FORMAT="elf32-msp430" -MAXPAGESIZE=1 -EMBEDDED=yes -TEMPLATE_NAME=generic - ROM_START=0x8000 ROM_SIZE=0x7fe0 RAM_START=0x0200 RAM_SIZE=0x400 - STACK=0x600 fi diff --git a/ld/emulparams/or32.sh b/ld/emulparams/or32.sh index 0717eb7e06cb..0e22e45d8c3f 100644 --- a/ld/emulparams/or32.sh +++ b/ld/emulparams/or32.sh @@ -1,6 +1,5 @@ SCRIPT_NAME=or32 OUTPUT_FORMAT="coff-or32-big" -# OUTPUT_FORMAT="elf32-or32" TEXT_START_ADDR=0x1000000 TARGET_PAGE_SIZE=0x1000000 ARCH=or32 diff --git a/ld/emulparams/or32elf.sh b/ld/emulparams/or32elf.sh index 04d163038e59..5cb3208ccce7 100644 --- a/ld/emulparams/or32elf.sh +++ b/ld/emulparams/or32elf.sh @@ -1,6 +1,8 @@ SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-or32" TEXT_START_ADDR=0x1000000 TARGET_PAGE_SIZE=0x1000000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=or32 diff --git a/ld/emulparams/pjelf.sh b/ld/emulparams/pjelf.sh index acfd2b346c5c..e4d2fa59f077 100644 --- a/ld/emulparams/pjelf.sh +++ b/ld/emulparams/pjelf.sh @@ -1,5 +1,7 @@ SCRIPT_NAME=elf +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-pj" TEXT_START_ADDR=0x1000000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=pj diff --git a/ld/emulparams/pjlelf.sh b/ld/emulparams/pjlelf.sh index 35958fdea6a1..88c2b646044c 100644 --- a/ld/emulparams/pjlelf.sh +++ b/ld/emulparams/pjlelf.sh @@ -1,5 +1,2 @@ -SCRIPT_NAME=elf +. ${srcdir}/emulparams/pjelf.sh OUTPUT_FORMAT="elf32-pjl" -TEXT_START_ADDR=0x1000000 -MAXPAGESIZE=0x1000 -ARCH=pj diff --git a/ld/emulparams/ppclynx.sh b/ld/emulparams/ppclynx.sh index 2534687114ed..5c5769ea7965 100644 --- a/ld/emulparams/ppclynx.sh +++ b/ld/emulparams/ppclynx.sh @@ -3,7 +3,7 @@ OUTPUT_FORMAT="elf32-powerpc" TEXT_BASE=0x00002000 DYN_TEXT_BASE=0x00400000 TEXT_START_ADDR="(DEFINED(_DYNAMIC) ? ${DYN_TEXT_BASE} : ${TEXT_BASE})" -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x1000 ARCH=powerpc MACHINE= diff --git a/ld/emulparams/ppcnw.sh b/ld/emulparams/ppcnw.sh index c3ead43675b8..14b2745caad0 100644 --- a/ld/emulparams/ppcnw.sh +++ b/ld/emulparams/ppcnw.sh @@ -2,6 +2,6 @@ SCRIPT_NAME=nw OUTPUT_FORMAT="elf32-powerpc" TEXT_START_ADDR=0x0400000 DATA_ADDR=0x10000000 -MAXPAGESIZE=0x40000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" NONPAGED_TEXT_START_ADDR=0x0400000 ARCH=powerpc diff --git a/ld/emulparams/scoreelf.sh b/ld/emulparams/scoreelf.sh new file mode 100644 index 000000000000..e138de2b30e4 --- /dev/null +++ b/ld/emulparams/scoreelf.sh @@ -0,0 +1,31 @@ +MACHINE= +SCRIPT_NAME=elf +TEMPLATE_NAME=elf32 +OUTPUT_FORMAT="elf32-bigscore" +BIG_OUTPUT_FORMAT="elf32-bigscore" +LITTLE_OUTPUT_FORMAT="elf32-littlescore" +GROUP="-lm -lc -lglsim -lgcc -lstdc++" + +TEXT_START_ADDR=0x00000000 +MAXPAGESIZE=256 +NONPAGED_TEXT_START_ADDR=0x0400000 +SHLIB_TEXT_START_ADDR=0x5ffe0000 +OTHER_GOT_SYMBOLS=' + _gp = ALIGN(16) + 0x3ff0; +' + +OTHER_BSS_START_SYMBOLS='_bss_start__ = . + ALIGN(4);' +OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;' +DATA_START_SYMBOLS='_fdata = . ;' +SDATA_START_SYMBOLS='_sdata_begin = . ;' +OTHER_BSS_SYMBOLS=' + _bss_start = ALIGN(4) ; +' +# This sets the stack to the top of the simulator memory (2^19 bytes). +STACK_ADDR=0x8000000 + +ARCH=score +MACHINE= +ENTRY=_start +EMBEDDED=yes +GENERATE_SHLIB_SCRIPT=yes diff --git a/ld/emulparams/shelf32.sh b/ld/emulparams/shelf32.sh index 6582b02839a2..c72fadb8fa1a 100644 --- a/ld/emulparams/shelf32.sh +++ b/ld/emulparams/shelf32.sh @@ -40,7 +40,7 @@ DTOR_END='___dtors_end = .;' # 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) + 0x40000)} : + .stack ${RELOCATING-0}${RELOCATING+(DEFINED(_stack) ? _stack : ALIGN (0x40000) + 0x80000)} : { ${RELOCATING+_stack = .;} *(.stack) diff --git a/ld/emulparams/shelf32_nbsd.sh b/ld/emulparams/shelf32_nbsd.sh index 14965ef95b5e..63aee8f40842 100644 --- a/ld/emulparams/shelf32_nbsd.sh +++ b/ld/emulparams/shelf32_nbsd.sh @@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf32-sh64-nbsd" TEXT_START_ADDR=0x400000 -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ENTRY=__start diff --git a/ld/emulparams/shelf64.sh b/ld/emulparams/shelf64.sh index eb1f6c76ecd0..5037f350187c 100644 --- a/ld/emulparams/shelf64.sh +++ b/ld/emulparams/shelf64.sh @@ -7,7 +7,7 @@ EXTRA_EM_FILE= # We do not need .cranges test -z "$CREATE_SHLIB" && OTHER_SECTIONS=" - .stack ${RELOCATING-0}${RELOCATING+(DEFINED(_stack) ? _stack : ALIGN (0x40000) + 0x40000)} : + .stack ${RELOCATING-0}${RELOCATING+(DEFINED(_stack) ? _stack : ALIGN (0x40000) + 0x80000)} : { ${RELOCATING+_stack = .;} *(.stack) diff --git a/ld/emulparams/shelf_nbsd.sh b/ld/emulparams/shelf_nbsd.sh index 3fcd49254925..ad295e96845a 100644 --- a/ld/emulparams/shelf_nbsd.sh +++ b/ld/emulparams/shelf_nbsd.sh @@ -5,7 +5,7 @@ OUTPUT_FORMAT="elf32-sh-nbsd" TEXT_START_ADDR=0x400000 -MAXPAGESIZE=0x10000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" DATA_START_SYMBOLS='__data_start = . ;'; diff --git a/ld/emulparams/shelf_nto.sh b/ld/emulparams/shelf_nto.sh index f2252fb845f3..70a0610ad7eb 100644 --- a/ld/emulparams/shelf_nto.sh +++ b/ld/emulparams/shelf_nto.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sh" TEXT_START_ADDR=0x08040000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=sh MACHINE= TEMPLATE_NAME=elf32 diff --git a/ld/emulparams/shelf_uclinux.sh b/ld/emulparams/shelf_uclinux.sh new file mode 100644 index 000000000000..2af5da44b8f7 --- /dev/null +++ b/ld/emulparams/shelf_uclinux.sh @@ -0,0 +1,4 @@ +. ${srcdir}/emulparams/shelf.sh + +# We do not want a .stack section +OTHER_SECTIONS="" diff --git a/ld/emulparams/shelf_vxworks.sh b/ld/emulparams/shelf_vxworks.sh new file mode 100644 index 000000000000..a87d52947628 --- /dev/null +++ b/ld/emulparams/shelf_vxworks.sh @@ -0,0 +1,19 @@ +# If you change this file, please also look at files which source this one: +# shlelf_vxworks.sh + +SCRIPT_NAME=elf +BIG_OUTPUT_FORMAT="elf32-sh-vxworks" +LITTLE_OUTPUT_FORMAT="elf32-shl-vxworks" +OUTPUT_FORMAT="$BIG_OUTPUT_FORMAT" +TEXT_START_ADDR=0x1000 +MAXPAGESIZE='CONSTANT (MAXPAGESIZE)' +ARCH=sh +MACHINE= +TEMPLATE_NAME=elf32 +GENERATE_SHLIB_SCRIPT=yes +ENTRY=__start +SYMPREFIX=_ +GOT=".got ${RELOCATING-0} : { + PROVIDE(__GLOBAL_OFFSET_TABLE_ = .); + *(.got.plt) *(.got) }" +. ${srcdir}/emulparams/vxworks.sh diff --git a/ld/emulparams/shlelf32_linux.sh b/ld/emulparams/shlelf32_linux.sh index 59d4179d3124..ba32e79e9e55 100644 --- a/ld/emulparams/shlelf32_linux.sh +++ b/ld/emulparams/shlelf32_linux.sh @@ -4,8 +4,8 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sh64-linux" TEXT_START_ADDR=0x400000 -MAXPAGESIZE=0x10000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" ARCH=sh MACHINE=sh5 ALIGNMENT=8 diff --git a/ld/emulparams/shlelf_linux.sh b/ld/emulparams/shlelf_linux.sh index 528b7257f3b5..b06df2632075 100644 --- a/ld/emulparams/shlelf_linux.sh +++ b/ld/emulparams/shlelf_linux.sh @@ -4,8 +4,8 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sh-linux" TEXT_START_ADDR=0x400000 -MAXPAGESIZE=0x10000 -COMMONPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" +COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" ARCH=sh MACHINE= TEMPLATE_NAME=elf32 diff --git a/ld/emulparams/shlelf_nto.sh b/ld/emulparams/shlelf_nto.sh index d23e69a6c47a..c6c04f6b29b5 100644 --- a/ld/emulparams/shlelf_nto.sh +++ b/ld/emulparams/shlelf_nto.sh @@ -1,7 +1,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-shl" TEXT_START_ADDR=0x08040000 -MAXPAGESIZE=0x1000 +MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=sh MACHINE= TEMPLATE_NAME=elf32 diff --git a/ld/emulparams/shlelf_vxworks.sh b/ld/emulparams/shlelf_vxworks.sh new file mode 100644 index 000000000000..0a055b1bf53c --- /dev/null +++ b/ld/emulparams/shlelf_vxworks.sh @@ -0,0 +1,2 @@ +. ${srcdir}/emulparams/shelf_vxworks.sh +OUTPUT_FORMAT="$LITTLE_OUTPUT_FORMAT" diff --git a/ld/emulparams/vxworks.sh b/ld/emulparams/vxworks.sh index 4382859e645c..6e399ea87ac6 100644 --- a/ld/emulparams/vxworks.sh +++ b/ld/emulparams/vxworks.sh @@ -1,5 +1,7 @@ # If you change this file, please also look at files which source this one: -# elf_i386_vxworks.sh elf32ppcvxworks.sh elf32ebmipvxworks.sh +# armelf_vxworks.sh elf32ebmipvxworks.sh elf32elmipvxworks.sh +# elf_i386_vxworks.sh elf32ppcvxworks.sh elf32_sparc_vxworks.sh +# shelf_vxworks.sh # The Diab tools use a different init/fini convention. Initialization code # is place in sections named ".init$NN". These sections are then concatenated @@ -17,12 +19,12 @@ FINI_START='_fini = .; KEEP (*(.fini$0[1-9])); KEEP (*(.fini$[1-8][0-9])); KEEP (*(.fini$9[0-8]));' -FINI_END='KEEP (*(.fini$99)); - PROVIDE (_etext = .);' +FINI_END="KEEP (*(.fini\$99)); + PROVIDE (${SYMPREFIX}_etext = .);" ETEXT_NAME=etext_unrelocated -OTHER_SYMBOLS="PROVIDE (_ehdr = ${TEXT_START_ADDR});" -DATA_END_SYMBOLS=".edata : { PROVIDE (_edata = .); }" +OTHER_END_SYMBOLS="PROVIDE (${SYMPREFIX}_ehdr = ${TEXT_START_ADDR});" +DATA_END_SYMBOLS=".edata : { PROVIDE (${SYMPREFIX}_edata = .); }" VXWORKS_BASE_EM_FILE=$EXTRA_EM_FILE EXTRA_EM_FILE=vxworks unset EMBEDDED diff --git a/ld/emulparams/xtensa-config.sh b/ld/emulparams/xtensa-config.sh deleted file mode 100644 index 5a5e504edde2..000000000000 --- a/ld/emulparams/xtensa-config.sh +++ /dev/null @@ -1,3 +0,0 @@ -# Xtensa configuration settings. - -MAXPAGESIZE=0x1000 |