diff -rc2 /dca/local/gnu/g++/g++-1.37/g++-1.37.1/Makefile ./Makefile
*** /dca/local/gnu/g++/g++-1.37/g++-1.37.1/Makefile	Mon Feb 26 06:37:46 1990
--- ./Makefile	Wed Sep 12 03:08:27 1990
***************
*** 38,43 ****
--- 38,47 ----
  
  # On COFF systems, use one of the definitions below. (see collect.c)
+ # Use one of these for coff systems with a broken loader:
  # COFFLAGS = -DUSE_COLLECT -DCOFF
  # COFFLAGS = -DUSE_COLLECT -DEXTENDED_COFF
+ # use this with coff-gas for coff systems with properly working coff loaders:
+ # (this does not include sun386)
+   COFFLAGS = -DCOFF -DUSE_GPLUS_IFILE
  
  # On some BSD systems (like Vax, unlike Sun), there is no file
***************
*** 205,212 ****
  # gnulib is not a target because a proper installation of GNU CC
  # will place it where g++ can find it.  Same with cpp
! all: crt1+.o g++ cc1plus ld++ g++filt # collect crt0+.o
! # On COFF systems, use the target below.
! # all: g++ cc1plus collect # crt0+.o crt1+.o
  
  doc: $(srcdir)/cpp.info $(srcdir)/g++.info
  
--- 209,221 ----
  # gnulib is not a target because a proper installation of GNU CC
  # will place it where g++ can find it.  Same with cpp
! # all: crt1+.o g++ cc1plus ld++ g++filt # collect crt0+.o
  
+ # On COFF systems with a properly working coff loader, use the target below.
+ all: g++ cc1plus gnulib3.o g++.ifile 
+ 
+ # On COFF systems without a properly working coff loader (such as sun386),
+ # use the target below.
+ # all: g++ cc1plus gnulib3.o collect
+ 
  doc: $(srcdir)/cpp.info $(srcdir)/g++.info
  
***************
*** 292,295 ****
--- 301,310 ----
  	$(CC) -o collect2 collect2.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) -lc
  
+ make_ifile: make_ifile.o
+ 	$(CC) -o make_ifile make_ifile.o
+ 
+ g++.ifile: make_ifile
+ 	make_ifile >g++.ifile
+ 
  g++filt: g++filt.o cplus-dem.o
  	$(CC) -o g++filt g++filt.o cplus-dem.o
***************
*** 598,601 ****
--- 613,617 ----
  	-if [ -f cc1plus ] ; then $(INSTALL) cc1plus  $(libdir)/gcc-cc1plus ;fi
  	-if [ -f collect ] ; then $(INSTALL) collect  $(libdir)/gcc-collect ;fi
+ 	-if [ -f g++.ifile ] ; then $(INSTALL) g++.ifile $(libdir)/g++.ifile ;fi
  	-if [ -f collect2 ] ; then $(INSTALL) collect2  $(libdir)/gcc-ld ;fi
  	$(INSTALL) g++ $(bindir)
diff -rc2 /dca/local/gnu/g++/g++-1.37/g++-1.37.1/collect.c ./collect.c
*** /dca/local/gnu/g++/g++-1.37/g++-1.37.1/collect.c	Wed Nov 22 20:29:14 1989
--- ./collect.c	Tue May 29 18:23:41 1990
***************
*** 74,78 ****
  #ifndef ASM_OUTPUT_INT_CONST
  #define ASM_OUTPUT_INT_CONST(FILE,VALUE)	\
!   fprintf(FILE,"\t%s %d\n", ASM_INT_OP, VALUE)
  #endif
  
--- 74,78 ----
  #ifndef ASM_OUTPUT_INT_CONST
  #define ASM_OUTPUT_INT_CONST(FILE,VALUE)	\
!   fprintf(FILE,"\t%s%d\n", ASM_INT_OP, VALUE)
  #endif
  
***************
*** 372,375 ****
--- 372,385 ----
  #include <ldfcn.h>
  
+ #ifdef DBX_IN_COFF
+ #if defined(sun386) || defined(sparc)
+ #define IS_DEBUG_SYMBOL(sym, type) (sym->n_zeroes == 0 && sym->n_dbxtype != 0)
+ #define TYPE_OF_DEBUG_SYMBOL(sym,type)  (sym->n_dbxtype)
+ #else
+ #define IS_DEBUG_SYMBOL(sym, type) ( type && ( (type & 0xff00) == type))
+ #define TYPE_OF_DEBUG_SYMBOL(sym,type)  (type>>8)
+ #endif
+ #endif
+ 
  #if defined(EXTENDED_COFF)
  #   define GCC_SYMBOLS(X) (SYMHEADER(X).isymMax+SYMHEADER(X).iextMax)
***************
*** 380,384 ****
  #   define GCC_SYMBOLS(X) (HEADER(ldptr).f_nsyms)
  #   define GCC_SYMENT SYMENT
