🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Admin Mon, 27 Nov 1989 02:16
g++,libg++,gcc on 386/ix 2.02
#619
Author: Admin
Date: Mon, 27 Nov 1989 02:16
615 lines
18337 bytes

These are the changes I am using to build g++ 1.36.1 on 386/ix
using COFF & collect.  I used "config.g++ i386-sysv".
This set of patches is based on a posting by James Van Artsdalen 
(thanks James) for installing g++ under i386 SysVr3.2. In addition I've
included the patches used for gcc (which installed cleanly) and libg++
(which still isn't 100%, but is pretty good).

This set of patches assumes the native assembler and loader will be used.

The directory structure I used is /usr2/gnu/gcc ...g++ ...libg++ and the
patches reflect this structure. You may need to adjust based on a different
directory structure.

The first set of patches (CUT 1 - END CUT 1) affects g++ (level 1.36.1)

The second set (CUT 2 - END CUT 2) libg++ (1.36.1)

and the third set (CUT 3 - END CUT 3) gcc (1.36)

Note the second set has patches to Makefile and to g++-include/ctype.h

Good luck. I hope this helps someone else get this software installed.

========== CUT 1 ============

RCS file: RCS/cplus-decl.c,v
retrieving revision 1.1
diff -c -r1.1 cplus-decl.c
*** /tmp/,RCSt1a12258	Thu Nov  9 19:17:43 1989
--- cplus-decl.c	Wed Nov  8 21:13:32 1989
***************
*** 4993,4999 ****
  	      assert (TREE_CODE (type) == METHOD_TYPE);
  	      ctype = TYPE_METHOD_BASETYPE (type);
  	    }
! 	  ctype = grok_method_quals (ctype, dummy, quals);
  	  type = TREE_TYPE (dummy);
  	  quals = NULL_TREE;
  	}
--- 4993,4999 ----
  	      assert (TREE_CODE (type) == METHOD_TYPE);
  	      ctype = TYPE_METHOD_BASETYPE (type);
  	    }
! 	  ctype = (tree) grok_method_quals (ctype, dummy, quals);
  	  type = TREE_TYPE (dummy);
  	  quals = NULL_TREE;
  	}
===================================================================
RCS file: RCS/cplus-lex.c,v
retrieving revision 1.1
diff -c -r1.1 cplus-lex.c
*** /tmp/,RCSt1a12258	Thu Nov  9 19:17:48 1989
--- cplus-lex.c	Wed Nov  8 20:43:30 1989
***************
*** 980,987 ****
--- 980,992 ----
        pending_inlines = pending_inlines->next;
        finput = finput2;
  #if defined(i386) && !defined(sequent) && !defined(sun386)
+ #ifndef USG_STDIO
        finput2->_ptr = finput2->_base = t->buf;
        _bufend(finput2) = t->buf + t->len;
+ #else
+       finput2->_ptr = finput2->_base = (unsigned char *) t->buf;
+       _bufend(finput2) = (unsigned char *) t->buf + t->len;
+ #endif
        finput2->_flag = _IOFBF | _IOREAD;
        finput2->_cnt = t->len - 1;
  #else
***************
*** 2078,2085 ****
--- 2083,2095 ----
  		 end of this function.  */
  	      pending_inlines = pending_inlines->next;
  #if defined(i386) && !defined(sequent) && !defined(sun386)
+ #ifndef USG_STDIO
  	      finput2->_ptr = finput2->_base = t->buf;
  	      _bufend(finput2) = t->buf + t->len;
+ #else
+ 	      finput2->_ptr = finput2->_base = (unsigned char *) t->buf;
+ 	      _bufend(finput2) = (unsigned char *) t->buf + t->len;
+ #endif
  	      finput2->_flag = _IOFBF | _IOREAD;
  	      finput2->_cnt = t->len - 1;
  #else
