diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6969cbb38b5c2ffaf92087f91e575229d71a3dce..b058f7d67af71664eb941d89e961be7a4835288f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+Wed Dec 31 14:42:18 1997  Ian Lance Taylor  <ian@cygnus.com>
+
+	* configure.in: Set and subsitute host_exeext.  Use it when creating
+	the assembler and linker symlinks.
+	* configure: Rebuild.
+	* Makefile.in (exeext): Set to @host_exeext@.
+	(build_exeext): New variable, set to @build_exeext@.
+	(FLAGS_TO_PASS): Pass down build_exeext.
+	(STAGESTUFF): Use build_exeext, not exeext, for gen* and bi*
+ 	programs.
+
 Wed Dec 31 10:05:44 1997  Jeffrey A Law  (law@cygnus.com)
 
 	* mn10200.md (addsi3, subsi3): Fix thinkos.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 4b256b5db04019a0ddc2480caee2bc0dd57f298d..d4a682a3d949de53faf074f4869389d8421d35e3 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -240,7 +240,8 @@ infodir = @infodir@
 # Extension (if any) to put in installed man-page filename.
 manext = .1
 objext = .o
-exeext = @build_exeext@
+exeext = @host_exeext@
+build_exeext = @build_exeext@
 
 # Directory in which to put man pages.
 mandir = @mandir@/man1
@@ -559,6 +560,7 @@ FLAGS_TO_PASS = \
 	"SHELL=$(SHELL)" \
 	"STAGE_PREFIX=@stage_prefix_set_by_configure@" \
 	"exeext=$(exeext)" \
+	"build_exeext=$(build_exeext)" \
 	"objext=$(objext)" \
 	"exec_prefix=$(exec_prefix)" \
 	"prefix=$(prefix)" \
@@ -611,12 +613,13 @@ STAGESTUFF = *$(objext) insn-flags.h insn-config.h insn-codes.h \
  stamp-flags stamp-config stamp-codes stamp-mlib \
  stamp-output stamp-recog stamp-emit stamp-extract stamp-peep \
  stamp-attr stamp-attrtab stamp-opinit stamp-proto stamp-crt stamp-crtS stamp-crt0 \
- genemit$(exeext) genoutput$(exeext) genrecog$(exeext) genextract$(exeext) \
- genflags$(exeext) gencodes$(exeext) genconfig$(exeext) genpeep$(exeext) \
- genattrtab$(exeext) genattr$(exeext) genopinit$(exeext) \
+ genemit$(build_exeext) genoutput$(build_exeext) genrecog$(build_exeext) \
+ genextract$(build_exeext) genflags$(build_exeext) gencodes$(build_exeext) \
+ genconfig$(build_exeext) genpeep$(build_exeext) genattrtab$(build_exeext) \
+ genattr$(build_exeext) genopinit$(build_exeext) \
  $(BC_ALL) \
  stamp-bcarity stamp-bcopcode stamp-bcopname \
- bi-arity$(exeext) bi-opcode$(exeext) bi-opname$(exeext) \
+ bi-arity$(build_exeext) bi-opcode$(build_exeext) bi-opname$(build_exeext) \
  xgcc$(exeext) cc1$(exeext) cpp$(exeext) $(EXTRA_PASSES) \
  $(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) \
  $(CCCP)$(exeext) cc1obj$(exeext) enquire$(exeext) \
diff --git a/gcc/configure b/gcc/configure
index 7c0971b1064a81b0c26b49af76405dfa62e7b8a7..00e0b6045c508bc4abeb1d824c7d90b110b8217a 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -3025,6 +3025,7 @@ build_exeext=
 host_xm_file=
 host_xmake_file=
 host_truncate_target=
+host_exeext=
 
 # Decode the host machine, then the target machine.
 # For the host machine, we save the xm_file variable as host_xm_file;
@@ -5522,6 +5523,7 @@ for machine in $build $host $target; do
 			host_truncate_target=$truncate_target
 			host_extra_gcc_objs=$extra_gcc_objs
 			host_extra_objs=$extra_host_objs
+			host_exeext=$exeext
 			pass2done=yes
 		fi
 	fi
