*BSD News Article 52767


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.uwa.edu.au!classic.iinet.com.au!swing.iinet.net.au!news.uoregon.edu!premier3.premier.net!news.jmls.edu!chi-news.cic.net!newsfeed.internetmci.com!news.sprintlink.net!in1.uu.net!polstra!not-for-mail
From: jdp@polstra.com (John Polstra)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: Q) gcc-2.7.0
Date: 16 Oct 1995 09:21:53 -0700
Organization: Polstra & Co., Seattle, WA
Lines: 132
Message-ID: <45u0r1$a06@seattle.polstra.com>
References: <KEN.95Oct14112138@tyd1.tydfam.iijnet.or.jp>
NNTP-Posting-Host: seattle.polstra.com

In article <KEN.95Oct14112138@tyd1.tydfam.iijnet.or.jp>,
ken <ken@tyd1.tydfam.iijnet.or.jp> wrote:
>    Is there anyone successfully installed gcc-2.7.0 and libg++-2.7.0 
> on FreeBSD-950928?
>    If there are any patches or walkaround for the problem I have below,
> please let me know.
>   
>    Recently, I tried to install gcc-2.7.0 on FreeBSD-950928-SNAP.  
> Installation ended up fine with ./configure i386-unknown-freebsd2.1.0.
> However, the compiler ddid not allow me to build libg++-2.7.0 
> complainning that assembler does not know ".weak" at SLList.cc.
> 
>    I found ".weak" in gcc-2.7.0/config/i386/freebsd.h as follows;
> 
>    #define ASM_WEAKEN_LABEL(FILE,NAME) \
>   do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
>        fputc ('\n', FILE); } while (0)

Here are some patches that will work around the problem.  There are two
sets of patches, one for gcc-2.7.0, and one for libg++-2.7.0.a.  First,
the gcc-2.7.0 patches:

===============================================================================
*** 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.
===============================================================================

Next, the libg++-2.7.0a patches:

===============================================================================
*** 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
===============================================================================

I used these successfully under 2.0.5.

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