===================================================================
RCS file: RCS/expr.c,v
retrieving revision 1.1
diff -c -r1.1 expr.c
*** /tmp/,RCSt1a12258	Thu Nov  9 19:17:52 1989
--- expr.c	Wed Nov  8 20:43:59 1989
***************
*** 3153,3159 ****
  	  {
  	    tree cleanup = 0;
  	    /* Lose: callback to C++.  */
! 	    parm = get_temp_name (type, 0);
  	    mark_addressable (parm);
  	    target = DECL_RTL (parm);
  	    /* Since this parm is not known to the called function
--- 3153,3159 ----
  	  {
  	    tree cleanup = 0;
  	    /* Lose: callback to C++.  */
! 	    parm = (tree) get_temp_name (type, 0);
  	    mark_addressable (parm);
  	    target = DECL_RTL (parm);
  	    /* Since this parm is not known to the called function
***************
*** 3163,3169 ****
  	       it is very likely that such a reference need not be
  	       built here.  */
  	    if (TREE_OPERAND (exp, 2) == 0)
! 	      TREE_OPERAND (exp, 2) = maybe_build_cleanup (parm);
  	    if (TREE_OPERAND (exp, 2))
  	      cleanups_this_call = tree_cons (0, TREE_OPERAND (exp, 2),
  						 cleanups_this_call);
--- 3163,3169 ----
  	       it is very likely that such a reference need not be
  	       built here.  */
  	    if (TREE_OPERAND (exp, 2) == 0)
! 	      TREE_OPERAND (exp, 2) = (tree) maybe_build_cleanup (parm);
  	    if (TREE_OPERAND (exp, 2))
  	      cleanups_this_call = tree_cons (0, TREE_OPERAND (exp, 2),
  						 cleanups_this_call);
===================================================================
RCS file: RCS/gcc.c,v
retrieving revision 1.1
diff -c -r1.1 gcc.c
*** /tmp/,RCSt1a12258	Thu Nov  9 19:17:55 1989
--- gcc.c	Wed Nov  8 20:49:57 1989
***************
*** 303,316 ****
  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\
  }}}}";
  
  /* Here is the spec for running the linker, after compiling all files.  */
! char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld -r -o %g.R %l\
   %{A} %{d} %{e*} %{N} %{n} %{r} %{s} %{S} %{T*} %{t} %{u*} %{X} %{x} %{z}\
!  %{y*} %{!nostdlib:%S} \
!  %{L*} %o %{!nostdlib:-lg++ gnulib%s %{g:-lg} %L}\n }}}}";
  #else
  /* Here is the spec for running the linker, after compiling all files.  */
  char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l\
--- 303,316 ----
  char *collect_spec =
    "%{!c:%{!M*:%{!E:%{!S:collect -o %g.S %g.R\n\
  as %g.S -o %g.O\n\
! ld %{o*} %{!nostdlib:%S} %g.R %g.O %{!nostdlib:%L}\n\
  }}}}";
  
  /* Here is the spec for running the linker, after compiling all files.  */
! char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld -r -x -o %g.R %l\
   %{A} %{d} %{e*} %{N} %{n} %{r} %{s} %{S} %{T*} %{t} %{u*} %{X} %{x} %{z}\
!  %{y*} \
!  %{L*} %o %{!nostdlib:libg++.a%s gnulib%s %{g:-lg}}\n }}}}";
  #else
  /* Here is the spec for running the linker, after compiling all files.  */
  char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l\
*** RCS/cplus-decl2.c	Wed Nov  8 20:41:15 1989
--- cplus-decl2.c	Wed Nov  8 20:42:49 1989
***************
*** 984,990 ****
--- 984,994 ----
        DECL_RTL (decl) = 0;
        /* @@ Assume names have underscores.  */
        if (asmspec_abort == 0)
+ #ifndef NO_UNDERSCORES
  	asmspec_abort = build_string (strlen ("_abort"), "_abort");
+ #else
+ 	asmspec_abort = build_string (strlen ("abort"), "abort");
+ #endif
        asmspec_tree = asmspec_abort;
        DECL_ABSTRACT_VIRTUAL_P (decl) = 1;
      }
*** RCS/make-links.g++	Wed Nov  8 20:50:34 1989
--- make-links.g++	Wed Nov  8 20:52:16 1989
***************
*** 64,70 ****
    insn-output.c insn-flags.h insn-config.h insn-codes.h"
  
  $remove -f config
! $symbolic_link ${CDIR} ./config 2>/dev/null || $hard_link ${CDIR} ./config
  if [ ! -r ${CDIR} ]
  then
  	echo "$progname: unable to link \`${CDIR}'."
--- 64,80 ----
    insn-output.c insn-flags.h insn-config.h insn-codes.h"
  
  $remove -f config