@@ -5775,15 +5777,15 @@ fi
 
 # If we have gas in the build tree, make a link to it.
 if [ -f ../gas/Makefile ]; then
-	rm -f as; $symbolic_link ../gas/as-new as 2>/dev/null
+	rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
 fi
 
 # If we have ld in the build tree, make a link to it.
 if [ -f ../ld/Makefile ]; then
 #	if [[ x$use_collect2 = x ]]; then
-#		rm -f ld; $symbolic_link ../ld/ld-new ld 2>/dev/null
+#		rm -f ld; $symbolic_link ../ld/ld-new$host_exeext ld$host_exeext 2>/dev/null
 #	else
-		rm -f collect-ld; $symbolic_link ../ld/ld-new collect-ld 2>/dev/null
+		rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
 #	fi
 fi
 
@@ -6012,6 +6014,7 @@ ${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xma
 
 
 
+
 
 
 # Echo that links are built
@@ -6243,6 +6246,7 @@ s%@gxx_include_dir@%$gxx_include_dir%g
 s%@fixincludes@%$fixincludes%g
 s%@build_install_headers_dir@%$build_install_headers_dir%g
 s%@build_exeext@%$build_exeext%g
+s%@host_exeext@%$host_exeext%g
 s%@float_format@%$float_format%g
 s%@will_use_collect2@%$will_use_collect2%g
 s%@maybe_use_collect2@%$maybe_use_collect2%g
@@ -6487,6 +6491,7 @@ version='${version}'
 local_prefix='${local_prefix}'
 build_install_headers_dir='${build_install_headers_dir}'
 build_exeext='${build_exeext}'
+host_exeext='${host_exeext}'
 out_file='${out_file}'
 gdb_needs_out_file_path='${gdb_needs_out_file_path}'
 SET_MAKE='${SET_MAKE}'
diff --git a/gcc/configure.in b/gcc/configure.in
index 3501c6c8c4303aab8780151ca6cce49c5de17be8..677ddaf73c3c4583945e34793b08a8ea1a04494a 100644
--- a/gcc/configure.in
+++ b/gcc/configure.in
@@ -201,6 +201,7 @@ build_exeext=
 host_xm_file=
 host_xmake_file=
 host_truncate_target=
+host_exeext=
 
 # Decode the host machine, then the target machine.
 # For the host machine, we save the xm_file variable as host_xm_file;
@@ -2698,6 +2699,7 @@ for machine in $build $host $target; do
 			host_truncate_target=$truncate_target
 			host_extra_gcc_objs=$extra_gcc_objs
 			host_extra_objs=$extra_host_objs
+			host_exeext=$exeext
 			pass2done=yes
 		fi
 	fi
@@ -2951,15 +2953,15 @@ fi
 
 # If we have gas in the build tree, make a link to it.
 if [[ -f ../gas/Makefile ]]; then
-	rm -f as; $symbolic_link ../gas/as-new as 2>/dev/null
+	rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
 fi
 
 # If we have ld in the build tree, make a link to it.
 if [[ -f ../ld/Makefile ]]; then
 #	if [[ x$use_collect2 = x ]]; then
-#		rm -f ld; $symbolic_link ../ld/ld-new ld 2>/dev/null
+#		rm -f ld; $symbolic_link ../ld/ld-new$host_exeext ld$host_exeext 2>/dev/null
 #	else
-		rm -f collect-ld; $symbolic_link ../ld/ld-new collect-ld 2>/dev/null
+		rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
 #	fi
 fi
 
@@ -3174,6 +3176,7 @@ AC_SUBST(gxx_include_dir)
 AC_SUBST(fixincludes)
 AC_SUBST(build_install_headers_dir)
 AC_SUBST(build_exeext)
+AC_SUBST(host_exeext)
 AC_SUBST(float_format)
 AC_SUBST(will_use_collect2)
 AC_SUBST(maybe_use_collect2)
@@ -3269,6 +3272,7 @@ version='${version}'
 local_prefix='${local_prefix}'
 build_install_headers_dir='${build_install_headers_dir}'
 build_exeext='${build_exeext}'
+host_exeext='${host_exeext}'
 out_file='${out_file}'
 gdb_needs_out_file_path='${gdb_needs_out_file_path}'
 SET_MAKE='${SET_MAKE}'