aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/config/.Sanitize2
-rw-r--r--ld/config/i386-moss.mt2
-rw-r--r--ld/config/i386-msdos.mt2
-rw-r--r--ld/emulparams/.Sanitize2
-rw-r--r--ld/emulparams/i386moss.sh9
-rw-r--r--ld/emulparams/i386msdos.sh7
-rw-r--r--ld/scripttempl/.Sanitize1
-rw-r--r--ld/scripttempl/i386msdos.sc40
8 files changed, 65 insertions, 0 deletions
diff --git a/ld/config/.Sanitize b/ld/config/.Sanitize
index c1857d5..ab50c61 100644
--- a/ld/config/.Sanitize
+++ b/ld/config/.Sanitize
@@ -71,6 +71,8 @@ i386-laout.mt
i386-linux.mt
i386-lynx.mt
i386-mach.mt
+i386-moss.mt
+i386-msdos.mt
i386-nbsd.mt
i386-nw.mt
i386-pe.mt
diff --git a/ld/config/i386-moss.mt b/ld/config/i386-moss.mt
new file mode 100644
index 0000000..5f7ecff7
--- /dev/null
+++ b/ld/config/i386-moss.mt
@@ -0,0 +1,2 @@
+EMUL=i386moss
+EMUL_EXTRA1=i386msdos
diff --git a/ld/config/i386-msdos.mt b/ld/config/i386-msdos.mt
new file mode 100644
index 0000000..dcda424
--- /dev/null
+++ b/ld/config/i386-msdos.mt
@@ -0,0 +1,2 @@
+EMUL=i386msdos
+EMUL_EXTRA1=i386aout
diff --git a/ld/emulparams/.Sanitize b/ld/emulparams/.Sanitize
index 2fb49b9..a665237 100644
--- a/ld/emulparams/.Sanitize
+++ b/ld/emulparams/.Sanitize
@@ -74,6 +74,8 @@ i386go32.sh
i386linux.sh
i386lynx.sh
i386mach.sh
+i386moss.sh
+i386msdos.sh
i386nbsd.sh
i386nw.sh
i386pe.sh
diff --git a/ld/emulparams/i386moss.sh b/ld/emulparams/i386moss.sh
new file mode 100644
index 0000000..dd214cf
--- /dev/null
+++ b/ld/emulparams/i386moss.sh
@@ -0,0 +1,9 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-i386"
+TEXT_START_ADDR=0x00002000
+MAXPAGESIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x00002000
+ARCH=i386
+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/scripttempl/.Sanitize b/ld/scripttempl/.Sanitize
index e060d5f..8e97c30 100644
--- a/ld/scripttempl/.Sanitize
+++ b/ld/scripttempl/.Sanitize
@@ -53,6 +53,7 @@ i386coff.sc
i386pe.sc
i386go32.sc
i386lynx.sc
+i386msdos.sc
i960.sc
m68kcoff.sc
m68klynx.sc
diff --git a/ld/scripttempl/i386msdos.sc b/ld/scripttempl/i386msdos.sc
new file mode 100644
index 0000000..783f2d9
--- /dev/null
+++ b/ld/scripttempl/i386msdos.sc
@@ -0,0 +1,40 @@
+cat <<EOF
+OUTPUT_FORMAT("${OUTPUT_FORMAT}")
+OUTPUT_ARCH(${ARCH})
+
+${RELOCATING+${LIB_SEARCH_DIRS}}
+${STACKZERO+${RELOCATING+${STACKZERO}}}
+SECTIONS
+{
+ ${RELOCATING+. = ${TEXT_START_ADDR};}
+ .text :
+ {
+ CREATE_OBJECT_SYMBOLS
+ *(.text)
+ ${RELOCATING+etext = .;}
+ ${RELOCATING+_etext = .;}
+ ${RELOCATING+__etext = .;}
+ ${PAD_TEXT+${RELOCATING+. = ${DATA_ALIGNMENT};}}
+ }
+ ${RELOCATING+. = ${DATA_ALIGNMENT};}
+ .rodata ${RELOCATING-0} : { *(.rodata) }
+ .data :
+ {
+ *(.data)
+ ${CONSTRUCTING+CONSTRUCTORS}
+ ${RELOCATING+edata = .;}
+ ${RELOCATING+_edata = .;}
+ ${RELOCATING+__edata = .;}
+ }
+ .bss :
+ {
+ ${RELOCATING+ _bss_start = .};
+ ${RELOCATING+ __bss_start = .};
+ *(.bss)
+ *(COMMON)
+ ${RELOCATING+end = ALIGN(4) };
+ ${RELOCATING+_end = ALIGN(4) };
+ ${RELOCATING+__end = ALIGN(4) };
+ }
+}
+EOF