Index: c/src/lib/libbsp/m68k/mvme167/bsp_specs
===================================================================
--- c/src/lib/libbsp/m68k/mvme167/bsp_specs	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libbsp/m68k/mvme167/bsp_specs	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -8,14 +8,18 @@
 %(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
 
+*endfile:
+crtend.o%s crtn.o%s
+
 *lib:
 %{!qrtems: %(old_lib)} %{qrtems: --start-group \
 %{!qrtems_debug: -lrtemsall} %{qrtems_debug: -lrtemsall_g} \
 -lc -lgcc --end-group \
-%{!qnolinkcmds: -T linkcmds%s}}
+%{!qelf: %{!qnolinkcmds: -T linkcmds%s}} %{qelf: %{!qnolinkcmd: -T
+elflinkcmds%s}}}
 
 *startfile:
 %{!qrtems: %(old_startfile)} %{qrtems: \
 %{!qrtems_debug: start.o%s} \
-%{qrtems_debug: start_g.o%s}}
+%{qrtems_debug: start_g.o%s} crti.o%s crtbegin.o%s}
 
 *link:
Index: c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in
===================================================================
--- c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libbsp/m68k/mvme167/startup/Makefile.in	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -24,5 +24,5 @@
 H_FILES =
 
-SRCS = $(srcdir)/linkcmds $(C_FILES) $(H_FILES)
+SRCS = $(srcdir)/linkcmds $(srcdir)/elflinkcmds $(C_FILES) $(H_FILES)
 OBJS = $(C_O_FILES)
 
@@ -42,5 +42,7 @@
 #
 
-DEFINES +=
+# USE_INIT_FINI tells main.c what C++ help we need.
+
+DEFINES += -DUSE_INIT_FINI
 CPPFLAGS +=
 CFLAGS +=
@@ -65,4 +67,5 @@
 all: ${ARCH} $(SRCS) $(PGM)
 	$(INSTALL_CHANGE) $(srcdir)/linkcmds $(PROJECT_RELEASE)/lib
+	$(INSTALL_CHANGE) $(srcdir)/elflinkcmds $(PROJECT_RELEASE)/lib
 
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
Index: c/src/lib/libbsp/shared/bootcard.c
===================================================================
--- c/src/lib/libbsp/shared/bootcard.c	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libbsp/shared/bootcard.c	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -28,5 +28,5 @@
 
 /* Initialize C++ global Ctor/Dtor and initializes exception handling. */
-#ifdef USE_INIT_FINI 
+#if defined(USE_INIT_FINI)
 extern void _fini( void );
 extern void _init( void );
Index: c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S
===================================================================
--- c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libcpu/m68k/m68040/fpsp/bindec.S	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -487,5 +487,5 @@
 	fabsx	%fp0		//use abs(X)
 	tstw	%d5		//LAMBDA is in lower word of d5
-	bnes	sc_mul		//if neg (LAMBDA = 1), scale by mul
+	bne 	sc_mul		//if neg (LAMBDA = 1), scale by mul
 	fdivx	%fp1,%fp0		//calculate X / SCALE -> Y to fp0
 	bras	A10_st		//branch to A10
Index: c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S
===================================================================
--- c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libcpu/m68k/m68040/fpsp/decbin.S	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -233,5 +233,5 @@
 m_sign:
 	btst	#31,(%a0)	//test sign of the mantissa
-	beqs	ap_st_z		//if clear, go to append/strip zeros
+	beq	ap_st_z		//if clear, go to append/strip zeros
 	fnegx	%fp0		//if set, negate fp0
 	
@@ -291,5 +291,5 @@
 	ble	pwrten		//if abs(expA) <28, skip ap/st zeros
 	btst	#30,(%a0)	//check sign of exp
-	bnes	ap_st_n		//if neg, go to neg side
+	bne	ap_st_n		//if neg, go to neg side
 	clrl	%d1		//zero count reg
 	movel	(%a0),%d4		//load lword 1 to d4
@@ -339,5 +339,5 @@
 	bnes	ap_p_el		//if not, get next bit
 	fmulx	%fp1,%fp0		//mul mantissa by 10**(no_bits_shifted)
-	bras	pwrten		//go calc pwrten
+	bra	pwrten		//go calc pwrten
 //
 // This section handles a negative adjusted exponent.
Index: c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S
===================================================================
--- c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libcpu/m68k/m68040/fpsp/do_func.S	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -80,5 +80,5 @@
 	andl	#0x7F,%d0
 	cmpil	#0x38,%d0		//if the extension is >= $38, 
-	bges	serror		//it is illegal
+	bge	serror		//it is illegal
 	bfextu	STAG(%a6){#0:#3},%d1
 	lsll	#3,%d0		//make room for STAG
Index: c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S
===================================================================
--- c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libcpu/m68k/m68040/fpsp/get_op.S	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -174,5 +174,5 @@
 	clrb	DY_MO_FLG(%a6)
 	tstb	UFLG_TMP(%a6)	//test flag for unsupp/unimp state
-	beqs	uni_getop
+	beq	uni_getop
 
 uns_getop:
Index: c/src/lib/libcpu/m68k/m68040/fpsp/util.S
===================================================================
--- c/src/lib/libcpu/m68k/m68040/fpsp/util.S	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libcpu/m68k/m68040/fpsp/util.S	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -141,12 +141,12 @@
 ovf_fsgl:
 	clrl	%d0
-	bras	ovf_res
+	bra	ovf_res
 
 ovff_sgl:
 	movel	#0x00000001,%d0		//set single
-	bras	ovf_res
+	bra	ovf_res
 ovff_dbl:
 	movel	#0x00000002,%d0		//set double
-	bras	ovf_res
+	bra	ovf_res
 //
 // The precision is in the fpcr.
@@ -154,5 +154,5 @@
 ovf_fpcr:
 	bfextu	FPCR_MODE(%a6){#0:#2},%d0 //set round precision
-	bras	ovf_res
+	bra	ovf_res
 	
 //
Index: c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S
===================================================================
--- c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S	(revision 220ad7de67a5588d686d54f70be476aa66b724ae)
+++ c/src/lib/libcpu/m68k/m68040/fpsp/x_store.S	(revision 54f440d311c48e0aae2635ba8610d5b0b8eca157)
@@ -95,5 +95,5 @@
 	beq	dest_ext	//then branch
 	cmpil	#1,%d0		//if dest format is single
-	beqs	dest_sgl	//then branch
+	beq	dest_sgl	//then branch
 //
 //	fall through to dest_dbl
