🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by James Van Artsdalen Fri, 10 Nov 1989 00:55
g++ 1.36.1 i386 SysVr3.2 patches
#567
Author: James Van Artsdalen
Date: Fri, 10 Nov 1989 00:55
391 lines
13556 bytes
These are the changes I am using to build g++ 1.36.1 on SysVr3.2
i386v, using COFF & collect.  I used "config.g++ i386v".
make-links.g++ is changed so that it works, various changes were made
to elimiate warning messages, cplus-decl2.c was changed to get rid of
a spurious leading underscore, and gcc.c was changed to add the -c
option to ld(1), which is necessary to avoid a core dump from ld(1) on
my system.  I was also real nervous about binding in both /lib/crt1.o
and /lib/crtn.o before the link run that actually generated an
executable, so I moved the startfile & libfile specs around.  It was
also easier to have gcc.c simply find libg++.a and pass ld(1) a full
path than use the -L flag to send ld(1) looking for -lg++.  Lastly, I
am including the diffs to my makefile in case anyone wants to try
these patches as-is.

RCS file: RCS/collect.c,v
retrieving revision 1.1
diff -c -r1.1 collect.c
*** /tmp/,RCSt1a12258	Thu Nov  9 19:17:40 1989
--- collect.c	Wed Nov  8 20:40:16 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)	\
***************
*** 581,587 ****
--- 583,593 ----
  	  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);
  	}
      }
===================================================================
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}'."
RCS file: RCS/Makefile,v
retrieving revision 1.1
diff -c -r1.1 Makefile
*** /tmp/,RCSt1a12282	Thu Nov  9 19:21:26 1989
--- Makefile	Thu Nov  9 00:44:36 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 = -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,63 ----
  AR = ar
  SHELL = /bin/sh
  # on sysV, define this as cp.
! # INSTALL = install -c
! INSTALL = cp
  # on sysV, define this as ln.
! # LINK = ln -s
! LINK = ln
  
  # Compiler to use for compiling gnulib.
  # OLDCC should not be the GNU C compiler.
***************
*** 64,70 ****
  # CFLAGS for use with OLDCC, for compiling gnulib.
  # NOTE: -O does not work on some Unix systems!
  # If you use it here, you are asking for trouble.
! CCLIBFLAGS=
  
  # USG_STDIO if for machines which use System V stdio.
  # In general, if USG is #defined by your system, you should
--- 66,73 ----
  # CFLAGS for use with OLDCC, for compiling gnulib.
  # NOTE: -O does not work on some Unix systems!
  # If you use it here, you are asking for trouble.
! # CCLIBFLAGS=
! CCLIBFLAGS=-O
  
  # USG_STDIO if for machines which use System V stdio.
  # In general, if USG is #defined by your system, you should
***************
*** 71,79 ****
  # 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
  
  # Directory where sources are, from where we are.
  srcdir = .
--- 74,82 ----
  # 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 = /nfs/raid
  
  # Directory where sources are, from where we are.
  srcdir = .
***************
*** 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.
  
--- 99,107 ----
  OBSTACK=obstack.o
  
  # Directory to link to, when using the target `maketest'.
! DIR = ../gcc-1.36
  # this is the GNU CC build directory
! TDIR = ../gcc-1.36/i386
  
  # End of variables for you to override.
  
***************
*** 129,135 ****
  # If your system's malloc() routine fails for any reason (as it does on
  # certain versions of Genix), try getting the files
  # malloc.c and getpagesize.h from GNU Emacs and un-comment the following line:
! MALLOC = malloc.o
  
  # If you are running GCC on an Apollo (SR10.x),
  # go into a Berkeley environment and use this:
--- 132,138 ----
  # If your system's malloc() routine fails for any reason (as it does on
  # certain versions of Genix), try getting the files
  # malloc.c and getpagesize.h from GNU Emacs and un-comment the following line:
! # MALLOC = malloc.o
  
  # If you are running GCC on an Apollo (SR10.x),
  # go into a Berkeley environment and use this:
***************
*** 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
  
--- 207,215 ----
  
  # 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
-- 
James R. Van Artsdalen          james@bigtex.cactus.org   "Live Free or Die"
DCC Corporation     9505 Arboretum Blvd Austin TX 78759         512-338-8789
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