aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1992-09-09 18:59:11 +0000
committerIan Lance Taylor <ian@airs.com>1992-09-09 18:59:11 +0000
commitab57b17418b4b7fa56069fa320e1455ff5dea081 (patch)
tree64f54b297074ac4ff48376361b3075c6672b6cdc
parent66beed38d21722bf0c8f20705dc55dd0acf1b4bd (diff)
downloadgdb-ab57b17418b4b7fa56069fa320e1455ff5dea081.zip
gdb-ab57b17418b4b7fa56069fa320e1455ff5dea081.tar.gz
gdb-ab57b17418b4b7fa56069fa320e1455ff5dea081.tar.bz2
Brought in from p3. If anybody knows good numbers for m68k COFF,
please let me know, or plug them in yourself. Wed Sep 9 11:52:58 1992 Ian Lance Taylor (ian@cygnus.com) * Makefile.in, m68kcoff.sh, m68kcoff.sc-sh, config/m68k-coff.mt: added m68k-coff emulation mode, stolen from a29k emulation. Almost certainly wrong, but perhaps better than sun3. Also fixed an error message in configure.in so that it started with '***' like the other error messages do.
-rw-r--r--ld/.Sanitize17
-rw-r--r--ld/ChangeLog16
-rw-r--r--ld/Makefile.in82
-rw-r--r--ld/configure.in262
-rw-r--r--ld/m68kcoff.sc-sh39
-rw-r--r--ld/m68kcoff.sh6
6 files changed, 241 insertions, 181 deletions
diff --git a/ld/.Sanitize b/ld/.Sanitize
index 49708ab..1111ced 100644
--- a/ld/.Sanitize
+++ b/ld/.Sanitize
@@ -95,6 +95,8 @@ ldwrite.h
lexsup.c
lnk960.em
lnk960.sh
+m68kcoff.sc-sh
+m68kcoff.sh
m88kbcs.sc-sh
m88kbcs.sh
mri.c
@@ -123,7 +125,20 @@ echo Done in `pwd`.
#
#
# $Log$
-# Revision 1.43 1992/09/03 22:56:45 bothner
+# Revision 1.44 1992/09/09 18:59:04 ian
+# Brought in from p3. If anybody knows good numbers for m68k COFF,
+# please let me know, or plug them in yourself.
+#
+# Wed Sep 9 11:52:58 1992 Ian Lance Taylor (ian@cygnus.com)
+#
+# * Makefile.in, m68kcoff.sh, m68kcoff.sc-sh, config/m68k-coff.mt:
+# added m68k-coff emulation mode, stolen from a29k emulation.
+# Almost certainly wrong, but perhaps better than sun3.
+#
+# Also fixed an error message in configure.in so that it started with
+# '***' like the other error messages do.
+#
+# Revision 1.43 1992/09/03 22:56:45 bothner
# Add TODO.
#
# Revision 1.42 1992/09/01 22:14:49 bothner
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4e1c838..e3a6e8e 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,21 @@
+Wed Sep 9 11:52:58 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in, m68kcoff.sh, m68kcoff.sc-sh, config/m68k-coff.mt:
+ added m68k-coff emulation mode, stolen from a29k emulation.
+ Almost certainly wrong, but perhaps better than sun3.
+
Thu Sep 3 14:19:30 1992 Per Bothner (bothner@rtl.cygnus.com)
+ * Makefile.in, Makefile.dos, generic.em, genscripts.sh,
+ gld960.em, h8300hms.em, h8300xray.em, lnk960.em, st2000.em,
+ vanilla.em: Rename all (generated) ld__*.c files to em_.c.
+ This is one character shorter, and lets people build on
+ SVR3 system. (ld__h8300xray.[co] was the killer there;
+ h8300xray.sc-sh is also overlong, but seems harmless.)
+ Based on a patch from Jonathan Ryshpan <hitachi!amito!jon>.
+ * Makefile.in (clean): Fix typo mostclean -> mostlyclean.
+ * configure.in: Add host isc.
+
* ldver.c: Call it version 2.0.
Wed Sep 2 00:21:33 1992 Per Bothner (bothner@rtl.cygnus.com)
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 34c55e7..2c3f1f0 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -115,12 +115,14 @@ LD_PROG = ld.new
BFDLIB=./../bfd/libbfd.a
LIBIBERTY=./../libiberty/libiberty.a
-ALL_EMULATIONS=ld__lnk960.o ld__sun3.o ld__i386aout.o \
- ld__go32.o ld__m88kbcs.o ld__a29k.o ld__news.o ld__hp300bsd.o ld__h8300hms.o ld__ebmon29k.o \
- ld__sun4.o ld__gld960.o ld__vanilla.o ld__h8300xray.o ld__st2000.o ld__sa29200.o
+ALL_EMULATIONS=em_lnk960.o em_sun3.o em_i386aout.o em_go32.o \
+ em_m88kbcs.o em_a29k.o em_news.o em_hp300bsd.o \
+ em_h8300hms.o em_ebmon29k.o em_sun4.o em_gld960.o \
+ em_m68kcoff.o em_h8300xray.o em_st2000.o em_sa29200.o \
+ em_vanilla.o
EMULATION_OFILES=${ALL_EMULATIONS}
-#EMULATION_OFILES=ld__${EMUL}.o ${OTHER_EMULATIONS}
+#EMULATION_OFILES=em_${EMUL}.o ${OTHER_EMULATIONS}
OFILES= ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldindr.o \
ldwarn.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldsym.o \
@@ -133,11 +135,11 @@ HEADERS=config.h ldmain.h ldmain.h ldwarn.h ldmisc.h ldindr.h \
MANSOURCES=ld.tex
LDCSOURCES=ldlang.c lexsup.c ldctor.c mri.c ldindr.c ldmain.c ldwrite.c ldwarn.c ldlnk960.c \
- ld__gld.c ld__sun3.c ld__go32.c ld__m88k.c ld__ebmon29k.c \
+ em_gld.c em_sun3.c em_go32.c em_m88k.c em_ebmon29k.c \
ldgld960.c ldemul.c ldver.c ldmisc.c ldexp.c ldsym.c ldfile.c \
relax.c lderror.c
-GENERATED_SOURCES=ldgram.c ldlex.c ld__*.c ldemul-list.h
+GENERATED_SOURCES=ldgram.c ldlex.c em_*.c ldemul-list.h
GENERATED_HEADERS=ldgram.h ldemul-list.h
LDSOURCES=$(LDCSOURCES) ldgram.y ldlex.l ldgram.h
@@ -147,7 +149,7 @@ BFDSOURCES=../../bfd/common/*.c
SOURCES= $(LDSOURCES) $(BFDSOURCES)
LINTSOURCES= $(LDCSOURCES) $(BFDSOURCES) $(GENERATED_SOURCES)
-STAGESTUFF = *.x *.x[runN] *.sc[runN] $(GENERATED_SOURCES) $(GENERATED_HEADERS) $(OFILES) $(LD_PROG) mkscript
+STAGESTUFF = *.x *.x[runN] *.sc[runN] $(GENERATED_SOURCES) $(GENERATED_HEADERS) $(OFILES) mkscript
all: Makefile $(LD_PROG)
@@ -165,13 +167,13 @@ ldmain.o: ldmain.c
ldemul-list.h: Makefile
(echo "/* This file is automatically generated. DO NOT EDIT! */";\
for f in `echo " " ${EMULATION_OFILES} "" \
- | sed -e 's/ld__/ld/g' -e 's/ ld/ /g' -e 's/[.]o//g'`; do \
+ | sed -e 's/em_/ld/g' -e 's/ ld/ /g' -e 's/[.]o//g'`; do \
echo "extern ld_emulation_xfer_type ld_$${f}_emulation;"; \
done;\
echo "";\
echo "#define EMULATION_LIST \\";\
for f in `echo " " ${EMULATION_OFILES} "" \
- | sed -e 's/ld__/ld/g' -e 's/ ld/ /g' -e 's/[.]o//g'`; do \
+ | sed -e 's/em_/ld/g' -e 's/ ld/ /g' -e 's/[.]o//g'`; do \
echo " &ld_$${f}_emulation, \\"; \
done;\
echo " 0") >ldemul-list.h
@@ -182,59 +184,62 @@ ldlex.c: ldlex.l
$(LEX) -I -Cem $(srcdir)/ldlex.l
mv lex.yy.c ldlex.c
-# These all start with ld__ so 'make clean' can find them.
+# These all start with em_ so 'make clean' can find them.
GENSCRIPTS=sh $(srcdir)/genscripts.sh ${srcdir} ${host_alias} ${target_alias}
GEN_DEPENDS=./mkscript $(srcdir)/genscripts.sh
-ld__sun4.c: $(srcdir)/sun4.sh \
+em_sun4.c: $(srcdir)/sun4.sh \
$(srcdir)/generic.em $(srcdir)/aout.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} sun4.sh
-ld__sun3.c: $(srcdir)/sun3.sh \
+em_sun3.c: $(srcdir)/sun3.sh \
$(srcdir)/generic.em $(srcdir)/aout.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} sun3.sh
-ld__go32.c: $(srcdir)/go32.sh \
+em_go32.c: $(srcdir)/go32.sh \
$(srcdir)/generic.em $(srcdir)/aout.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} go32.sh
-ld__news.c: $(srcdir)/news.sh \
+em_news.c: $(srcdir)/news.sh \
$(srcdir)/generic.em $(srcdir)/aout.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} news.sh
-ld__hp300bsd.c: $(srcdir)/hp300bsd.sh \
+em_hp300bsd.c: $(srcdir)/hp300bsd.sh \
$(srcdir)/generic.em $(srcdir)/aout.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} hp300bsd.sh
-ld__i386aout.c: $(srcdir)/i386aout.sh \
+em_i386aout.c: $(srcdir)/i386aout.sh \
$(srcdir)/generic.em $(srcdir)/aout.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} i386aout.sh
-ld__ebmon29k.c: $(srcdir)/ebmon29k.sh \
+em_ebmon29k.c: $(srcdir)/ebmon29k.sh \
$(srcdir)/generic.em $(srcdir)/ebmon29k.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} ebmon29k.sh
-ld__sa29200.c: $(srcdir)/sa29200.sh \
+em_sa29200.c: $(srcdir)/sa29200.sh \
$(srcdir)/generic.em $(srcdir)/sa29200.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} sa29200.sh
-ld__a29k.c: $(srcdir)/a29k.sh \
+em_a29k.c: $(srcdir)/a29k.sh \
$(srcdir)/generic.em $(srcdir)/a29k.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} a29k.sh
-ld__m88kbcs.c: $(srcdir)/m88kbcs.sh \
+em_m88kbcs.c: $(srcdir)/m88kbcs.sh \
$(srcdir)/generic.em $(srcdir)/h8300hms.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} m88kbcs.sh
-ld__h8300hms.c: $(srcdir)/h8300hms.sh \
+em_h8300hms.c: $(srcdir)/h8300hms.sh \
$(srcdir)/h8300hms.em $(srcdir)/h8300hms.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} h8300hms.sh
-ld__h8300xray.c: $(srcdir)/h8300xray.sh \
+em_h8300xray.c: $(srcdir)/h8300xray.sh \
$(srcdir)/h8300xray.em $(srcdir)/h8300xray.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} h8300xray.sh
-ld__st2000.c: $(srcdir)/st2000.sh \
+em_st2000.c: $(srcdir)/st2000.sh \
$(srcdir)/st2000.em $(srcdir)/st2000.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} st2000.sh
-ld__vanilla.c: $(srcdir)/vanilla.sh \
+em_vanilla.c: $(srcdir)/vanilla.sh \
$(srcdir)/vanilla.em $(srcdir)/vanilla.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} vanilla.sh
-ld__lnk960.c: $(srcdir)/lnk960.sh \
+em_lnk960.c: $(srcdir)/lnk960.sh \
$(srcdir)/lnk960.em $(srcdir)/i960.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} lnk960.sh
-ld__gld960.c: $(srcdir)/gld960.sh \
+em_gld960.c: $(srcdir)/gld960.sh \
$(srcdir)/gld960.em $(srcdir)/i960.sc-sh ${GEN_DEPENDS}
${GENSCRIPTS} gld960.sh
+em_m68kcoff.c: $(srcdir)/m68kcoff.sh \
+ $(srcdir)/generic.em $(srcdir)/m68kcoff.sc-sh ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68kcoff.sh
$(LD_PROG): $(OFILES) $(BFDLIB) $(LIBIBERTY)
$(CC) $(CFLAGS) $(INCLUDES) $(HDEFINES) $(TDEFINES) $(CDEFINES) $(LDFLAGS) -o $(LD_PROG) $(OFILES) $(BFDLIB) $(LIBIBERTY) $(LOADLIBES)
@@ -363,7 +368,7 @@ ld-index.me: ld.me
######################################################################
./mkscript: $(srcdir)/mkscript.c
- $(HOST_CC) -o mkscript $(srcdir)/mkscript.c
+ $(HOST_CC) -o mkscript $(srcdir)/mkscript.c
ldlex.c: ldlex.l ldgram.h
ldlex.o: ldlex.c ldgram.h
@@ -376,23 +381,23 @@ st2000.o:st2000.c
stage1: force
-mkdir stage1
- -mv -f $(STAGESTUFF) stage1
+ -mv -f $(STAGESTUFF) $(LD_PROG) stage1
-(cd stage1 ; ln -s $(LD_PROG) ld)
stage2: force
-mkdir stage2
- -mv -f $(STAGESTUFF) stage2
+ -mv -f $(STAGESTUFF) $(LD_PROG) stage2
-(cd stage2 ; ln -s $(LD_PROG) ld)
stage3: force
-mkdir stage3
- -mv -f $(STAGESTUFF) stage3
+ -mv -f $(STAGESTUFF) $(LD_PROG) stage3
-(cd stage3 ; ln -s $(LD_PROG) ld)
against=stage2
comparison: force
- for i in $(STAGESTUFF) ; do cmp $$i $(against)/$$i ; done
+ for i in $(STAGESTUFF) $(LD_PROG) ; do cmp $$i $(against)/$$i ; done
de-stage1: force
-(cd stage1 ; mv -f * ..)
@@ -409,10 +414,19 @@ de-stage3: force
-rm ld
-rmdir stage3
-clean:
- -rm -f TAGS $(STAGESTUFF)
- -rm -f ld.?? ld.??? ldlex.[qp]
+# Stuff that should be included in a distribution:
+LDDISTSTUFF=ldgram.c ldgram.h ldlex.c ld.mm
+diststuff: $(LDDISTSTUFF)
+
+mostlyclean:
+ -rm -f $(STAGESTUFF) ld.?? ld.??? ldlex.[qp]
-rm -f ld ld1 ld2 ld3 *.o y.output cdtest cdtest.out
+clean: mostlyclean
+ -rm -f $(LD_PROG)
+distclean: clean
+ -rm -f Makefile config.status TAGS
+realclean: distclean
+ -rm -f $(LDDISTSTUFF)
lintlog:$(SOURCES) Makefile
$(LINT) -abhxzn $(LINTFLAGS) $(LINTSOURCES) \
diff --git a/ld/configure.in b/ld/configure.in
index bd95af3..249628c 100644
--- a/ld/configure.in
+++ b/ld/configure.in
@@ -9,102 +9,68 @@ target_dependent=true
# per-host:
-case "${host_cpu}" in
+case "${host}" in
-rs6000) my_host=rs6000
- ;;
-
-hppa*)
- case "${host_vendor}" in
- hp)
- case "${host_os}" in
- hpux) my_host=hppahpux ;;
- bsd) my_host=hppabsd ;;
- esac
- ;;
- esac
- ;;
-
-mips)
- case "${host_vendor}" in
- dec) my_host=decstation ;;
- sgi) my_host=irix3 ;;
- esac
- ;;
-m88k)
- case "${host_vendor}" in
- motorola)
- my_host=delta88 ;;
- *)
- case "${host_os}" in
- dgux) my_host=dgux ;;
- esac
- ;;
- esac
- ;;
-
-m68*)
- case "${host_vendor}" in
- cbm)
- case ${host_os} in
- amigados) my_host=amigados ;;
- svr4) my_host=amix ;;
- esac
- ;;
- hp)
- case "${host_os}" in
- hpux) my_host=hp9000 ;;
- bsd) my_host=hp300bsd ;;
- esac
- ;;
- apollo*)
- case "${host_os}" in
- sysv*) my_host=apollov68 ;;
- bsd*) my_host=apollo68;;
- esac
- ;;
- sony) my_host=news ;;
- sun) my_host=sun3 ;;
- esac
- ;;
-
-i386)
- case "${host_vendor}" in
- *)
- case "${host_os}" in
- go32) my_host=go32 ;;
- sysv) my_host=i386v ;;
- mach) my_host=i386mach ;;
- bsd) my_host=i386-aout ;;
- msdos) my_host=dose ;;
- esac
- ;;
- esac
- ;;
-
-sparc)
- case "${host_os}" in
- sunos64) my_host=sparc-ll ;;
- *) my_host=sparc ;;
- esac
- ;;
-
-romp) my_host=rtbsd
- ;;
-
-a29k) my_host=ultra3
- ;;
-
-tahoe)
- my_host=tahoe
- ;;
-
-vax)
- case "${host_os}" in
- ultrix) my_host=vaxult ;;
- *) my_host=vaxbsd ;;
- esac
- ;;
+ rs6000-ibm-aix*) my_host=rs6000
+ ;;
+ hppa*-hp-hpux) my_host=hppahpux
+ ;;
+ hppa*-hp-bsd) my_host=hppabsd
+ ;;
+ mips-dec-ultrix*) my_host=decstation
+ ;;
+ mips-sgi-irix3*) my_host=irix3
+ ;;
+ mips-sgi-irix4*) my_host=irix4
+ ;;
+ m88k-motorola-*) my_host=delta88
+ ;;
+ m88k-dg-dgux*) my_host=dgux
+ ;;
+ m68k-cbm-amigados) my_host=amigados
+ ;;
+ m68k-cbm-svr4) my_host=amix
+ ;;
+ m68k-hp-hpux) my_host=hp9000 # FIXME this should 9000/xxx
+ ;;
+ m68k-hp-bsd) my_host=hp300bsd
+ ;;
+ m68k-apollo*-sysv*) my_host=apollov68
+ ;;
+ m68k-apollo*-bsd*) my_host=apollo68
+ ;;
+ m68k-sony-*) my_host=news
+ ;;
+ m68k-sun-sunos*) my_host=sun3
+ ;;
+ i386-go32-*) my_host=go32
+ ;;
+ i386-*-sysv) my_host=i386v
+ ;;
+ i386-*-isc) my_host=isc
+ ;;
+ i386-*-mach) my_host=i386mach
+ ;;
+ i386-*-bsd) my_host=i386-aout
+ ;;
+ i386-*-msdos) my_host=dose
+ ;;
+ sparc-sun-sunos64) my_host=sparc-ll
+ ;;
+ sparc-sun-sunos4*) my_host=sparc
+ ;;
+ sparc-sun-solaris2) my_host=solaris2
+ ;;
+ romp-*-*) my_host=rtbsd
+ ;;
+ a29k-*-*) my_host=ultra3
+ ;;
+ tahoe-*-*) my_host=tahoe
+ ;;
+ vax-dec-ultrix*) my_host=vaxult
+ ;;
+ vax-dec-bsd*) my_host=vaxbsd
+ ;;
esac
# Set up to make a link between the host's include file and "sysdep.h".
@@ -118,64 +84,68 @@ if [ ! -f ${srcdir}/${files} ] ; then
echo '***' ${srcname} does not support host ${host} 1>&2
exit 1
fi
+
host_makefile_frag=
+
if [ -f ${srcdir}/config/${my_host}.mh ] ; then
host_makefile_frag=config/${my_host}.mh
fi
# per-target:
-case ${target_vendor} in
-aout | coff) my_target=${target_cpu}-${target_vendor} ;;
-sun)
- case ${target_cpu} in
- sparc) my_target=sun4 ;;
- m68k) my_target=sun3 ;;
- esac
- ;;
-wrs)
- case ${target_cpu} in
- i960) my_target=vxworks960 ;;
- m68k) my_target=vxworks68;;
- m680[01234]0) my_target=vxworks68;;
- m683?2) my_target=vxworks68;;
- sparc) my_target=vxsparc;;
- esac
- ;;
-ericsson) my_target=ose68 ;;
-tandem) my_target=st2000 ;;
-*)
- case ${target_cpu} in
- i386) my_target=go32 ;;
- m88k) my_target=m88k-bcs ;;
- a29k) case ${target_os} in
- udi) my_target=sa29200 ;;
- ebmon) my_target=ebmon29k ;;
- *) my_target=coff-a29k ;;
- esac
- ;;
- h8300) case ${target_os} in
- hms) my_target=coff-h8300 ;;
- xray) my_target=ieee-h8300 ;;
- esac
- ;;
- m68*)
- case ${target_vendor} in
- sony) my_target=news ;;
- hp) my_target=hp300bsd ;;
- *)
- case "${target_os}" in
- aout) my_target=m68k-aout ;;
- coff) my_target=m68k-coff ;;
- *) echo "Unknown m68k target vendor:" ${target_vendor} 1>&2
- exit 1
- ;;
- esac
- ;;
- esac
- ;;
- esac
- ;;
+case "${target}" in
+
+ sparc-sun-sunos4*) my_target=sun4
+ ;;
+ m68k-sun-sunos4*) my_target=sun3
+ ;;
+ sparclite-fujitsu-*) my_target=sun4
+ ;;
+ i960-wrs-vxworks*) my_target=vxworks960
+ ;;
+ m68k-wrs-vxworks*) my_target=vxworks68
+ ;;
+ m680[01234]0-wrs-vxworks*) my_target=vxworks68
+ ;;
+ m683?2-wrs-vxworks*) my_target=vxworks68
+ ;;
+ sparc-wrs-vxworks*) my_target=vxsparc
+ ;;
+ m68k-ericsson-ose) my_target=ose68
+ ;;
+ *-tandem-none) my_target=st2000 # FIXME needs better name
+ ;;
+ i386-go32-*) my_target=go32
+ ;;
+ m88k-*-*) my_target=m88k-bcs
+ ;;
+ a29k-*-udi) my_target=sa29200
+ ;;
+ a29k-*-ebmon) my_target=ebmon29k
+ ;;
+ a29k-*-*) my_target=coff-a29k
+ ;;
+ h8300-*-hms) my_target=coff-h8300
+ ;;
+ h8300-*-xray) my_target=ieee-h8300
+ ;;
+ m68k-sony-*) my_target=news
+ ;;
+ m68k-hp-bsd*) my_target=hp300bsd
+ ;;
+ m68*-*-aout) my_target=m68k
+ ;;
+ m68*-*-coff) my_target=m68k-coff
+ ;;
+ m68*-*-*) echo '***' "Unknown m68k target vendor for ld:" ${target_vendor} 1>&2
+ exit 1
+ ;;
+ *-*-aout) my_target=${target_cpu}-${target_vendor}
+ ;;
+ *-*-coff) my_target=${target_cpu}-${target_vendor}
+ ;;
esac
+
+
target_makefile_frag=config/${my_target}.mt
diff --git a/ld/m68kcoff.sc-sh b/ld/m68kcoff.sc-sh
new file mode 100644
index 0000000..485f3bb
--- /dev/null
+++ b/ld/m68kcoff.sc-sh
@@ -0,0 +1,39 @@
+# This is totally made up, from the a29k stuff. If you know better,
+# tell us about it.
+cat <<EOF
+OUTPUT_FORMAT("${OUTPUT_FORMAT}")
+${LIB_SEARCH_DIRS}
+
+MEMORY {
+ text : ORIGIN = 0x1000000, LENGTH = 0x1000000
+ talias : ORIGIN = 0x2000000, LENGTH = 0x1000000
+ data : ORIGIN = 0x3000000, LENGTH = 0x1000000
+ mstack : ORIGIN = 0x4000000, LENGTH = 0x1000000
+ rstack : ORIGIN = 0x5000000, LENGTH = 0x1000000
+}
+SECTIONS
+{
+ .text : {
+ *(.text)
+ ${RELOCATING+ _etext = .};
+ *(.lit)
+ *(.shdata)
+ } ${RELOCATING+ > text}
+ .shbss SIZEOF(.text) + ADDR(.text) : {
+ *(.shbss)
+ }
+ .talias : { } ${RELOCATING+ > talias}
+ .data : {
+ *(.data)
+ ${RELOCATING+ _edata = .};
+ } ${RELOCATING+ > data}
+ .bss SIZEOF(.data) + ADDR(.data) :
+ {
+ *(.bss)
+ *(COMMON)
+ ${RELOCATING+ _end = ALIGN(0x8)};
+ }
+ .mstack : { } ${RELOCATING+ > mstack}
+ .rstack : { } ${RELOCATING+ > rstack}
+}
+EOF
diff --git a/ld/m68kcoff.sh b/ld/m68kcoff.sh
new file mode 100644
index 0000000..14c6652
--- /dev/null
+++ b/ld/m68kcoff.sh
@@ -0,0 +1,6 @@
+EMULATION_NAME=m68kcoff
+SCRIPT_NAME=m68kcoff
+OUTPUT_FORMAT="coff-m68k"
+TEXT_START_ADDR=0x1000000
+PAGE_SIZE=0x1000000
+ARCH=m68k