*BSD News Article 53627


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!yarrina.connect.com.au!news.uwa.edu.au!classic.iinet.com.au!swing.iinet.net.au!news.uoregon.edu!usenet.eel.ufl.edu!news.ultranet.com!zombie.ncsc.mil!news.mathworks.com!newsfeed.internetmci.com!in2.uu.net!polstra!not-for-mail
From: jdp@polstra.com (John Polstra)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: GNU gcc 2.7.0 + FreeBSD
Date: 29 Oct 1995 09:31:52 -0800
Organization: Polstra & Co., Seattle, WA
Lines: 123
Message-ID: <470dq8$cd8@seattle.polstra.com>
References: <46s450$g74@eplet.mira.net.au>
NNTP-Posting-Host: seattle.polstra.com

In article <46s450$g74@eplet.mira.net.au>,
John Hartley <jbh@werple.mira.net.au> wrote:
> I tried to install 2.7.0 but its only got the stage1 and just sits
> there doing nothing when I try to build the stage2 compiler.
> Has anyone got it going, yet (with FreeBSD 2.0.5)?

I've got it working, and I'm attaching patches to this message.

But I don't understand the symptom you experienced of it just sitting
there doing nothing.  I never saw that problem when I was getting it to
build.

Anyway, here are two sets of patches.  The first set is for gcc-2.7.0,
and the second set is for libg++-2.7.0a.

Patches for gcc-2.7.0:
-------------------------------------------------------------------------------
*** config/i386/freebsd.h.orig	Thu Aug 17 15:15:17 1995
--- config/i386/freebsd.h	Fri Aug 18 09:48:57 1995
***************
*** 21,27 ****
--- 21,29 ----
  Boston, MA 02111-1307, USA.  */
  
  /* This goes away when the math-emulator is fixed */
+ #ifndef TARGET_CPU_DEFAULT /* { */
  #define TARGET_CPU_DEFAULT 0400		/* TARGET_NO_FANCY_MATH_387 */
+ #endif /* } */
  
  /* This is tested by i386gas.h.  */
  #define YES_UNDERSCORES
***************
*** 122,130 ****
--- 124,134 ----
  
  /* This is how we tell the assembler that a symbol is weak.  */
  
+ #if 0 /* Doesn't work with the stock 2.0.5-RELEASE assembler { */
  #define ASM_WEAKEN_LABEL(FILE,NAME) \
    do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
         fputc ('\n', FILE); } while (0)
+ #endif /* } */
  
  /* The following macro defines the format used to output the second
     operand of the .type assembler directive.  Different svr4 assemblers
*** Makefile.in.orig	Thu Aug 17 15:14:39 1995
--- Makefile.in	Fri Aug 18 16:49:36 1995
***************
*** 552,566 ****
  
  # Header files that are made available under the same name
  # to programs compiled with GCC.
! USER_H = $(srcdir)/ginclude/stdarg.h $(srcdir)/ginclude/stddef.h \
!     $(srcdir)/ginclude/varargs.h $(srcdir)/ginclude/va-alpha.h \
!     $(srcdir)/ginclude/va-h8300.h $(srcdir)/ginclude/va-i860.h \
!     $(srcdir)/ginclude/va-i960.h $(srcdir)/ginclude/va-mips.h \
!     $(srcdir)/ginclude/va-m88k.h $(srcdir)/ginclude/va-pa.h \
!     $(srcdir)/ginclude/va-pyr.h $(srcdir)/ginclude/va-sparc.h \
!     $(srcdir)/ginclude/va-clipper.h $(srcdir)/ginclude/va-spur.h \
!     $(srcdir)/ginclude/iso646.h \
!     $(srcdir)/ginclude/proto.h $(EXTRA_HEADERS)
  
  # The files that "belong" in CONFIG_H are deliberately omitted
  # because having them there would not be useful in actual practice.
--- 552,558 ----
  
  # Header files that are made available under the same name
  # to programs compiled with GCC.
! USER_H = $(EXTRA_HEADERS)
  
  # The files that "belong" in CONFIG_H are deliberately omitted
  # because having them there would not be useful in actual practice.
-------------------------------------------------------------------------------

Patches for libg++-2.7.0a:
-------------------------------------------------------------------------------
*** libio/gen-params.orig	Fri Jun 16 14:07:45 1995
--- libio/gen-params	Fri Aug 18 14:50:10 1995
***************
*** 273,288 ****
          if [ -s TMP ]; then
  	    # VALUE is now the typedef'd definition of $TYPE.
              eval "VALUE='`${SED} -e 's| *$||' -e '2,$d' <TMP`'"
! 	    # Unless VALUE contains a blank, look for a typedef for it
! 	    # in turn (this could be a loop, but that would be over-kill).
! 	    if echo $VALUE | grep " " >/dev/null ; then true
! 	    else
! 		rm -f TMP
! 		${SED} -n -e "s|.*typedef[ 	][ 	]*\(.*[^a-zA-Z0-9_]\)${VALUE}[ 	]*;.*|\1|w TMP" <dummy.out>/dev/null
! 		if [ -s TMP ]; then
! 		    eval "VALUE='`${SED} -e '2,$d' -e 's|[ 	]*$||' <TMP`'"
  		fi
! 	    fi
  	    eval "$TYPE='$VALUE'"
  	fi
      fi
--- 273,292 ----
          if [ -s TMP ]; then
  	    # VALUE is now the typedef'd definition of $TYPE.
              eval "VALUE='`${SED} -e 's| *$||' -e '2,$d' <TMP`'"
! 	    # Until VALUE contains a blank, look for a typedef for it
! 	    # in turn.
! 	    while true; do
! 		if echo $VALUE | grep " " >/dev/null ; then break
! 		else
! 		    rm -f TMP
! 		    ${SED} -n -e "s|.*typedef[ 	][ 	]*\(.*[^a-zA-Z0-9_]\)${VALUE}[ 	]*;.*|\1|w TMP" <dummy.out>/dev/null
! 		    if [ -s TMP ]; then
! 			eval "VALUE='`${SED} -e '2,$d' -e 's|[ 	]*$||' <TMP`'"
! 		    else
! 			break
! 		    fi
  		fi
! 	    done
  	    eval "$TYPE='$VALUE'"
  	fi
      fi
-------------------------------------------------------------------------------

-- 
   John Polstra                                       jdp@polstra.com
   Polstra & Co., Inc.                        Seattle, Washington USA
   "Self-knowledge is always bad news."                 -- John Barth