aboutsummaryrefslogtreecommitdiff
path: root/ld/emulparams
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>1999-05-03 07:29:11 +0000
committerRichard Henderson <rth@redhat.com>1999-05-03 07:29:11 +0000
commit252b5132c753830d5fd56823373aed85f2a0db63 (patch)
tree1af963bfd8d3e55167b81def4207f175eaff3a56 /ld/emulparams
downloadgdb-252b5132c753830d5fd56823373aed85f2a0db63.zip
gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.gz
gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.bz2
19990502 sourceware importbinu_ss_19990502
Diffstat (limited to 'ld/emulparams')
-rw-r--r--ld/emulparams/README2
-rw-r--r--ld/emulparams/a29k.sh5
-rw-r--r--ld/emulparams/aixppc.sh4
-rw-r--r--ld/emulparams/aixrs6.sh4
-rw-r--r--ld/emulparams/alpha.sh3
-rw-r--r--ld/emulparams/arcelf.sh11
-rw-r--r--ld/emulparams/arm_epoc_pe.sh6
-rw-r--r--ld/emulparams/armaoutb.sh7
-rw-r--r--ld/emulparams/armaoutl.sh7
-rw-r--r--ld/emulparams/armcoff.sh6
-rw-r--r--ld/emulparams/armelf.sh21
-rw-r--r--ld/emulparams/armelf_linux.sh17
-rw-r--r--ld/emulparams/armelf_linux26.sh16
-rw-r--r--ld/emulparams/armelf_oabi.sh21
-rw-r--r--ld/emulparams/armpe.sh6
-rw-r--r--ld/emulparams/coff_sparc.sh7
-rw-r--r--ld/emulparams/d10velf.sh9
-rw-r--r--ld/emulparams/d30v_e.sh20
-rw-r--r--ld/emulparams/d30v_o.sh20
-rw-r--r--ld/emulparams/d30velf.sh20
-rw-r--r--ld/emulparams/delta68.sh5
-rw-r--r--ld/emulparams/ebmon29k.sh5
-rw-r--r--ld/emulparams/elf32_sparc.sh11
-rw-r--r--ld/emulparams/elf32b4300.sh29
-rw-r--r--ld/emulparams/elf32bmip.sh30
-rw-r--r--ld/emulparams/elf32bsmip.sh31
-rw-r--r--ld/emulparams/elf32ebmip.sh28
-rw-r--r--ld/emulparams/elf32elmip.sh28
-rwxr-xr-xld/emulparams/elf32fr30.sh10
-rw-r--r--ld/emulparams/elf32l4300.sh29
-rw-r--r--ld/emulparams/elf32lmip.sh30
-rw-r--r--ld/emulparams/elf32lppc.sh8
-rw-r--r--ld/emulparams/elf32lsmip.sh31
-rw-r--r--ld/emulparams/elf32mcore.sh20
-rw-r--r--ld/emulparams/elf32ppc.sh8
-rw-r--r--ld/emulparams/elf64_sparc.sh12
-rw-r--r--ld/emulparams/elf64alpha.sh15
-rw-r--r--ld/emulparams/elf_i386.sh10
-rw-r--r--ld/emulparams/elf_i386_be.sh11
-rw-r--r--ld/emulparams/gld960.sh7
-rw-r--r--ld/emulparams/gld960coff.sh19
-rw-r--r--ld/emulparams/go32.sh7
-rw-r--r--ld/emulparams/h8300.sh5
-rw-r--r--ld/emulparams/h8300h.sh5
-rw-r--r--ld/emulparams/h8300s.sh5
-rw-r--r--ld/emulparams/h8500.sh5
-rw-r--r--ld/emulparams/h8500b.sh5
-rw-r--r--ld/emulparams/h8500c.sh5
-rw-r--r--ld/emulparams/h8500m.sh5
-rw-r--r--ld/emulparams/h8500s.sh5
-rw-r--r--ld/emulparams/hp300bsd.sh5
-rw-r--r--ld/emulparams/hp3hpux.sh8
-rw-r--r--ld/emulparams/hppaelf.sh7
-rw-r--r--ld/emulparams/i386aout.sh6
-rwxr-xr-xld/emulparams/i386beos.sh5
-rw-r--r--ld/emulparams/i386bsd.sh6
-rw-r--r--ld/emulparams/i386coff.sh5
-rw-r--r--ld/emulparams/i386go32.sh8
-rw-r--r--ld/emulparams/i386linux.sh7
-rw-r--r--ld/emulparams/i386lynx.sh9
-rw-r--r--ld/emulparams/i386mach.sh7
-rw-r--r--ld/emulparams/i386moss.sh10
-rw-r--r--ld/emulparams/i386msdos.sh7
-rw-r--r--ld/emulparams/i386nbsd.sh6
-rw-r--r--ld/emulparams/i386nw.sh9
-rw-r--r--ld/emulparams/i386pe.sh5
-rw-r--r--ld/emulparams/lnk960.sh6
-rw-r--r--ld/emulparams/m32relf.sh13
-rw-r--r--ld/emulparams/m68k4knbsd.sh7
-rw-r--r--ld/emulparams/m68kaout.sh7
-rw-r--r--ld/emulparams/m68kaux.sh8
-rw-r--r--ld/emulparams/m68kcoff.sh5
-rw-r--r--ld/emulparams/m68kelf.sh10
-rw-r--r--ld/emulparams/m68klinux.sh7
-rw-r--r--ld/emulparams/m68klynx.sh8
-rw-r--r--ld/emulparams/m68knbsd.sh7
-rw-r--r--ld/emulparams/m68kpsos.sh6
-rw-r--r--ld/emulparams/m88kbcs.sh5
-rw-r--r--ld/emulparams/mcorepe.sh6
-rw-r--r--ld/emulparams/mipsbig.sh6
-rw-r--r--ld/emulparams/mipsbsd.sh7
-rw-r--r--ld/emulparams/mipsidt.sh11
-rw-r--r--ld/emulparams/mipsidtl.sh11
-rw-r--r--ld/emulparams/mipslit.sh6
-rw-r--r--ld/emulparams/mipslnews.sh9
-rw-r--r--ld/emulparams/mn10200.sh20
-rw-r--r--ld/emulparams/mn10300.sh20
-rw-r--r--ld/emulparams/news.sh5
-rw-r--r--ld/emulparams/ns32knbsd.sh5
-rw-r--r--ld/emulparams/pc532macha.sh6
-rw-r--r--ld/emulparams/ppcmacos.sh4
-rw-r--r--ld/emulparams/ppcnw.sh7
-rw-r--r--ld/emulparams/ppcpe.sh4
-rw-r--r--ld/emulparams/riscix.sh5
-rw-r--r--ld/emulparams/sa29200.sh5
-rw-r--r--ld/emulparams/sh.sh5
-rw-r--r--ld/emulparams/shelf.sh17
-rw-r--r--ld/emulparams/shl.sh5
-rw-r--r--ld/emulparams/shlelf.sh17
-rw-r--r--ld/emulparams/sparcaout.sh8
-rw-r--r--ld/emulparams/sparclinux.sh7
-rw-r--r--ld/emulparams/sparclynx.sh9
-rw-r--r--ld/emulparams/sparcnbsd.sh5
-rw-r--r--ld/emulparams/st2000.sh5
-rw-r--r--ld/emulparams/sun3.sh8
-rw-r--r--ld/emulparams/sun4.sh8
-rw-r--r--ld/emulparams/tic30aout.sh7
-rw-r--r--ld/emulparams/tic30coff.sh7
-rw-r--r--ld/emulparams/tic80coff.sh56
-rw-r--r--ld/emulparams/v850.sh14
-rw-r--r--ld/emulparams/vanilla.sh5
-rw-r--r--ld/emulparams/vax.sh5
-rw-r--r--ld/emulparams/vsta.sh8
-rw-r--r--ld/emulparams/w65.sh5
-rw-r--r--ld/emulparams/z8001.sh7
-rw-r--r--ld/emulparams/z8002.sh6
116 files changed, 1186 insertions, 0 deletions
diff --git a/ld/emulparams/README b/ld/emulparams/README
new file mode 100644
index 0000000..b3d6d26
--- /dev/null
+++ b/ld/emulparams/README
@@ -0,0 +1,2 @@
+The files in this directory are read by genscripts.sh as shell commands.
+They set parameters for the emulations.
diff --git a/ld/emulparams/a29k.sh b/ld/emulparams/a29k.sh
new file mode 100644
index 0000000..89c8e85
--- /dev/null
+++ b/ld/emulparams/a29k.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=a29k
+OUTPUT_FORMAT="coff-a29k-big"
+TEXT_START_ADDR=0x1000000
+TARGET_PAGE_SIZE=0x1000000
+ARCH=a29k
diff --git a/ld/emulparams/aixppc.sh b/ld/emulparams/aixppc.sh
new file mode 100644
index 0000000..f92e686
--- /dev/null
+++ b/ld/emulparams/aixppc.sh
@@ -0,0 +1,4 @@
+TEMPLATE_NAME=aix
+SCRIPT_NAME=aix
+OUTPUT_FORMAT="aixcoff-rs6000"
+ARCH=powerpc
diff --git a/ld/emulparams/aixrs6.sh b/ld/emulparams/aixrs6.sh
new file mode 100644
index 0000000..733c3f7
--- /dev/null
+++ b/ld/emulparams/aixrs6.sh
@@ -0,0 +1,4 @@
+TEMPLATE_NAME=aix
+SCRIPT_NAME=aix
+OUTPUT_FORMAT="aixcoff-rs6000"
+ARCH=rs6000
diff --git a/ld/emulparams/alpha.sh b/ld/emulparams/alpha.sh
new file mode 100644
index 0000000..141923f
--- /dev/null
+++ b/ld/emulparams/alpha.sh
@@ -0,0 +1,3 @@
+SCRIPT_NAME=alpha
+OUTPUT_FORMAT="ecoff-littlealpha"
+ARCH=alpha
diff --git a/ld/emulparams/arcelf.sh b/ld/emulparams/arcelf.sh
new file mode 100644
index 0000000..b1c9c17
--- /dev/null
+++ b/ld/emulparams/arcelf.sh
@@ -0,0 +1,11 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlearc"
+LITTLE_OUTPUT_FORMAT="elf32-littlearc"
+BIG_OUTPUT_FORMAT="elf32-bigarc"
+TEXT_START_ADDR=0x0
+MAXPAGESIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x0
+ARCH=arc
+MACHINE=
+ENTRY=start
+#TEMPLATE_NAME=elf32
diff --git a/ld/emulparams/arm_epoc_pe.sh b/ld/emulparams/arm_epoc_pe.sh
new file mode 100644
index 0000000..816fa2a
--- /dev/null
+++ b/ld/emulparams/arm_epoc_pe.sh
@@ -0,0 +1,6 @@
+ARCH=arm
+SCRIPT_NAME=pe
+OUTPUT_FORMAT="epoc-pei-arm-little"
+LITTLE_OUTPUT_FORMAT="epoc-pei-arm-little"
+BIG_OUTPUT_FORMAT="epoc-pei-arm-big"
+TEMPLATE_NAME=pe
diff --git a/ld/emulparams/armaoutb.sh b/ld/emulparams/armaoutb.sh
new file mode 100644
index 0000000..59ab6f1
--- /dev/null
+++ b/ld/emulparams/armaoutb.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=armaout
+OUTPUT_FORMAT="a.out-arm-big"
+HEADER_START_ADDR=0x8000
+TEXT_START_ADDR=0x8000
+NONPAGED_TEXT_START_ADDRESS=0x8000
+TARGET_PAGE_SIZE=32768
+ARCH=arm
diff --git a/ld/emulparams/armaoutl.sh b/ld/emulparams/armaoutl.sh
new file mode 100644
index 0000000..9501f33
--- /dev/null
+++ b/ld/emulparams/armaoutl.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=armaout
+OUTPUT_FORMAT="a.out-arm-little"
+HEADER_START_ADDR=0x8000
+TEXT_START_ADDR=0x8000
+NONPAGED_TEXT_START_ADDRESS=0x8000
+TARGET_PAGE_SIZE=32768
+ARCH=arm
diff --git a/ld/emulparams/armcoff.sh b/ld/emulparams/armcoff.sh
new file mode 100644
index 0000000..91df7d3
--- /dev/null
+++ b/ld/emulparams/armcoff.sh
@@ -0,0 +1,6 @@
+ARCH=arm
+SCRIPT_NAME=armcoff
+OUTPUT_FORMAT="coff-arm-little"
+LITTLE_OUTPUT_FORMAT="coff-arm-little"
+BIG_OUTPUT_FORMAT="coff-arm-big"
+TEMPLATE_NAME=armcoff
diff --git a/ld/emulparams/armelf.sh b/ld/emulparams/armelf.sh
new file mode 100644
index 0000000..2b8b02b
--- /dev/null
+++ b/ld/emulparams/armelf.sh
@@ -0,0 +1,21 @@
+MACHINE=
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlearm"
+BIG_OUTPUT_FORMAT="elf32-bigarm"
+LITTLE_OUTPUT_FORMAT="elf32-littlearm"
+TEXT_START_ADDR=0x8000
+TEMPLATE_NAME=armelf
+OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
+OTHER_BSS_SYMBOLS='__bss_start__ = .;'
+OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;'
+
+
+ARCH=arm
+MACHINE=
+MAXPAGESIZE=256
+ENTRY=_start
+EMBEDDED=yes
+
+# Hmmm, there's got to be a better way. This sets the stack to the
+# top of the simulator memory (2^19 bytes).
+OTHER_RELOCATING_SECTIONS='.stack 0x80000 : { _stack = .; *(.stack) }'
diff --git a/ld/emulparams/armelf_linux.sh b/ld/emulparams/armelf_linux.sh
new file mode 100644
index 0000000..2d7d57b
--- /dev/null
+++ b/ld/emulparams/armelf_linux.sh
@@ -0,0 +1,17 @@
+ARCH=arm
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlearm"
+BIG_OUTPUT_FORMAT="elf32-bigarm"
+LITTLE_OUTPUT_FORMAT="elf32-littlearm"
+MAXPAGESIZE=0x8000
+TEMPLATE_NAME=armelf
+
+OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
+OTHER_BSS_SYMBOLS='__bss_start__ = .;'
+OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;'
+
+# This needs to be high enough so that we can load ld.so below it,
+# yet low enough to stay away from the mmap area 0x40000000.
+# Also, it is small enough so that relocs which are pointing
+# at absolute 0 will still be fixed up.
+TEXT_START_ADDR=0x02000000
diff --git a/ld/emulparams/armelf_linux26.sh b/ld/emulparams/armelf_linux26.sh
new file mode 100644
index 0000000..7153ddc
--- /dev/null
+++ b/ld/emulparams/armelf_linux26.sh
@@ -0,0 +1,16 @@
+ARCH=arm
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlearm"
+BIG_OUTPUT_FORMAT="elf32-bigarm"
+LITTLE_OUTPUT_FORMAT="elf32-littlearm"
+MAXPAGESIZE=0x8000
+TEMPLATE_NAME=armelf
+GENERATE_SHLIB_SCRIPT=yes
+
+# This needs to be high enough so that we can load ld.so below it,
+# yet low enough to stay away from the mmap area at 0x01100000.
+# Also, it is small enough so that relocs which are pointing
+# at absolute 0 will still be fixed up.
+# These values give us about 0.5MB for ld.so, 16.5MB for user
+# programs, and 15MB for mmap which seems a reasonable compromise.
+TEXT_START_ADDR=0x00080000
diff --git a/ld/emulparams/armelf_oabi.sh b/ld/emulparams/armelf_oabi.sh
new file mode 100644
index 0000000..257753e
--- /dev/null
+++ b/ld/emulparams/armelf_oabi.sh
@@ -0,0 +1,21 @@
+MACHINE=
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlearm-oabi"
+BIG_OUTPUT_FORMAT="elf32-bigarm-oabi"
+LITTLE_OUTPUT_FORMAT="elf32-littlearm-oabi"
+TEXT_START_ADDR=0x8000
+TEMPLATE_NAME=armelf
+OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
+OTHER_BSS_SYMBOLS='__bss_start__ = .;'
+OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ;'
+
+
+ARCH=arm
+MACHINE=
+MAXPAGESIZE=256
+ENTRY=_start
+EMBEDDED=yes
+
+# Hmmm, there's got to be a better way. This sets the stack to the
+# top of the simulator memory (2^19 bytes).
+OTHER_RELOCATING_SECTIONS='.stack 0x80000 : { _stack = .; *(.stack) }'
diff --git a/ld/emulparams/armpe.sh b/ld/emulparams/armpe.sh
new file mode 100644
index 0000000..2246805
--- /dev/null
+++ b/ld/emulparams/armpe.sh
@@ -0,0 +1,6 @@
+ARCH=arm
+SCRIPT_NAME=pe
+OUTPUT_FORMAT="pei-arm-little"
+LITTLE_OUTPUT_FORMAT="pei-arm-little"
+BIG_OUTPUT_FORMAT="pei-arm-big"
+TEMPLATE_NAME=pe
diff --git a/ld/emulparams/coff_sparc.sh b/ld/emulparams/coff_sparc.sh
new file mode 100644
index 0000000..0cf852a
--- /dev/null
+++ b/ld/emulparams/coff_sparc.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=sparccoff
+OUTPUT_FORMAT="coff-sparc"
+# following are dubious (borrowed from sparc lynx)
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0
+NONPAGED_TEXT_START_ADDR=0x1000
+ARCH=sparc
diff --git a/ld/emulparams/d10velf.sh b/ld/emulparams/d10velf.sh
new file mode 100644
index 0000000..bcce51f
--- /dev/null
+++ b/ld/emulparams/d10velf.sh
@@ -0,0 +1,9 @@
+MACHINE=
+SCRIPT_NAME=elfd10v
+OUTPUT_FORMAT="elf32-d10v"
+TEXT_START_ADDR=0x01000000
+READONLY_START_ADDR=0x00000004
+ARCH=d10v
+MAXPAGESIZE=32
+EMBEDDED=t
+TEMPLATE_NAME=elf32
diff --git a/ld/emulparams/d30v_e.sh b/ld/emulparams/d30v_e.sh
new file mode 100644
index 0000000..a8ab5a2
--- /dev/null
+++ b/ld/emulparams/d30v_e.sh
@@ -0,0 +1,20 @@
+MACHINE=
+SCRIPT_NAME=elfd30v
+OUTPUT_FORMAT="elf32-d30v"
+TEXT_START_ADDR=0x00000000
+DATA_START_ADDR=0x20000000
+EMEM_START_ADDR=0x80000000
+STACK_START_ADDR=0x20008000
+EIT_START_ADDR=0xfffff020
+TEXT_SIZE=64K
+DATA_SIZE=32K
+EMEM_SIZE=8M
+EIT_SIZE=320
+TEXT_MEMORY=emem
+DATA_MEMORY=emem
+BSS_MEMORY=emem
+TEXT_DEF_SECTION=""
+DATA_DEF_SECTION=""
+EMEM_DEF_SECTION="(rwx)"
+ARCH=d30v
+EMBEDDED=t
diff --git a/ld/emulparams/d30v_o.sh b/ld/emulparams/d30v_o.sh
new file mode 100644
index 0000000..6cbcb42
--- /dev/null
+++ b/ld/emulparams/d30v_o.sh
@@ -0,0 +1,20 @@
+MACHINE=
+SCRIPT_NAME=elfd30v
+OUTPUT_FORMAT="elf32-d30v"
+TEXT_START_ADDR=0x00000000
+DATA_START_ADDR=0x20000000
+EMEM_START_ADDR=0x80000000
+STACK_START_ADDR=0x20008000
+EIT_START_ADDR=0xfffff020
+TEXT_SIZE=64K
+DATA_SIZE=32K
+EMEM_SIZE=8M
+EIT_SIZE=320
+TEXT_MEMORY=text
+DATA_MEMORY=data
+BSS_MEMORY=data
+TEXT_DEF_SECTION="(x)"
+DATA_DEF_SECTION="(rw)"
+EMEM_DEF_SECTION=""
+ARCH=d30v
+EMBEDDED=t
diff --git a/ld/emulparams/d30velf.sh b/ld/emulparams/d30velf.sh
new file mode 100644
index 0000000..949de78
--- /dev/null
+++ b/ld/emulparams/d30velf.sh
@@ -0,0 +1,20 @@
+MACHINE=
+SCRIPT_NAME=elfd30v
+OUTPUT_FORMAT="elf32-d30v"
+TEXT_START_ADDR=0x00000000
+DATA_START_ADDR=0x20000000
+EMEM_START_ADDR=0x80000000
+STACK_START_ADDR=0x20008000
+EIT_START_ADDR=0xfffff020
+TEXT_SIZE=2000K
+DATA_SIZE=2000K
+EMEM_SIZE=8M
+EIT_SIZE=320
+TEXT_MEMORY=text
+DATA_MEMORY=data
+BSS_MEMORY=data
+TEXT_DEF_SECTION="(x)"
+DATA_DEF_SECTION="(rw)"
+EMEM_DEF_SECTION=""
+ARCH=d30v
+EMBEDDED=t
diff --git a/ld/emulparams/delta68.sh b/ld/emulparams/delta68.sh
new file mode 100644
index 0000000..e3c5909
--- /dev/null
+++ b/ld/emulparams/delta68.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=delta68
+OUTPUT_FORMAT="coff-m68k-sysv"
+TEXT_START_ADDR=0x2000
+PAGE_SIZE=0x1000000
+ARCH=m68k
diff --git a/ld/emulparams/ebmon29k.sh b/ld/emulparams/ebmon29k.sh
new file mode 100644
index 0000000..fbc2bd1
--- /dev/null
+++ b/ld/emulparams/ebmon29k.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=ebmon29k
+OUTPUT_FORMAT="coff-a29k-big"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=0x1000
+ARCH=a29k
diff --git a/ld/emulparams/elf32_sparc.sh b/ld/emulparams/elf32_sparc.sh
new file mode 100644
index 0000000..74e2326
--- /dev/null
+++ b/ld/emulparams/elf32_sparc.sh
@@ -0,0 +1,11 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-sparc"
+TEXT_START_ADDR=0x10000
+MAXPAGESIZE=0x10000
+NONPAGED_TEXT_START_ADDR=0x10000
+ALIGNMENT=8
+ARCH=sparc
+MACHINE=
+TEMPLATE_NAME=elf32
+DATA_PLT=
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/elf32b4300.sh b/ld/emulparams/elf32b4300.sh
new file mode 100644
index 0000000..24f8d98
--- /dev/null
+++ b/ld/emulparams/elf32b4300.sh
@@ -0,0 +1,29 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-bigmips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0xa0020000
+MAXPAGESIZE=0x40000
+INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+EXECUTABLE_SYMBOLS='_DYNAMIC_LINK = 0;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+DYNAMIC_LINK=false
+EMBEDDED=yes
diff --git a/ld/emulparams/elf32bmip.sh b/ld/emulparams/elf32bmip.sh
new file mode 100644
index 0000000..473c411
--- /dev/null
+++ b/ld/emulparams/elf32bmip.sh
@@ -0,0 +1,30 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-bigmips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0x0400000
+DATA_ADDR=0x10000000
+MAXPAGESIZE=0x40000
+NONPAGED_TEXT_START_ADDR=0x0400000
+SHLIB_TEXT_START_ADDR=0x5ffe0000
+TEXT_DYNAMIC=
+INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/elf32bsmip.sh b/ld/emulparams/elf32bsmip.sh
new file mode 100644
index 0000000..09f1307
--- /dev/null
+++ b/ld/emulparams/elf32bsmip.sh
@@ -0,0 +1,31 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-bigmips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0x0400000
+DATA_ADDR=0x10000000
+MAXPAGESIZE=0x40000
+NONPAGED_TEXT_START_ADDR=0x0400000
+SHLIB_TEXT_START_ADDR=0x5ffe0000
+TEXT_DYNAMIC=
+INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+ENTRY=__start
diff --git a/ld/emulparams/elf32ebmip.sh b/ld/emulparams/elf32ebmip.sh
new file mode 100644
index 0000000..00ea8fd
--- /dev/null
+++ b/ld/emulparams/elf32ebmip.sh
@@ -0,0 +1,28 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-bigmips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0x0400000
+MAXPAGESIZE=0x40000
+NONPAGED_TEXT_START_ADDR=0x0400000
+SHLIB_TEXT_START_ADDR=0x5ffe0000
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+EMBEDDED=yes
diff --git a/ld/emulparams/elf32elmip.sh b/ld/emulparams/elf32elmip.sh
new file mode 100644
index 0000000..cf008c8
--- /dev/null
+++ b/ld/emulparams/elf32elmip.sh
@@ -0,0 +1,28 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlemips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0x0400000
+MAXPAGESIZE=0x40000
+NONPAGED_TEXT_START_ADDR=0x0400000
+SHLIB_TEXT_START_ADDR=0x5ffe0000
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+EMBEDDED=yes
diff --git a/ld/emulparams/elf32fr30.sh b/ld/emulparams/elf32fr30.sh
new file mode 100755
index 0000000..1be1f53
--- /dev/null
+++ b/ld/emulparams/elf32fr30.sh
@@ -0,0 +1,10 @@
+MACHINE=
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-fr30"
+TEXT_START_ADDR=0x10000
+ARCH=fr30
+MAXPAGESIZE=256
+ENTRY=_start
+EMBEDDED=yes
+NOP=0x9fa0
+OTHER_RELOCATING_SECTIONS='PROVIDE (__stack = 0x200000);' \ No newline at end of file
diff --git a/ld/emulparams/elf32l4300.sh b/ld/emulparams/elf32l4300.sh
new file mode 100644
index 0000000..690de88
--- /dev/null
+++ b/ld/emulparams/elf32l4300.sh
@@ -0,0 +1,29 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlemips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0xa0020000
+MAXPAGESIZE=0x40000
+INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+EXECUTABLE_SYMBOLS='_DYNAMIC_LINK = 0;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+DYNAMIC_LINK=false
+EMBEDDED=yes
diff --git a/ld/emulparams/elf32lmip.sh b/ld/emulparams/elf32lmip.sh
new file mode 100644
index 0000000..23312f4
--- /dev/null
+++ b/ld/emulparams/elf32lmip.sh
@@ -0,0 +1,30 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlemips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0x0400000
+DATA_ADDR=0x10000000
+MAXPAGESIZE=0x40000
+NONPAGED_TEXT_START_ADDR=0x0400000
+SHLIB_TEXT_START_ADDR=0x5ffe0000
+TEXT_DYNAMIC=
+INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/elf32lppc.sh b/ld/emulparams/elf32lppc.sh
new file mode 100644
index 0000000..edffc61
--- /dev/null
+++ b/ld/emulparams/elf32lppc.sh
@@ -0,0 +1,8 @@
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+SCRIPT_NAME=elfppc
+OUTPUT_FORMAT="elf32-powerpcle"
+TEXT_START_ADDR=0x40000
+MAXPAGESIZE=0x40000
+ARCH=powerpc
+MACHINE=
diff --git a/ld/emulparams/elf32lsmip.sh b/ld/emulparams/elf32lsmip.sh
new file mode 100644
index 0000000..4bdc8a1
--- /dev/null
+++ b/ld/emulparams/elf32lsmip.sh
@@ -0,0 +1,31 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-littlemips"
+BIG_OUTPUT_FORMAT="elf32-bigmips"
+LITTLE_OUTPUT_FORMAT="elf32-littlemips"
+TEXT_START_ADDR=0x0400000
+DATA_ADDR=0x10000000
+MAXPAGESIZE=0x40000
+NONPAGED_TEXT_START_ADDR=0x0400000
+SHLIB_TEXT_START_ADDR=0x5ffe0000
+TEXT_DYNAMIC=
+INITIAL_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+OTHER_TEXT_SECTIONS='*(.mips16.fn.*) *(.mips16.call.*)'
+OTHER_GOT_SYMBOLS='
+ _gp = ALIGN(16) + 0x7ff0;
+'
+OTHER_GOT_SECTIONS='
+ .lit8 : { *(.lit8) }
+ .lit4 : { *(.lit4) }
+'
+TEXT_START_SYMBOLS='_ftext = . ;'
+DATA_START_SYMBOLS='_fdata = . ;'
+OTHER_BSS_SYMBOLS='_fbss = .;'
+OTHER_SECTIONS='
+ .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+ .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
+'
+ARCH=mips
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+ENTRY=__start
diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh
new file mode 100644
index 0000000..47d960f
--- /dev/null
+++ b/ld/emulparams/elf32mcore.sh
@@ -0,0 +1,20 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-mcore-big"
+BIG_OUTPUT_FORMAT="elf32-mcore-big"
+LITTLE_OUTPUT_FORMAT="elf32-mcore-little"
+PAGE_SIZE=0x1000
+TARGET_PAGE_SIZE=0x400
+MAXPAGESIZE=0x1000
+TEXT_START_ADDR=0
+NONPAGED_TEXT_START_ADDR=0
+ARCH=mcore
+# 1211 == mov r1,r1
+NOP=0x1211
+EMBEDDED=yes
+
+OTHER_BSS_SYMBOLS="__bss_start__ = . ;"
+OTHER_BSS_END_SYMBOLS="__bss_end__ = . ;"
+
+# Hmmm, there's got to be a better way. This sets the stack to the
+# top of the simulator memory (2^19 bytes).
+OTHER_RELOCATING_SECTIONS='.stack 0x80000 : { _stack = .; *(.stack) }'
diff --git a/ld/emulparams/elf32ppc.sh b/ld/emulparams/elf32ppc.sh
new file mode 100644
index 0000000..8af42f1
--- /dev/null
+++ b/ld/emulparams/elf32ppc.sh
@@ -0,0 +1,8 @@
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+SCRIPT_NAME=elfppc
+OUTPUT_FORMAT="elf32-powerpc"
+TEXT_START_ADDR=0x01800000
+MAXPAGESIZE=0x40000
+ARCH=powerpc
+MACHINE=
diff --git a/ld/emulparams/elf64_sparc.sh b/ld/emulparams/elf64_sparc.sh
new file mode 100644
index 0000000..d0fbdfd
--- /dev/null
+++ b/ld/emulparams/elf64_sparc.sh
@@ -0,0 +1,12 @@
+SCRIPT_NAME=elf
+ELFSIZE=64
+TEMPLATE_NAME=elf32
+OUTPUT_FORMAT="elf64-sparc"
+TEXT_START_ADDR=0x100000
+MAXPAGESIZE=0x100000
+NONPAGED_TEXT_START_ADDR=0x100000
+ARCH="sparc:v9"
+MACHINE=
+DATA_PLT=
+GENERATE_SHLIB_SCRIPT=yes
+NOP=0x01000000
diff --git a/ld/emulparams/elf64alpha.sh b/ld/emulparams/elf64alpha.sh
new file mode 100644
index 0000000..afa21f2
--- /dev/null
+++ b/ld/emulparams/elf64alpha.sh
@@ -0,0 +1,15 @@
+ENTRY=__start
+SCRIPT_NAME=elf
+ELFSIZE=64
+TEMPLATE_NAME=elf32
+OUTPUT_FORMAT="elf64-alpha"
+TEXT_START_ADDR="0x120000000"
+MAXPAGESIZE=0x100000
+NONPAGED_TEXT_START_ADDR="0x120000000"
+ARCH=alpha
+MACHINE=
+GENERATE_SHLIB_SCRIPT=yes
+DATA_PLT=
+NOP=0x47ff041f
+
+OTHER_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
diff --git a/ld/emulparams/elf_i386.sh b/ld/emulparams/elf_i386.sh
new file mode 100644
index 0000000..dff567b
--- /dev/null
+++ b/ld/emulparams/elf_i386.sh
@@ -0,0 +1,10 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-i386"
+TEXT_START_ADDR=0x08048000
+MAXPAGESIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x08048000
+ARCH=i386
+MACHINE=
+NOP=0x9090
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/elf_i386_be.sh b/ld/emulparams/elf_i386_be.sh
new file mode 100644
index 0000000..9977a06
--- /dev/null
+++ b/ld/emulparams/elf_i386_be.sh
@@ -0,0 +1,11 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-i386"
+TEXT_START_ADDR=0x80000000
+#SHLIB_TEXT_START_ADDR=0x80000000
+NONPAGED_TEXT_START_ADDR=0x80000000
+MAXPAGESIZE=0x1000
+ARCH=i386
+MACHINE=
+NOP=0x9090
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/gld960.sh b/ld/emulparams/gld960.sh
new file mode 100644
index 0000000..ef81a78
--- /dev/null
+++ b/ld/emulparams/gld960.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=i960
+OUTPUT_FORMAT=""
+TEXT_START_ADDR=??
+TARGET_PAGE_SIZE=??
+ARCH=i960
+TEMPLATE_NAME=gld960
+GLD_STYLE=1
diff --git a/ld/emulparams/gld960coff.sh b/ld/emulparams/gld960coff.sh
new file mode 100644
index 0000000..7820220
--- /dev/null
+++ b/ld/emulparams/gld960coff.sh
@@ -0,0 +1,19 @@
+SCRIPT_NAME=i960
+OUTPUT_FORMAT=""
+TEXT_START_ADDR=??
+TARGET_PAGE_SIZE=??
+ARCH=i960
+TEMPLATE_NAME=gld960c
+GLD_STYLE=1
+COFF_CTORS='
+ ___CTOR_LIST__ = .;
+ LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
+ *(.ctors)
+ LONG(0)
+ ___CTOR_END__ = .;
+ ___DTOR_LIST__ = .;
+ LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
+ *(.dtors)
+ LONG(0)
+ ___DTOR_END__ = .;
+'
diff --git a/ld/emulparams/go32.sh b/ld/emulparams/go32.sh
new file mode 100644
index 0000000..d13357f
--- /dev/null
+++ b/ld/emulparams/go32.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=go32coff
+OUTPUT_FORMAT="coff-go32"
+TEXT_START_ADDR=0x10a8
+TARGET_PAGE_SIZE=0x1000
+SEGMENT_SIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x0
+ARCH=i386
diff --git a/ld/emulparams/h8300.sh b/ld/emulparams/h8300.sh
new file mode 100644
index 0000000..49eb3c4
--- /dev/null
+++ b/ld/emulparams/h8300.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8300
+OUTPUT_FORMAT="coff-h8300"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8300
diff --git a/ld/emulparams/h8300h.sh b/ld/emulparams/h8300h.sh
new file mode 100644
index 0000000..3ab794e
--- /dev/null
+++ b/ld/emulparams/h8300h.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8300h
+OUTPUT_FORMAT="coff-h8300"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8300
diff --git a/ld/emulparams/h8300s.sh b/ld/emulparams/h8300s.sh
new file mode 100644
index 0000000..e27b4f5
--- /dev/null
+++ b/ld/emulparams/h8300s.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8300s
+OUTPUT_FORMAT="coff-h8300"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8300
diff --git a/ld/emulparams/h8500.sh b/ld/emulparams/h8500.sh
new file mode 100644
index 0000000..6f4ca80
--- /dev/null
+++ b/ld/emulparams/h8500.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8500
+OUTPUT_FORMAT="coff-h8500"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8500
diff --git a/ld/emulparams/h8500b.sh b/ld/emulparams/h8500b.sh
new file mode 100644
index 0000000..d2d3fee
--- /dev/null
+++ b/ld/emulparams/h8500b.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8500b
+OUTPUT_FORMAT="coff-h8500"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8500
diff --git a/ld/emulparams/h8500c.sh b/ld/emulparams/h8500c.sh
new file mode 100644
index 0000000..240a065
--- /dev/null
+++ b/ld/emulparams/h8500c.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8500c
+OUTPUT_FORMAT="coff-h8500"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8500
diff --git a/ld/emulparams/h8500m.sh b/ld/emulparams/h8500m.sh
new file mode 100644
index 0000000..cd9f7b6
--- /dev/null
+++ b/ld/emulparams/h8500m.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8500m
+OUTPUT_FORMAT="coff-h8500"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8500
diff --git a/ld/emulparams/h8500s.sh b/ld/emulparams/h8500s.sh
new file mode 100644
index 0000000..b9e294a
--- /dev/null
+++ b/ld/emulparams/h8500s.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=h8500s
+OUTPUT_FORMAT="coff-h8500"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=h8500
diff --git a/ld/emulparams/hp300bsd.sh b/ld/emulparams/hp300bsd.sh
new file mode 100644
index 0000000..8f5c50b
--- /dev/null
+++ b/ld/emulparams/hp300bsd.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-hp300bsd"
+TEXT_START_ADDR=0
+TARGET_PAGE_SIZE=4096
+ARCH=m68k
diff --git a/ld/emulparams/hp3hpux.sh b/ld/emulparams/hp3hpux.sh
new file mode 100644
index 0000000..b7badd8
--- /dev/null
+++ b/ld/emulparams/hp3hpux.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-hp300hpux"
+TEXT_START_ADDR=0
+TARGET_PAGE_SIZE=4096
+ARCH=m68k
+STACKZERO="___stack_zero = 0x2000; __DYNAMIC = 0;"
+# This is needed for HPUX 9.0; it is unnecessary but harmless for 8.0.
+SHLIB_PATH="___dld_shlib_path = 0;"
diff --git a/ld/emulparams/hppaelf.sh b/ld/emulparams/hppaelf.sh
new file mode 100644
index 0000000..47b89ea
--- /dev/null
+++ b/ld/emulparams/hppaelf.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=hppaelf
+OUTPUT_FORMAT="elf32-hppa"
+TEXT_START_ADDR=0x1000
+TARGET_PAGE_SIZE=4096
+ARCH=hppa
+START="$START$"
+TEMPLATE_NAME=hppaelf
diff --git a/ld/emulparams/i386aout.sh b/ld/emulparams/i386aout.sh
new file mode 100644
index 0000000..dc9e554
--- /dev/null
+++ b/ld/emulparams/i386aout.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-i386"
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0
+NONPAGED_TEXT_START_ADDR=0x1000
+ARCH=i386
diff --git a/ld/emulparams/i386beos.sh b/ld/emulparams/i386beos.sh
new file mode 100755
index 0000000..869da5f
--- /dev/null
+++ b/ld/emulparams/i386beos.sh
@@ -0,0 +1,5 @@
+ARCH=i386
+SCRIPT_NAME=i386beos
+OUTPUT_FORMAT="pei-i386"
+RELOCATEABLE_OUTPUT_FORMAT="pe-i386"
+TEMPLATE_NAME=beos
diff --git a/ld/emulparams/i386bsd.sh b/ld/emulparams/i386bsd.sh
new file mode 100644
index 0000000..e0c0e2f
--- /dev/null
+++ b/ld/emulparams/i386bsd.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-i386-bsd"
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0
+NONPAGED_TEXT_START_ADDR=0x1000
+ARCH=i386
diff --git a/ld/emulparams/i386coff.sh b/ld/emulparams/i386coff.sh
new file mode 100644
index 0000000..3417b7d
--- /dev/null
+++ b/ld/emulparams/i386coff.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=i386coff
+OUTPUT_FORMAT="coff-i386"
+TEXT_START_ADDR=0x1000000
+TARGET_PAGE_SIZE=0x1000000
+ARCH=i386
diff --git a/ld/emulparams/i386go32.sh b/ld/emulparams/i386go32.sh
new file mode 100644
index 0000000..0ef16c4
--- /dev/null
+++ b/ld/emulparams/i386go32.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=i386go32
+OUTPUT_FORMAT="coff-go32"
+TEXT_START_ADDR=0x10a8
+TARGET_PAGE_SIZE=0x1000
+SEGMENT_SIZE=0x200
+NONPAGED_TEXT_START_ADDR=0x0
+ARCH=i386
+
diff --git a/ld/emulparams/i386linux.sh b/ld/emulparams/i386linux.sh
new file mode 100644
index 0000000..a416422
--- /dev/null
+++ b/ld/emulparams/i386linux.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-i386-linux"
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0x1020
+NONPAGED_TEXT_START_ADDR=0
+ARCH=i386
+TEMPLATE_NAME=linux
diff --git a/ld/emulparams/i386lynx.sh b/ld/emulparams/i386lynx.sh
new file mode 100644
index 0000000..988c175
--- /dev/null
+++ b/ld/emulparams/i386lynx.sh
@@ -0,0 +1,9 @@
+SCRIPT_NAME=i386lynx
+OUTPUT_FORMAT="coff-i386-lynx"
+# This is what LynxOS /lib/init1.o wants.
+ENTRY=_main
+# following are dubious
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0
+NONPAGED_TEXT_START_ADDR=0x1000
+ARCH=i386
diff --git a/ld/emulparams/i386mach.sh b/ld/emulparams/i386mach.sh
new file mode 100644
index 0000000..b7cb276
--- /dev/null
+++ b/ld/emulparams/i386mach.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-mach3"
+TEXT_START_ADDR=0x10020
+NONPAGED_TEXT_START_ADDR=0x10000
+SEGMENT_SIZE=0x1000
+PAD_TEXT=t
+ARCH=i386
diff --git a/ld/emulparams/i386moss.sh b/ld/emulparams/i386moss.sh
new file mode 100644
index 0000000..a5e0e05
--- /dev/null
+++ b/ld/emulparams/i386moss.sh
@@ -0,0 +1,10 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-i386"
+TEXT_START_ADDR=0x00002000
+MAXPAGESIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x00002000
+ARCH=i386
+MACHINE=
+NOP=0x9090
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/i386msdos.sh b/ld/emulparams/i386msdos.sh
new file mode 100644
index 0000000..9311fa1
--- /dev/null
+++ b/ld/emulparams/i386msdos.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=i386msdos
+OUTPUT_FORMAT="msdos"
+TEXT_START_ADDR=0x0
+NONPAGED_TEXT_START_ADDR=0x0
+SEGMENT_SIZE=0x10
+PAD_TEXT=t
+ARCH=i386
diff --git a/ld/emulparams/i386nbsd.sh b/ld/emulparams/i386nbsd.sh
new file mode 100644
index 0000000..a9e6a38
--- /dev/null
+++ b/ld/emulparams/i386nbsd.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x1020
+OUTPUT_FORMAT="a.out-i386-netbsd"
+TARGET_PAGE_SIZE=0x1000
+ARCH=i386
+EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
diff --git a/ld/emulparams/i386nw.sh b/ld/emulparams/i386nw.sh
new file mode 100644
index 0000000..e70ed67
--- /dev/null
+++ b/ld/emulparams/i386nw.sh
@@ -0,0 +1,9 @@
+SCRIPT_NAME=nw
+OUTPUT_FORMAT="elf32-i386"
+TEXT_START_ADDR=0x08000000
+MAXPAGESIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x08000000
+ARCH=i386
+NOP=0x9090
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/i386pe.sh b/ld/emulparams/i386pe.sh
new file mode 100644
index 0000000..188a8ad
--- /dev/null
+++ b/ld/emulparams/i386pe.sh
@@ -0,0 +1,5 @@
+ARCH=i386
+SCRIPT_NAME=pe
+OUTPUT_FORMAT="pei-i386"
+RELOCATEABLE_OUTPUT_FORMAT="pe-i386"
+TEMPLATE_NAME=pe
diff --git a/ld/emulparams/lnk960.sh b/ld/emulparams/lnk960.sh
new file mode 100644
index 0000000..3cf3fc4
--- /dev/null
+++ b/ld/emulparams/lnk960.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=i960
+OUTPUT_FORMAT=""
+TEXT_START_ADDR=??
+TARGET_PAGE_SIZE=??
+ARCH=i960
+TEMPLATE_NAME=lnk960
diff --git a/ld/emulparams/m32relf.sh b/ld/emulparams/m32relf.sh
new file mode 100644
index 0000000..cd7705a
--- /dev/null
+++ b/ld/emulparams/m32relf.sh
@@ -0,0 +1,13 @@
+MACHINE=
+SCRIPT_NAME=elf
+TEMPLATE_NAME=elf32
+OUTPUT_FORMAT="elf32-m32r"
+TEXT_START_ADDR=0x100
+ARCH=m32r
+MACHINE=
+MAXPAGESIZE=32
+EMBEDDED=yes
+
+# Hmmm, there's got to be a better way. This sets the stack to the
+# top of simulator memory (8MB).
+OTHER_RELOCATING_SECTIONS='PROVIDE (_stack = 0x800000);'
diff --git a/ld/emulparams/m68k4knbsd.sh b/ld/emulparams/m68k4knbsd.sh
new file mode 100644
index 0000000..1bc24c0e
--- /dev/null
+++ b/ld/emulparams/m68k4knbsd.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x1020
+NONPAGED_TEXT_START_ADDR=0x1000
+OUTPUT_FORMAT="a.out-m68k4k-netbsd"
+TARGET_PAGE_SIZE=0x1000
+ARCH=m68k
+EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
diff --git a/ld/emulparams/m68kaout.sh b/ld/emulparams/m68kaout.sh
new file mode 100644
index 0000000..9bfaaf7
--- /dev/null
+++ b/ld/emulparams/m68kaout.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-zero-big"
+TEXT_START_ADDR=0x2020
+TARGET_PAGE_SIZE=0x2000
+SEGMENT_SIZE=0x20000
+NONPAGED_TEXT_START_ADDR=0x2000
+ARCH=m68k
diff --git a/ld/emulparams/m68kaux.sh b/ld/emulparams/m68kaux.sh
new file mode 100644
index 0000000..19e86cc
--- /dev/null
+++ b/ld/emulparams/m68kaux.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=m68kaux
+OUTPUT_FORMAT="coff-m68k-aux"
+SEGMENT_SIZE=0x40000
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR="$SEGMENT_SIZE + SIZEOF_HEADERS"
+NON_PAGED_TEXT_START_ADDR=SIZEOF_HEADERS
+DATA_ALIGNMENT_="(. & (-$SEGMENT_SIZE | $TARGET_PAGE_SIZE-1)) + $SEGMENT_SIZE"
+ARCH=m68k
diff --git a/ld/emulparams/m68kcoff.sh b/ld/emulparams/m68kcoff.sh
new file mode 100644
index 0000000..b417c0d
--- /dev/null
+++ b/ld/emulparams/m68kcoff.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=m68kcoff
+OUTPUT_FORMAT="coff-m68k"
+TEXT_START_ADDR=0x1000000
+TARGET_PAGE_SIZE=0x1000000
+ARCH=m68k
diff --git a/ld/emulparams/m68kelf.sh b/ld/emulparams/m68kelf.sh
new file mode 100644
index 0000000..ad352c5
--- /dev/null
+++ b/ld/emulparams/m68kelf.sh
@@ -0,0 +1,10 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-m68k"
+TEXT_START_ADDR=0x80000000
+MAXPAGESIZE=0x2000
+NONPAGED_TEXT_START_ADDR=${TEXT_START_ADDR}
+ARCH=m68k
+MACHINE=
+NOP=0x4e75
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/ld/emulparams/m68klinux.sh b/ld/emulparams/m68klinux.sh
new file mode 100644
index 0000000..56c3dad
--- /dev/null
+++ b/ld/emulparams/m68klinux.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-m68k-linux"
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0x1020
+NONPAGED_TEXT_START_ADDR=0
+ARCH=m68k
+TEMPLATE_NAME=linux
diff --git a/ld/emulparams/m68klynx.sh b/ld/emulparams/m68klynx.sh
new file mode 100644
index 0000000..b020feb
--- /dev/null
+++ b/ld/emulparams/m68klynx.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=m68klynx
+OUTPUT_FORMAT="coff-m68k-lynx"
+# This is what LynxOS /lib/init1.o wants.
+ENTRY=__main
+# following are dubious
+TEXT_START_ADDR=0
+TARGET_PAGE_SIZE=0x1000
+ARCH=m68k
diff --git a/ld/emulparams/m68knbsd.sh b/ld/emulparams/m68knbsd.sh
new file mode 100644
index 0000000..a742807
--- /dev/null
+++ b/ld/emulparams/m68knbsd.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x2020
+NONPAGED_TEXT_START_ADDR=0x2000
+OUTPUT_FORMAT="a.out-m68k-netbsd"
+TARGET_PAGE_SIZE=0x2000
+ARCH=m68k
+EXECUTABLE_SYMBOLS='__DYNAMIC = 0;'
diff --git a/ld/emulparams/m68kpsos.sh b/ld/emulparams/m68kpsos.sh
new file mode 100644
index 0000000..34eb8ca
--- /dev/null
+++ b/ld/emulparams/m68kpsos.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=psos
+OUTPUT_FORMAT="elf32-m68k"
+TEXT_START_ADDR=0x20000
+MAXPAGESIZE=0x1000
+ARCH=m68k
+TEMPLATE_NAME=elf32
diff --git a/ld/emulparams/m88kbcs.sh b/ld/emulparams/m88kbcs.sh
new file mode 100644
index 0000000..6c6737c
--- /dev/null
+++ b/ld/emulparams/m88kbcs.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=m88kbcs
+OUTPUT_FORMAT="coff-m88kbcs"
+TEXT_START_ADDR=??
+TARGET_PAGE_SIZE=??
+ARCH=m88k
diff --git a/ld/emulparams/mcorepe.sh b/ld/emulparams/mcorepe.sh
new file mode 100644
index 0000000..b5baee9
--- /dev/null
+++ b/ld/emulparams/mcorepe.sh
@@ -0,0 +1,6 @@
+ARCH=mcore
+SCRIPT_NAME=mcorepe
+OUTPUT_FORMAT="pei-mcore-big"
+LITTLE_OUTPUT_FORMAT="pei-mcore-little"
+BIG_OUTPUT_FORMAT="pei-mcore-big"
+TEMPLATE_NAME=pe
diff --git a/ld/emulparams/mipsbig.sh b/ld/emulparams/mipsbig.sh
new file mode 100644
index 0000000..9fe2953
--- /dev/null
+++ b/ld/emulparams/mipsbig.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=mips
+OUTPUT_FORMAT="ecoff-bigmips"
+BIG_OUTPUT_FORMAT="ecoff-bigmips"
+LITTLE_OUTPUT_FORMAT="ecoff-littlemips"
+TARGET_PAGE_SIZE=0x1000000
+ARCH=mips
diff --git a/ld/emulparams/mipsbsd.sh b/ld/emulparams/mipsbsd.sh
new file mode 100644
index 0000000..e8fb35b
--- /dev/null
+++ b/ld/emulparams/mipsbsd.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=mipsbsd
+OUTPUT_FORMAT="a.out-mips-little"
+BIG_OUTPUT_FORMAT="a.out-mips-big"
+LITTLE_OUTPUT_FORMAT="a.out-mips-little"
+TEXT_START_ADDR=0x1020
+TARGET_PAGE_SIZE=4096
+ARCH=mips
diff --git a/ld/emulparams/mipsidt.sh b/ld/emulparams/mipsidt.sh
new file mode 100644
index 0000000..63176f5
--- /dev/null
+++ b/ld/emulparams/mipsidt.sh
@@ -0,0 +1,11 @@
+SCRIPT_NAME=mips
+OUTPUT_FORMAT="ecoff-bigmips"
+BIG_OUTPUT_FORMAT="ecoff-bigmips"
+LITTLE_OUTPUT_FORMAT="ecoff-littlemips"
+TARGET_PAGE_SIZE=0x1000000
+ARCH=mips
+ENTRY=start
+TEXT_START_ADDR=0xa0012000
+DATA_ADDR=.
+TEMPLATE_NAME=mipsecoff
+EMBEDDED=yes
diff --git a/ld/emulparams/mipsidtl.sh b/ld/emulparams/mipsidtl.sh
new file mode 100644
index 0000000..02279de
--- /dev/null
+++ b/ld/emulparams/mipsidtl.sh
@@ -0,0 +1,11 @@
+SCRIPT_NAME=mips
+OUTPUT_FORMAT="ecoff-littlemips"
+BIG_OUTPUT_FORMAT="ecoff-bigmips"
+LITTLE_OUTPUT_FORMAT="ecoff-littlemips"
+TARGET_PAGE_SIZE=0x1000000
+ARCH=mips
+ENTRY=start
+TEXT_START_ADDR=0xa0012000
+DATA_ADDR=.
+TEMPLATE_NAME=mipsecoff
+EMBEDDED=yes
diff --git a/ld/emulparams/mipslit.sh b/ld/emulparams/mipslit.sh
new file mode 100644
index 0000000..acb2344
--- /dev/null
+++ b/ld/emulparams/mipslit.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=mips
+OUTPUT_FORMAT="ecoff-littlemips"
+BIG_OUTPUT_FORMAT="ecoff-bigmips"
+LITTLE_OUTPUT_FORMAT="ecoff-littlemips"
+TARGET_PAGE_SIZE=0x1000000
+ARCH=mips
diff --git a/ld/emulparams/mipslnews.sh b/ld/emulparams/mipslnews.sh
new file mode 100644
index 0000000..d0bb91c
--- /dev/null
+++ b/ld/emulparams/mipslnews.sh
@@ -0,0 +1,9 @@
+SCRIPT_NAME=mips
+OUTPUT_FORMAT="ecoff-littlemips"
+BIG_OUTPUT_FORMAT="ecoff-bigmips"
+LITTLE_OUTPUT_FORMAT="ecoff-littlemips"
+TARGET_PAGE_SIZE=0x1000000
+ARCH=mips
+TEXT_START_ADDR=0x80080000
+DATA_ADDR=.
+EMBEDDED=yes
diff --git a/ld/emulparams/mn10200.sh b/ld/emulparams/mn10200.sh
new file mode 100644
index 0000000..6324322
--- /dev/null
+++ b/ld/emulparams/mn10200.sh
@@ -0,0 +1,20 @@
+MACHINE=
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-mn10200"
+TEXT_START_ADDR=0x0
+ARCH=mn10200
+MACHINE=
+MAXPAGESIZE=1
+ENTRY=_start
+EMBEDDED=yes
+
+# Hmmm, there's got to be a better way. This sets the stack to the
+# top of the simulator memory (2^19 bytes).
+OTHER_RELOCATING_SECTIONS='.stack 0x80000 : { _stack = .; *(.stack) }'
+
+# These are for compatibility with the COFF toolchain.
+# XXX These should definitely disappear.
+CTOR_START='___ctors = .;'
+CTOR_END='___ctors_end = .;'
+DTOR_START='___dtors = .;'
+DTOR_END='___dtors_end = .;'
diff --git a/ld/emulparams/mn10300.sh b/ld/emulparams/mn10300.sh
new file mode 100644
index 0000000..44a40e5
--- /dev/null
+++ b/ld/emulparams/mn10300.sh
@@ -0,0 +1,20 @@
+MACHINE=
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-mn10300"
+TEXT_START_ADDR=0x0
+ARCH=mn10300
+MACHINE=
+MAXPAGESIZE=1
+ENTRY=_start
+EMBEDDED=yes
+
+# Hmmm, there's got to be a better way. This sets the stack to the
+# top of the simulator memory (2^19 bytes).
+OTHER_RELOCATING_SECTIONS='.stack 0x80000 : { _stack = .; *(.stack) }'
+
+# These are for compatibility with the COFF toolchain.
+# XXX These should definitely disappear.
+CTOR_START='___ctors = .;'
+CTOR_END='___ctors_end = .;'
+DTOR_START='___dtors = .;'
+DTOR_END='___dtors_end = .;'
diff --git a/ld/emulparams/news.sh b/ld/emulparams/news.sh
new file mode 100644
index 0000000..310ddf9
--- /dev/null
+++ b/ld/emulparams/news.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-newsos3"
+TEXT_START_ADDR=0
+TARGET_PAGE_SIZE=0x1000
+ARCH=m68k
diff --git a/ld/emulparams/ns32knbsd.sh b/ld/emulparams/ns32knbsd.sh
new file mode 100644
index 0000000..1c4fdf3
--- /dev/null
+++ b/ld/emulparams/ns32knbsd.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x1020
+OUTPUT_FORMAT="a.out-ns32k-netbsd"
+TARGET_PAGE_SIZE=0x1000
+ARCH=ns32k
diff --git a/ld/emulparams/pc532macha.sh b/ld/emulparams/pc532macha.sh
new file mode 100644
index 0000000..9c1d079
--- /dev/null
+++ b/ld/emulparams/pc532macha.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-pc532-mach"
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR="0x10020"
+NONPAGED_TEXT_START_ADDR=0x10000
+ARCH=ns32k
diff --git a/ld/emulparams/ppcmacos.sh b/ld/emulparams/ppcmacos.sh
new file mode 100644
index 0000000..b6b800c
--- /dev/null
+++ b/ld/emulparams/ppcmacos.sh
@@ -0,0 +1,4 @@
+TEMPLATE_NAME=aix
+SCRIPT_NAME=aix
+OUTPUT_FORMAT="xcoff-powermac"
+ARCH=powerpc
diff --git a/ld/emulparams/ppcnw.sh b/ld/emulparams/ppcnw.sh
new file mode 100644
index 0000000..c3ead43
--- /dev/null
+++ b/ld/emulparams/ppcnw.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=nw
+OUTPUT_FORMAT="elf32-powerpc"
+TEXT_START_ADDR=0x0400000
+DATA_ADDR=0x10000000
+MAXPAGESIZE=0x40000
+NONPAGED_TEXT_START_ADDR=0x0400000
+ARCH=powerpc
diff --git a/ld/emulparams/ppcpe.sh b/ld/emulparams/ppcpe.sh
new file mode 100644
index 0000000..655282d
--- /dev/null
+++ b/ld/emulparams/ppcpe.sh
@@ -0,0 +1,4 @@
+ARCH=powerpc
+SCRIPT_NAME=ppcpe
+OUTPUT_FORMAT="pei-powerpcle"
+TEMPLATE_NAME=pe
diff --git a/ld/emulparams/riscix.sh b/ld/emulparams/riscix.sh
new file mode 100644
index 0000000..e7f6d92
--- /dev/null
+++ b/ld/emulparams/riscix.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=riscix
+OUTPUT_FORMAT="a.out-riscix"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=0x8000
+ARCH=arm
diff --git a/ld/emulparams/sa29200.sh b/ld/emulparams/sa29200.sh
new file mode 100644
index 0000000..8b52f92
--- /dev/null
+++ b/ld/emulparams/sa29200.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=sa29200
+OUTPUT_FORMAT="coff-a29k-big"
+TEXT_START_ADDR=0x40004000
+TARGET_PAGE_SIZE=0x1000
+ARCH=a29k
diff --git a/ld/emulparams/sh.sh b/ld/emulparams/sh.sh
new file mode 100644
index 0000000..38844fb
--- /dev/null
+++ b/ld/emulparams/sh.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=sh
+OUTPUT_FORMAT="coff-sh"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=sh
diff --git a/ld/emulparams/shelf.sh b/ld/emulparams/shelf.sh
new file mode 100644
index 0000000..95db587
--- /dev/null
+++ b/ld/emulparams/shelf.sh
@@ -0,0 +1,17 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-sh"
+TEXT_START_ADDR=0x1000
+MAXPAGESIZE=128
+ARCH=sh
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+EMBEDDED=yes
+
+# These are for compatibility with the COFF toolchain.
+ENTRY=start
+CTOR_START='___ctors = .;'
+CTOR_END='___ctors_end = .;'
+DTOR_START='___dtors = .;'
+DTOR_END='___dtors_end = .;'
+OTHER_RELOCATING_SECTIONS='.stack 0x30000 : { _stack = .; *(.stack) }'
diff --git a/ld/emulparams/shl.sh b/ld/emulparams/shl.sh
new file mode 100644
index 0000000..360aac8
--- /dev/null
+++ b/ld/emulparams/shl.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=sh
+OUTPUT_FORMAT="coff-shl"
+TEXT_START_ADDR=0x8000
+TARGET_PAGE_SIZE=128
+ARCH=sh
diff --git a/ld/emulparams/shlelf.sh b/ld/emulparams/shlelf.sh
new file mode 100644
index 0000000..bb27f86
--- /dev/null
+++ b/ld/emulparams/shlelf.sh
@@ -0,0 +1,17 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-shl"
+TEXT_START_ADDR=0x1000
+MAXPAGESIZE=128
+ARCH=sh
+MACHINE=
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
+EMBEDDED=yes
+
+# These are for compatibility with the COFF toolchain.
+ENTRY=start
+CTOR_START='___ctors = .;'
+CTOR_END='___ctors_end = .;'
+DTOR_START='___dtors = .;'
+DTOR_END='___dtors_end = .;'
+OTHER_RELOCATING_SECTIONS='.stack 0x30000 : { _stack = .; *(.stack) }'
diff --git a/ld/emulparams/sparcaout.sh b/ld/emulparams/sparcaout.sh
new file mode 100644
index 0000000..429b925
--- /dev/null
+++ b/ld/emulparams/sparcaout.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-sunos-big"
+BIG_OUTPUT_FORMAT="a.out-sunos-big"
+LITTLE_OUTPUT_FORMAT="a.out-sparc-little"
+TEXT_START_ADDR=0x2020
+TARGET_PAGE_SIZE=0x2000
+NONPAGED_TEXT_START_ADDR=0x2000
+ARCH=sparc
diff --git a/ld/emulparams/sparclinux.sh b/ld/emulparams/sparclinux.sh
new file mode 100644
index 0000000..7ccb0bec
--- /dev/null
+++ b/ld/emulparams/sparclinux.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-sparc-linux"
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0x1020
+NONPAGED_TEXT_START_ADDR=0
+ARCH=sparc
+TEMPLATE_NAME=linux
diff --git a/ld/emulparams/sparclynx.sh b/ld/emulparams/sparclynx.sh
new file mode 100644
index 0000000..9aeb30b
--- /dev/null
+++ b/ld/emulparams/sparclynx.sh
@@ -0,0 +1,9 @@
+SCRIPT_NAME=sparclynx
+OUTPUT_FORMAT="coff-sparc-lynx"
+# This is what LynxOS /lib/init1.o wants.
+ENTRY=__main
+# following are dubious
+TARGET_PAGE_SIZE=0x1000
+TEXT_START_ADDR=0
+NONPAGED_TEXT_START_ADDR=0x1000
+ARCH=sparc
diff --git a/ld/emulparams/sparcnbsd.sh b/ld/emulparams/sparcnbsd.sh
new file mode 100644
index 0000000..f27daf3
--- /dev/null
+++ b/ld/emulparams/sparcnbsd.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=aout
+TEXT_START_ADDR=0x1020
+OUTPUT_FORMAT="a.out-sparc-netbsd"
+TARGET_PAGE_SIZE=0x1000
+ARCH=sparc
diff --git a/ld/emulparams/st2000.sh b/ld/emulparams/st2000.sh
new file mode 100644
index 0000000..0498832
--- /dev/null
+++ b/ld/emulparams/st2000.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=st2000
+OUTPUT_FORMAT="coff-m68k"
+TEXT_START_ADDR=0x0
+TARGET_PAGE_SIZE=128
+ARCH=m68k
diff --git a/ld/emulparams/sun3.sh b/ld/emulparams/sun3.sh
new file mode 100644
index 0000000..db0f71f
--- /dev/null
+++ b/ld/emulparams/sun3.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-sunos-big"
+TEXT_START_ADDR=0x2020
+TARGET_PAGE_SIZE=0x2000
+SEGMENT_SIZE=0x20000
+NONPAGED_TEXT_START_ADDR=0x2000
+ARCH=m68k
+TEMPLATE_NAME=sunos
diff --git a/ld/emulparams/sun4.sh b/ld/emulparams/sun4.sh
new file mode 100644
index 0000000..bd42775
--- /dev/null
+++ b/ld/emulparams/sun4.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-sunos-big"
+TEXT_START_ADDR=0x2020
+TARGET_PAGE_SIZE=0x2000
+NONPAGED_TEXT_START_ADDR=0x2000
+ALIGNMENT=8
+ARCH=sparc
+TEMPLATE_NAME=sunos
diff --git a/ld/emulparams/tic30aout.sh b/ld/emulparams/tic30aout.sh
new file mode 100644
index 0000000..2a4c13f
--- /dev/null
+++ b/ld/emulparams/tic30aout.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=tic30aout
+OUTPUT_FORMAT="a.out-tic30"
+OUTPUT_ARCH="tms320c30"
+TEXT_START_ADDR=0x0
+TARGET_PAGE_SIZE=128
+ARCH=tms320c30
+BIG=1
diff --git a/ld/emulparams/tic30coff.sh b/ld/emulparams/tic30coff.sh
new file mode 100644
index 0000000..df77943
--- /dev/null
+++ b/ld/emulparams/tic30coff.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=tic30coff
+OUTPUT_FORMAT="coff-tic30"
+OUTPUT_ARCH="tms320c30"
+TEXT_START_ADDR=0x0
+TARGET_PAGE_SIZE=128
+ARCH=tms320c30
+BIG=1
diff --git a/ld/emulparams/tic80coff.sh b/ld/emulparams/tic80coff.sh
new file mode 100644
index 0000000..7070323
--- /dev/null
+++ b/ld/emulparams/tic80coff.sh
@@ -0,0 +1,56 @@
+# This file is sourced by the genscripts.sh script.
+# These are shell variables that are used later by either genscripts
+# or on of the scripts that it sources.
+
+# The name of the scripttempl script to use. In this case, genscripts
+# uses scripttempl/tic80coff.sc
+#
+SCRIPT_NAME=tic80coff
+
+# The name of the emultempl script to use. If set to "template" then
+# genscripts.sh will use the script emultempl/template.em. If not set,
+# then the default value is "generic".
+#
+# TEMPLATE_NAME=
+
+# If this is set to an nonempty string, genscripts.sh will invoke the
+# scripttempl script an extra time to create a shared library script.
+#
+# GENERATE_SHLIB_SCRIPT=
+
+# The BFD output format to use. The scripttempl script will use it in
+# an OUTPUT_FORMAT expression in the linker script.
+#
+OUTPUT_FORMAT="coff-tic80"
+
+# This is normally set to indicate the architecture to use, such as
+# "sparc". The scripttempl script will normally use it in an OUTPUT_ARCH
+# expression in the linker script.
+#
+ARCH=tic80
+
+# Some scripttempl scripts use this to set the entry address in an ENTRY
+# expression in the linker script.
+#
+# ENTRY=
+
+# The scripttempl script uses this to set the start address of the
+# ".text" section.
+#
+TEXT_START_ADDR=0x2000000
+
+# If this is defined, the genscripts.sh script sets TEXT_START_ADDR to
+# its value before running the scripttempl script for the -n and -N
+# options.
+#
+# NONPAGED_TEXT_START_ADDR=
+
+# The genscripts.sh script uses this to set the default value of
+# DATA_ALIGNMENT when running the scripttempl script.
+#
+# SEGMENT_SIZE=
+
+# If SEGMENT_SIZE is not defined, the genscripts.sh script uses this
+# to define it.
+#
+TARGET_PAGE_SIZE=0x1000
diff --git a/ld/emulparams/v850.sh b/ld/emulparams/v850.sh
new file mode 100644
index 0000000..78bfbd3
--- /dev/null
+++ b/ld/emulparams/v850.sh
@@ -0,0 +1,14 @@
+MACHINE=
+SCRIPT_NAME=v850
+OUTPUT_FORMAT="elf32-v850"
+TEXT_START_ADDR=0x100000
+ZDATA_START_ADDR=0x160
+ROZDATA_START_ADDR="ALIGN (4)"
+SDATA_START_ADDR="ALIGN (4)"
+ROSDATA_START_ADDR="ALIGN (4)"
+TDATA_START_ADDR="ALIGN (4)"
+CALL_TABLE_START_ADDR="ALIGN (4)"
+ARCH=v850
+MAXPAGESIZE=256
+ENTRY=_start
+EMBEDDED=yes
diff --git a/ld/emulparams/vanilla.sh b/ld/emulparams/vanilla.sh
new file mode 100644
index 0000000..d8a3b72
--- /dev/null
+++ b/ld/emulparams/vanilla.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=vanilla
+TEXT_START_ADDR=??
+TARGET_PAGE_SIZE=??
+ARCH=unknown
+TEMPLATE_NAME=vanilla
diff --git a/ld/emulparams/vax.sh b/ld/emulparams/vax.sh
new file mode 100644
index 0000000..9785483
--- /dev/null
+++ b/ld/emulparams/vax.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out"
+TEXT_START_ADDR=0
+TARGET_PAGE_SIZE=1024
+ARCH=vax
diff --git a/ld/emulparams/vsta.sh b/ld/emulparams/vsta.sh
new file mode 100644
index 0000000..cc6249b
--- /dev/null
+++ b/ld/emulparams/vsta.sh
@@ -0,0 +1,8 @@
+SCRIPT_NAME=aout
+OUTPUT_FORMAT="a.out-i386"
+TEXT_START_ADDR=0x1020
+TARGET_PAGE_SIZE=0x1000
+SEGMENT_SIZE=0x400000
+NONPAGED_TEXT_START_ADDR=0x0
+ARCH=i386
+
diff --git a/ld/emulparams/w65.sh b/ld/emulparams/w65.sh
new file mode 100644
index 0000000..6f02b23
--- /dev/null
+++ b/ld/emulparams/w65.sh
@@ -0,0 +1,5 @@
+SCRIPT_NAME=w65
+OUTPUT_FORMAT="coff-w65"
+TEXT_START_ADDR=0x1000
+TARGET_PAGE_SIZE=64
+ARCH=w65
diff --git a/ld/emulparams/z8001.sh b/ld/emulparams/z8001.sh
new file mode 100644
index 0000000..63645c3
--- /dev/null
+++ b/ld/emulparams/z8001.sh
@@ -0,0 +1,7 @@
+SCRIPT_NAME=z8000
+OUTPUT_FORMAT="coff-z8k"
+OUTPUT_ARCH="z8001"
+TEXT_START_ADDR=0x0
+TARGET_PAGE_SIZE=128
+ARCH=z8k
+BIG=1
diff --git a/ld/emulparams/z8002.sh b/ld/emulparams/z8002.sh
new file mode 100644
index 0000000..299b5f5
--- /dev/null
+++ b/ld/emulparams/z8002.sh
@@ -0,0 +1,6 @@
+SCRIPT_NAME=z8000
+OUTPUT_FORMAT="coff-z8k"
+OUTPUT_ARCH="z8002"
+TEXT_START_ADDR=0x0
+TARGET_PAGE_SIZE=128
+ARCH=z8002