! $symbolic_link ${CDIR} ./config 2>/dev/null || 
! {
! $remove -rf config
! $make_directory config
! $change_directory config
! THIS=`pwd`
! $change_directory ../${CDIR}
! $symbolic_link * ${THIS} 2>/dev/null || $hard_link * ${THIS}
! $change_directory ${THIS}
! $change_directory ..
! }
  if [ ! -r ${CDIR} ]
  then
  	echo "$progname: unable to link \`${CDIR}'."

==============================================================
 
*** collect.c~	Fri Nov  3 02:13:56 1989
--- collect.c	Wed Nov 22 00:06:52 1989
***************
*** 68,75 ****
--- 68,77 ----
   */
  #ifdef i386
  #define ASM_INT_OP	ASM_LONG
+ #ifndef NO_UNDERSCORES
  #define NO_UNDERSCORES 1
  #endif
+ #endif
  
  #ifndef ASM_OUTPUT_INT_CONST
  #define ASM_OUTPUT_INT_CONST(FILE,VALUE)	\
***************
*** 418,425 ****
  	  
  	  symindex += GCC_SYMINC(symbol);
  	  
! 	  if (! GCC_OK_SYMBOL(symbol)) continue;
! 	  symbol_name = ldgetname(ldptr, &symbol);
  	  
  	  /* Check to see if we have a CTOR/DTOR marker  */
  
--- 420,427 ----
  	  
  	  symindex += GCC_SYMINC(symbol);
  	  
! /*	  if (! GCC_OK_SYMBOL(symbol)) continue;
! */	  symbol_name = ldgetname(ldptr, &symbol);
  	  
  	  /* Check to see if we have a CTOR/DTOR marker  */
  
***************
*** 426,432 ****
  	  if (! strncmp (CTOR_DTOR_MARKER_NAME, symbol_name,
  			 CTOR_DTOR_MARKER_LENGTH))
  	    add_ctor_dtor_elem(symbol_name);
! 	}
        }
      }
      else {
--- 428,435 ----
  	  if (! strncmp (CTOR_DTOR_MARKER_NAME, symbol_name,
  			 CTOR_DTOR_MARKER_LENGTH))
  	    add_ctor_dtor_elem(symbol_name);
! 
!        }
        }
      }
      else {
***************
*** 581,587 ****
--- 584,594 ----
  	  char *p = strtab+strindex;
  #endif /* hp9000s300 */
  
+ #ifdef NO_DOLLAR_IN_LABEL
+ 	  if (! strncmp ("__GLOBAL_.", p, 10))
+ #else
  	  if (! strncmp ("__GLOBAL_$", p, 10))
+ #endif
  	    add_ctor_dtor_elem(p);
  	}
      }

=================================================================

*** Makefile~	Mon Nov  6 20:33:47 1989
--- Makefile	Wed Nov 22 14:29:16 1989
***************
*** 37,43 ****
  # use `-dy'.
  
  # On COFF systems, use one of the definitions below. (see collect.c)
! # COFFLAGS = -DUSE_COLLECT -DCOFF
  # COFFLAGS = -DUSE_COLLECT -DEXTENDED_COFF
  
  # On some BSD systems (like Vax, unlike Sun), there is no file
--- 37,43 ----
  # use `-dy'.
  
  # On COFF systems, use one of the definitions below. (see collect.c)
! COFFLAGS = -DUSE_COLLECT -DCOFF
  # COFFLAGS = -DUSE_COLLECT -DEXTENDED_COFF
  
  # On some BSD systems (like Vax, unlike Sun), there is no file
***************
*** 46,52 ****
  # HAVE_UNISTD_H = -DNO_UNISTD_H
  
  # CFLAGS = -g -DSOS -DESKIT -O
! CFLAGS = -g -DGATHER_STATISTICS -O -Wunused $(COFFLAGS)
  CC = gcc
  BISON = bison
  BISONFLAGS = -v -d
--- 46,52 ----
  # HAVE_UNISTD_H = -DNO_UNISTD_H
  
  # CFLAGS = -g -DSOS -DESKIT -O
! CFLAGS = -g -DGATHER_STATISTICS -O $(COFFLAGS) -DNO_UNDERSCORES -DNO_DOLLAR_IN_LABEL
  CC = gcc
  BISON = bison
  BISONFLAGS = -v -d
***************
*** 53,61 ****
  AR = ar
  SHELL = /bin/sh
  # on sysV, define this as cp.
! INSTALL = install -c
  # on sysV, define this as ln.