! #ifndef UNUSUAL_COFF_DEFINITION
  #   define GCC_OK_SYMBOL(X) (!(((X).n_type & N_TMASK) != (DT_NON << N_BTSHFT)))
  #else
--- 390,394 ----
  #   define GCC_SYMBOLS(X) (HEADER(ldptr).f_nsyms)
  #   define GCC_SYMENT SYMENT
! #ifdef UNUSUAL_COFF_DEFINITION
  #   define GCC_OK_SYMBOL(X) (!(((X).n_type & N_TMASK) != (DT_NON << N_BTSHFT)))
  #else
diff -rc2 /dca/local/gnu/g++/g++-1.37/g++-1.37.1/config.g++ ./config.g++
*** /dca/local/gnu/g++/g++-1.37/g++-1.37.1/config.g++	Sat Nov  4 21:26:35 1989
--- ./config.g++	Wed Sep 12 02:27:35 1990
***************
*** 1,2 ****
--- 1,3 ----
+ 
  #!/bin/sh
  # Configuration script for GNU C++
***************
*** 109,112 ****
--- 110,118 ----
  		machine_type=i386gas
  		;;		
+ 	i386-gcoff | i386gc)		# for Intel 80386's using gas with COFF
+ 		cpu_type=i386
+ 		configuration_file=xm-i386v.h
+ 		target_machine=tm-i386gcoff.h
+ 		;;		
  	i860)
  		;;
***************
*** 216,219 ****
--- 222,229 ----
  		configuration_file=xm-${machine}.h
  		;;
+         pbb)
+                 cpu_type=m68k
+                 configuration_file=xm-pbb.h
+                 ;;
  	sequent-ns32k | sequent)
  		cpu_type=ns32k
diff -rc2 /dca/local/gnu/g++/g++-1.37/g++-1.37.1/dbxout.c ./dbxout.c
*** /dca/local/gnu/g++/g++-1.37/g++-1.37.1/dbxout.c	Sun Jan 21 12:36:58 1990
--- ./dbxout.c	Sun Sep  9 15:43:15 1990
***************
*** 188,195 ****
  
    /* Used to put `Ltext:' before the reference, but that loses on sun 4.  */
    fprintf (asmfile,
  	   "\t.stabs \"%s\",%d,0,0,Ltext\nLtext:\n",
  	   input_file_name, N_SO);
! 
    next_type_number = 1;
    next_block_number = 2;
--- 188,198 ----
  
    /* Used to put `Ltext:' before the reference, but that loses on sun 4.  */
+ #ifdef ASM_OUTPUT_MAIN_SOURCE_FILENAME
+   ASM_OUTPUT_MAIN_SOURCE_FILENAME;
+ #else
    fprintf (asmfile,
  	   "\t.stabs \"%s\",%d,0,0,Ltext\nLtext:\n",
  	   input_file_name, N_SO);
! #endif
    next_type_number = 1;
    next_block_number = 2;
diff -rc2 /dca/local/gnu/g++/g++-1.37/g++-1.37.1/gcc.c ./gcc.c
*** /dca/local/gnu/g++/g++-1.37/g++-1.37.1/gcc.c	Sat Jan 20 04:21:10 1990
--- ./gcc.c	Tue May 29 18:29:59 1990
***************
*** 303,307 ****
  char *collect_spec =
    "%{!c:%{!M*:%{!E:%{!S:collect -o %g.S %g.R\n\
! as %g.S -o %g.O\n\
  ld %{o*} %g.R %g.O\n\
  }}}}";
--- 303,307 ----
  char *collect_spec =
    "%{!c:%{!M*:%{!E:%{!S:collect -o %g.S %g.R\n\
! as %a %g.S -o %g.O\n\
  ld %{o*} %g.R %g.O\n\
  }}}}";
diff -rc2 /dca/local/gnu/g++/g++-1.37/g++-1.37.1/gnulib3.c ./gnulib3.c
*** /dca/local/gnu/g++/g++-1.37/g++-1.37.1/gnulib3.c	Sun Nov 26 23:06:57 1989
--- ./gnulib3.c	Mon Aug 27 17:03:46 1990
***************
*** 1,2 ****
--- 1,6 ----
+ #ifdef USE_GPLUS_IFILE
+ extern int __CTOR_LEN__;
+ extern int __DTOR_LEN__;
+ #endif
  typedef struct set_vector
  {
***************
*** 47,50 ****
--- 51,62 ----
  
  #endif
+ 
+ #ifdef USE_GPLUS_IFILE
+ __CTOR_LIST__.length = (int) &__CTOR_LEN__;
+ 
+ __DTOR_LIST__.length = (int) &__DTOR_LEN__;
+ 
+ #endif
+ 
    __dli = __DTOR_LIST__.length;
    __dlp = &__DTOR_LIST__;