! LINK = ln -s
  
  # Compiler to use for compiling gnulib.
  # OLDCC should not be the GNU C compiler.
--- 53,61 ----
  AR = ar
  SHELL = /bin/sh
  # on sysV, define this as cp.
! INSTALL = cp
  # on sysV, define this as ln.
! LINK = ln
  
  # Compiler to use for compiling gnulib.
  # OLDCC should not be the GNU C compiler.
***************
*** 71,77 ****
  # uncomment the following line.  But turncoats who claim officially
  # to support System V, but really try to be Berkeley (and thus
  # break with USG defined), may need to define this.
! # USG_STDIO = -DUSG_STDIO
  
  prefix = /usr/local
  
--- 71,77 ----
  # uncomment the following line.  But turncoats who claim officially
  # to support System V, but really try to be Berkeley (and thus
  # break with USG defined), may need to define this.
! USG_STDIO = -DUSG_STDIO
  
  prefix = /usr/local
  
***************
*** 96,104 ****
  OBSTACK=obstack.o
  
  # Directory to link to, when using the target `maketest'.
! DIR = ../gcc
  # this is the GNU CC build directory
! TDIR = ../gcc-test
  
  # End of variables for you to override.
  
--- 96,104 ----
  OBSTACK=obstack.o
  
  # Directory to link to, when using the target `maketest'.
! DIR = /usr2/gnu/gcc/gcc-1.36
  # this is the GNU CC build directory
! TDIR = /usr2/gnu/gcc/gcc-1.36
  
  # End of variables for you to override.
  
***************
*** 204,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
  
--- 204,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
  
***************
*** 286,292 ****
  	else \
  		COLLECT_OPTIONS=''; \
  	fi; \
! 	$(CC) -o collect $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) -I$(srcdir)/config $< -lg -lc $$COLLECT_LIBS
  
  g++filt: g++filt.o cplus-dem.o
  	$(CC) -o g++filt g++filt.o cplus-dem.o
--- 286,292 ----
  	else \
  		COLLECT_OPTIONS=''; \
  	fi; \
! 	$(CC) -o collect $(PROFILE) $(COLLECT_OPTIONS) $(CFLAGS) -I$(srcdir)/config collect.c -lg -lc -lld
  
  g++filt: g++filt.o cplus-dem.o
  	$(CC) -o g++filt g++filt.o cplus-dem.o

========= END CUT 1 ================================================

========== CUT 2 ===================================================


*** Makefile~	Tue Nov  7 07:04:13 1989
--- Makefile	Wed Nov 22 09:47:13 1989
***************
*** 28,34 ****
  # ------ source locations
  
  # Manually set PWD to *this* directory if you are not using gnu make
! PWD := $(shell pwd)
  
  # source include directory 
  SRCIDIR= $(PWD)/g++-include
--- 28,34 ----
  # ------ source locations
  
  # Manually set PWD to *this* directory if you are not using gnu make
! PWD = /usr2/gnu/libg++/libg++
  
  # source include directory 
  SRCIDIR= $(PWD)/g++-include
***************
*** 40,46 ****
  # set `prefix' to something else if you want to install things
  # in nonstandard places
  
! prefix =/usr/gnu
  
  # libg++.a destination
  LIBDIR = $(prefix)/lib
--- 40,46 ----
  # set `prefix' to something else if you want to install things
  # in nonstandard places
  
! prefix = /usr/local
  
  # libg++.a destination
  LIBDIR = $(prefix)/lib
***************
*** 56,63 ****
  # ------- use the second form of each for SystemV (USG)
  
  # g++ flags
! OSFLAG=
! #OSFLAG = -DUSG
  # use this only if you have a strange stdio implementation
  # -- recommended for DGUX and HPUX
  #OSFLAG = -DDEFAULT_filebuf
--- 56,63 ----
  # ------- use the second form of each for SystemV (USG)
  
  # g++ flags
! #OSFLAG=
! OSFLAG = -DUSG
  # use this only if you have a strange stdio implementation
  # -- recommended for DGUX and HPUX
  #OSFLAG = -DDEFAULT_filebuf
***************
*** 69,80 ****
  #OSLDFLAG= -lPW
  
  # how to install
! INSTALL=install -c
! #INSTALL=cp
  
  # ranlib if necessary
! RANLIB=ranlib
! #RANLIB=echo
  
  # which make?
  MAKE=make
--- 69,80 ----
  #OSLDFLAG= -lPW
  
  # how to install
! #INSTALL=install -c
! INSTALL=cp
  
  # ranlib if necessary
! #RANLIB=ranlib
! RANLIB=echo
  
  # which make?
  MAKE=make
***************
*** 93,100 ****
  CC = gcc
  
  # GNU loader
! LDXX = $(LIBDIR)/gcc-ld
  #LDXX = $(LIBDIR)/gcc-ld++
  
  # crt0+.o location (for dynamic loading tests)
  GXXCRT1=$(LIBDIR)/crt1+.o
--- 93,101 ----
  CC = gcc
  
  # GNU loader
! #LDXX = $(LIBDIR)/gcc-ld
  #LDXX = $(LIBDIR)/gcc-ld++
+ LDXX = ld
  
  # crt0+.o location (for dynamic loading tests)
  GXXCRT1=$(LIBDIR)/crt1+.o
***************
*** 112,122 ****
  #VERBOSITY_FLAGS= -Wall -v 
  VERBOSITY_FLAGS= -Wall
  
! GXX_INCLUDE_DIRS= -I$(SRCIDIR)
  
! GCC_INCLUDE_DIRS= -I$(prefix)/lib/gcc-include -I/usr/include -I$(SRCIDIR)
  
! PIPE_AS= -pipe
  
  # Flags for all C++ compiles
  GXXFLAGS = $(OSFLAG) $(GXX_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GXX_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)
--- 113,123 ----
  #VERBOSITY_FLAGS= -Wall -v 
  VERBOSITY_FLAGS= -Wall
  
! GXX_INCLUDE_DIRS= -I$(SRCIDIR) -I/usr2/gnu/gcc/gcc-1.36
  
! GCC_INCLUDE_DIRS= -I$(prefix)/lib/gcc-include -I/usr/include -I$(SRCIDIR) -I/usr2/gnu/gcc/gcc-1.36
  
! PIPE_AS= 
  
  # Flags for all C++ compiles
  GXXFLAGS = $(OSFLAG) $(GXX_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GXX_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)


*** ctype.h~	Wed Nov 22 20:04:31 1989
--- ctype.h	Wed Nov 22 11:19:04 1989
***************
*** 32,40 ****
  #define CTYPE_TYPE	char
  #endif
  
  #if defined(USG) || defined(hpux)
! #define _ctype_ ctype
  #endif
  
  extern	CTYPE_TYPE	_ctype_[];
     
--- 32,40 ----
  #define CTYPE_TYPE	char
  #endif
  
  #if defined(USG) || defined(hpux)
! #define _ctype_ _ctype
  #endif
  
  extern	CTYPE_TYPE	_ctype_[];
     
============== END CUT 2 ==================================

============ CUT 3 =========================================


*** Makefile	Fri Sep 22 17:47:25 1989
--- Makefile~	Tue Nov 14 20:57:52 1989
***************
*** 81,87 ****
  # a non-gcc compiler, and if your system doesn't have a working alloca() in any
  # of the standard libraries (as is true for HP/UX or Genix),
  # then get alloca.c from GNU Emacs and un-comment the following line:
! # ALLOCA = alloca.o
  # But don't do that if compiling using GCC.
  
  # If your system has alloca() in /lib/libPW.a, un-comment the following line:
--- 81,87 ----
  # a non-gcc compiler, and if your system doesn't have a working alloca() in any
  # of the standard libraries (as is true for HP/UX or Genix),
  # then get alloca.c from GNU Emacs and un-comment the following line:
! ALLOCA = alloca.o
  # But don't do that if compiling using GCC.
  
  # If your system has alloca() in /lib/libPW.a, un-comment the following line:
***************
*** 230,236 ****
  #	../hp-bin/hpxt gnulib-hp gnulib
  
  gnulib2: stamp-gnulib2;
! stamp-gnulib2: gnulib2.c gnulib cc1 gcc cpp $(CONFIG_H)
  	for name in $(LIB2FUNCS); \
  	do \
  	  echo $${name}; \
--- 230,236 ----
  #	../hp-bin/hpxt gnulib-hp gnulib
  
  gnulib2: stamp-gnulib2;
! stamp-gnulib2: gnulib2.c $(CONFIG_H)
  	for name in $(LIB2FUNCS); \
  	do \
  	  echo $${name}; \

================END CUT 3=============================
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads