hlu@yoda.eecs.wsu.edu (Hongjiu Lu) (06/14/91)
------------------- CUT HERE --------------------------- diff -rc g++-1.39.1.old/Makefile g++-1.39.1/Makefile *** g++-1.39.1.old/Makefile Sat May 4 12:45:21 1991 --- g++-1.39.1/Makefile Wed Jun 12 14:21:47 1991 *************** *** 33,39 **** # This file depends on -DCADILLAC # cplus-cadillac.c ! CADILLAC_OBJS = cplus-cadillac.o ../cadillac/code/connection/libconn.a # Defining NDEBUG will cause assertion macros to do nothing. --- 33,39 ---- # This file depends on -DCADILLAC # cplus-cadillac.c ! #CADILLAC_OBJS = cplus-cadillac.o ../cadillac/code/connection/libconn.a # Defining NDEBUG will cause assertion macros to do nothing. *************** *** 41,47 **** # 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 --- 41,53 ---- # use `-dy'. # On COFF systems, use one of the definitions below. (see collect.c) ! # In AT&T System V/386 Release 3.2.2 GCC_OK_SYMBOL is broken(?) ! # In AT&T System V/386 Release 3.2.2 ld -r is broken(?) ! #COFFLAGS = -DUSE_COLLECT -DCOFF -DBROKEN_GCC_OK_SYMBOL ! COFFLAGS = -DUSE_COLLECT -DCOFF -DBROKEN_GCC_OK_SYMBOL\ ! -DBROKEN_RELOCATION_LD ! #COFFLAGS = -DUSE_COLLECT -DCOFF -DUNUSUAL_COFF_DEFINITION\ ! # -DBROKEN_RELOCATION_LD # COFFLAGS = -DUSE_COLLECT -DEXTENDED_COFF # On some BSD systems (like Vax, unlike Sun), there is no file *************** *** 50,65 **** # HAVE_UNISTD_H = -DNO_UNISTD_H # CFLAGS = -g -DSOS -DESKIT -O ! CFLAGS = -g -DGATHER_STATISTICS -O $(COFFLAGS) -B../gcc-test/ -DFIELD_XREF ! CC = /usr/vintage/bin/gcc BISON = bison BISONFLAGS = -v -d 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. --- 56,75 ---- # HAVE_UNISTD_H = -DNO_UNISTD_H # CFLAGS = -g -DSOS -DESKIT -O ! #CFLAGS = -g -DGATHER_STATISTICS -O $(COFFLAGS) -B../gcc-test/ -DFIELD_XREF ! CFLAGS = -g -O $(COFFLAGS) -B../gcc-test/ -DFASCIST_ASSEMBLER ! CC = /usr/local/bin/gcc BISON = bison BISONFLAGS = -v -d AR = ar SHELL = /bin/sh + RM=/bin/rm # 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. *************** *** 68,74 **** # 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 --- 78,84 ---- # 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= -O # USG_STDIO if for machines which use System V stdio. # In general, if USG is #defined by your system, you should *************** *** 75,81 **** # 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 --- 85,91 ---- # 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 *************** *** 85,90 **** --- 95,103 ---- bindir = $(prefix)/bin # Directory in which to put the subprograms used by the compiler. libdir = $(prefix)/lib + # Directory in which to put the local libraries linked by the compiler + # with -l option. + locallibdir = $(prefix)/lib # Directory in which to put the crt0+.o, crt1+.o, and other such files. startdir = $(prefix)/lib # Directory in which to put man pages. *************** *** 93,99 **** manext = 1 # Additional system libraries to link with. ! CLIB= # Change this to a null string if obstacks are installed in the # system library. --- 106,112 ---- manext = 1 # Additional system libraries to link with. ! CLIB= -lc_s # Change this to a null string if obstacks are installed in the # system library. *************** *** 209,217 **** # 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 --- 222,231 ---- # 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 collect2 # crt0+.o crt1+.o ! all: g++ cc1plus collect # crt0+.o crt1+.o doc: $(srcdir)/cpp.info $(srcdir)/g++.info *************** *** 227,236 **** # be better if you could just add support to GNU LD to handle # shared libraries. gcc.o: gcc.c $(CONFIG_H) $(CC) $(CFLAGS) $(INCLUDES) \ ! -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \ ! -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-\" -c \ ! `echo $(srcdir)/gcc.c | sed 's,^\./,,'` version.o: version.c obstack.o: obstack.c --- 241,254 ---- # be better if you could just add support to GNU LD to handle # shared libraries. gcc.o: gcc.c $(CONFIG_H) + sed s,LOCAL_LIBRARY_DIRECTORY,$(locallibdir), \ + $(srcdir)/gcc.c > $(srcdir)/.tmp.gcc.c $(CC) $(CFLAGS) $(INCLUDES) \ ! -DSTANDARD_STARTFILE_PREFIX=\"$(startdir)/\" \ ! -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-\" \ ! -o `echo $(srcdir)/gcc.o | sed 's,^\./,,'` \ ! -c `echo $(srcdir)/.tmp.gcc.c | sed 's,^\./,,'` ! $(RM) -f $(srcdir)/.tmp.gcc.c version.o: version.c obstack.o: obstack.c *************** *** 291,300 **** else \ COLLECT_OPTIONS=''; \ fi; \ ! $(CC) -o collect $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) $< -lg -lc $$COLLECT_LIBS collect2: collect2.c config.h ! $(CC) -o collect2 collect2.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) -lc g++filt: g++filt.o cplus-dem.o $(CC) -o g++filt g++filt.o cplus-dem.o --- 309,320 ---- else \ COLLECT_OPTIONS=''; \ fi; \ ! $(CC) -o collect collect.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) $< -lg $$COLLECT_LIBS -lc_s ! # $(CC) -o collect collect.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) $< -lg $$COLLECT_LIBS collect2: collect2.c config.h ! # $(CC) -o collect2 collect2.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) -lc ! $(CC) -o collect2 collect2.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) -lc_s g++filt: g++filt.o cplus-dem.o $(CC) -o g++filt g++filt.o cplus-dem.o *************** *** 332,338 **** mv crt1.o crt1+.o cc1plus: $(CPLUS_OBJS) $(OBJS) $(LIBDEPS) lastfile.o cplus-edsel.o ! $(CC) $(CFLAGS) $(LDFLAGS) -o cc1plus lastfile.o $(CPLUS_OBJS) cplus-edsel.o $(OBJS) $(LIBS) -lm cadillac-cc1plus: $(CPLUS_OBJS) $(CADILLAC_OBJS) $(OBJS) $(LIBDEPS) lastfile.o $(CC) $(CFLAGS) $(LDFLAGS) -o cadillac-cc1plus lastfile.o $(CPLUS_OBJS) $(CADILLAC_OBJS) $(OBJS) $(LIBS) --- 352,358 ---- mv crt1.o crt1+.o cc1plus: $(CPLUS_OBJS) $(OBJS) $(LIBDEPS) lastfile.o cplus-edsel.o ! $(CC) $(CFLAGS) $(LDFLAGS) -o cc1plus lastfile.o $(CPLUS_OBJS) cplus-edsel.o $(OBJS) -lm $(LIBS) cadillac-cc1plus: $(CPLUS_OBJS) $(CADILLAC_OBJS) $(OBJS) $(LIBDEPS) lastfile.o $(CC) $(CFLAGS) $(LDFLAGS) -o cadillac-cc1plus lastfile.o $(CPLUS_OBJS) $(CADILLAC_OBJS) $(OBJS) $(LIBS) *************** *** 356,363 **** cplus-cadillac.o : cplus-cadillac.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h $(CC) -c -DCADILLAC $(CFLAGS) $(INCLUDES) -I../cadillac/code/comp-dep -I../cadillac/code/connection $< ! cplus-edsel.o : cplus-cadillac.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h ! $(CC) -c $(CFLAGS) $(INCLUDES) -o cplus-edsel.o cplus-cadillac.c cplus-tab.o : $(srcdir)/cplus-tab.c $(CONFIG_H) $(CPLUS_TREE_H) \ cplus-parse.h flags.h input.h --- 376,383 ---- cplus-cadillac.o : cplus-cadillac.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h $(CC) -c -DCADILLAC $(CFLAGS) $(INCLUDES) -I../cadillac/code/comp-dep -I../cadillac/code/connection $< ! cplus-edsel.o : cplus-edsel.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h ! $(CC) -c $(CFLAGS) $(INCLUDES) -o cplus-edsel.o cplus-edsel.c cplus-tab.o : $(srcdir)/cplus-tab.c $(CONFIG_H) $(CPLUS_TREE_H) \ cplus-parse.h flags.h input.h *************** *** 610,618 **** -mkdir $(startdir) -if [ -f cc1plus ] ; then $(INSTALL) cc1plus $(libdir)/gcc-cc1plus ;fi -if [ -f collect ] ; then $(INSTALL) collect $(libdir)/gcc-collect ;fi ! -if [ -f collect2 ] ; then $(INSTALL) collect2 $(libdir)/gcc-ld ;fi $(INSTALL) g++ $(bindir) ! # -if [ -f crt0+.o ] ; then $(INSTALL) crt0+.o $(startdir)/crt0+.o ;fi -if [ -f crt1+.o ] ; then $(INSTALL) crt1+.o $(startdir)/crt1+.o ;fi -mkdir $(libdir)/g++-include -chmod ugo+rx $(libdir)/g++-include --- 630,638 ---- -mkdir $(startdir) -if [ -f cc1plus ] ; then $(INSTALL) cc1plus $(libdir)/gcc-cc1plus ;fi -if [ -f collect ] ; then $(INSTALL) collect $(libdir)/gcc-collect ;fi ! -if [ -f collect2 ] ; then $(INSTALL) collect2 $(libdir)/gcc-collect2 ;fi $(INSTALL) g++ $(bindir) ! -if [ -f crt0+.o ] ; then $(INSTALL) crt0+.o $(startdir)/crt0+.o ;fi -if [ -f crt1+.o ] ; then $(INSTALL) crt1+.o $(startdir)/crt1+.o ;fi -mkdir $(libdir)/g++-include -chmod ugo+rx $(libdir)/g++-include *************** *** 628,633 **** --- 648,655 ---- -$(LINK) $(DIR)/bison.simple . -$(LINK) $(DIR)/config.gcc . -$(LINK) $(DIR)/move-if-change . + # AT&T SYV3 only allows 14 characters in filename. + -$(LINK) ./cplus-cadillac.c ./cplus-edsel.c $(MAKE) clean ./make-links.g++ -$(LINK) $(DIR)/genemit.c $(DIR)/genoutput.c $(DIR)/genrecog.c \ diff -rc g++-1.39.1.old/collect.c g++-1.39.1/collect.c *** g++-1.39.1.old/collect.c Tue Apr 30 20:46:51 1991 --- g++-1.39.1/collect.c Sat Jun 8 23:19:49 1991 *************** *** 450,456 **** --- 450,458 ---- symindex += GCC_SYMINC(symbol); + #ifndef BROKEN_GCC_OK_SYMBOL if (! GCC_OK_SYMBOL(symbol)) continue; + #endif symbol_name = ldgetname(ldptr, &symbol); /* Check to see if we have a CTOR/DTOR marker */ diff -rc g++-1.39.1.old/collect2.c g++-1.39.1/collect2.c *** g++-1.39.1.old/collect2.c Tue Apr 30 20:46:51 1991 --- g++-1.39.1/collect2.c Sun Jun 9 15:42:54 1991 *************** *** 2,11 **** #include <stdio.h> ! #ifdef convex ! #define TEXT_SECTION_ASM_OP ".text" ! #define DATA_SECTION_ASM_OP ".data" #define ASM_GLOBALIZE_LABEL(FILE, LABEL) \ fprintf (FILE, ".globl _%s\n", LABEL) --- 2,31 ---- #include <stdio.h> ! #include "config.h" ! ! #undef ASM_GLOBALIZE_LABEL(FILE, LABEL) ! #undef ASM_OUTPUT_LABEL(FILE, LABEL) ! #undef ASM_OUTPUT_LABELREF(FILE, LABEL) ! #undef ASM_OUTPUT_INT(FILE, INT) ! ! #ifdef i386 ! ! #define ASM_GLOBALIZE_LABEL(FILE, LABEL) \ ! fprintf (FILE, ".globl %s\n", LABEL) ! ! #define ASM_OUTPUT_LABEL(FILE, LABEL) \ ! fprintf (FILE, "%s:", LABEL) ! ! #define ASM_OUTPUT_LABELREF(FILE, LABEL) \ ! fprintf (FILE, "\t.long %s\n", LABEL) ! ! #define ASM_OUTPUT_INT(FILE, INT) \ ! fprintf (FILE, "\t.long %d\n", INT) ! #endif ! ! #ifdef convex #define ASM_GLOBALIZE_LABEL(FILE, LABEL) \ fprintf (FILE, ".globl _%s\n", LABEL) *************** *** 23,31 **** #ifdef MASSCOMP - #define TEXT_SECTION_ASM_OP ".text" - #define DATA_SECTION_ASM_OP ".data" - #define ASM_GLOBALIZE_LABEL(FILE, LABEL) \ fprintf (FILE, ".globl _%s\n", LABEL) --- 43,48 ---- *************** *** 40,49 **** #endif - #if defined (__GNUC__) || defined (sparc) - #define alloca __builtin_alloca - #endif - extern char *mktemp (char *template); /* Linked lists of constructor and destructor names. */ --- 57,62 ---- *************** *** 132,138 **** --- 145,155 ---- sprintf (cmd, "as -o %s %s && ld -o %s %s %s && rm %s %s %s", hookofile, hooksfile, + #ifdef BROKEN_RELOCATION_LD + outfile, ldargs, hookofile, + #else outfile, codefile, hookofile, + #endif codefile, hooksfile, hookofile); exit (system (cmd)); } *************** *** 180,186 **** --- 197,207 ---- { while (*p && *p != '_') p++; + #ifdef NO_DOLLAR_IN_LABEL + if (! strncmp (p, "_GLOBAL_.I.", 11)) + #else if (! strncmp (p, "_GLOBAL_$I$", 11)) + #endif { newid = alloca (sizeof *newid); newid->name = alloca (strlen (p) + 1); *************** *** 189,195 **** --- 210,220 ---- constructors = newid; break; } + #ifdef NO_DOLLAR_IN_LABEL + else if (! strncmp (p, "_GLOBAL_.D.", 11)) + #else else if (! strncmp (p, "_GLOBAL_$D$", 11)) + #endif { newid = alloca (sizeof *newid); newid->name = alloca (strlen (p) + 1); diff -rc g++-1.39.1.old/cplus-lex.c g++-1.39.1/cplus-lex.c *** g++-1.39.1.old/cplus-lex.c Tue Apr 30 20:46:54 1991 --- g++-1.39.1/cplus-lex.c Wed Jun 5 18:13:11 1991 *************** *** 38,43 **** --- 38,44 ---- #include "flags.h" #include "obstack.h" #include "assert.h" + #include "getpagesize.h" extern int errno; /* needed for VAX. */ extern jmp_buf toplevel; diff -rc g++-1.39.1.old/dbxout.c g++-1.39.1/dbxout.c *** g++-1.39.1.old/dbxout.c Sat May 4 12:45:06 1991 --- g++-1.39.1/dbxout.c Fri Jun 7 13:38:25 1991 *************** *** 1533,1536 **** --- 1533,1541 ---- tree decl; {} + void + dbxout_eh_init (eh_type, eh_decl) + tree eh_type, eh_decl; + { + } #endif /* DBX_DEBUGGING_INFO */ diff -rc g++-1.39.1.old/gcc.c g++-1.39.1/gcc.c *** g++-1.39.1.old/gcc.c Tue Apr 30 20:46:57 1991 --- g++-1.39.1/gcc.c Wed Jun 12 14:14:37 1991 *************** *** 297,307 **** --- 297,326 ---- {0, 0} }; + /* In AT&T System V/386 Release 3.2.2, ld -r doesn't work very well + * with g++. Some changes were made. First collect global ctors and + * dtors and then relink everything with global ctors and dtors. I + * don't know how it works. It just works with me. + */ #ifdef USE_COLLECT /* C++: Here is the spec for collecting global ctor and dtor requirements. */ + #ifdef BROKEN_RELOCATION_LD char *collect_spec = "%{!c:%{!M*:%{!E:%{!S:collect -o %g.s %g.R\n\ + as %g.s -o %g.O\n\ + ld %{o*} %{A} %{d} %{e*} %{N} %{n} %{r} %{s} %{S} %{T*} %{t} %{u*}\ + %{X} %{x} %{z} %{y*} %{!nostdlib:%S} %{L*} -LLOCAL_LIBRARY_DIRECTORY\ + %g.O %o %{!nostdlib:gnulib%s %{g:-lg} %L}\n }}}}"; + + /* Here is the spec for running the linker, after compiling all files. */ + /* Just link the stuffs needed for collect global ctors and dtors. */ + 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*} %{L*} -LLOCAL_LIBRARY_DIRECTORY %o\n }}}}"; + #else + 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\ }}}}"; *************** *** 309,322 **** /* 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\ %{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 }}}}"; #endif /* Accumulate a command (program name and args), and run it. */ --- 328,350 ---- /* 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*} -LLOCAL_LIBRARY_DIRECTORY\ ! %o %{!nostdlib:-lg++ gnulib%s %{g:-lg} %L}\n }}}}"; ! #endif ! #else ! #ifdef USE_COLLECT2 ! /* Here is the spec for running the collect2, after compiling all files. */ ! char *link_spec = "%{!c:%{!M*:%{!E:%{!S:collect2 %{o*} %l\ ! %{A} %{d} %{e*} %{N} %{n} %{r} %{s} %{S} %{T*} %{t} %{u*} %{X} %{x} %{z}\ ! %{y*} %{!nostdlib:%S} %{L*} -LLOCAL_LIBRARY_DIRECTORY\ ! %o %{!nostdlib: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\ %{A} %{d} %{e*} %{N} %{n} %{r} %{s} %{S} %{T*} %{t} %{u*} %{X} %{x} %{z}\ ! %{y*} %{!nostdlib:%S} %{L*} -LLOCAL_LIBRARY_DIRECTORY\ ! %o %{!nostdlib:-lg++ gnulib%s %{g:-lg} %L}\n }}}}"; ! #endif #endif /* Accumulate a command (program name and args), and run it. */ diff -rc g++-1.39.1.old/make-links.g++ g++-1.39.1/make-links.g++ *** g++-1.39.1.old/make-links.g++ Tue Apr 30 20:46:58 1991 --- g++-1.39.1/make-links.g++ Wed Jun 5 17:32:41 1991 *************** *** 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,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}'." diff -rc g++-1.39.1.old/toplev.c g++-1.39.1/toplev.c *** g++-1.39.1.old/toplev.c Tue Apr 30 20:46:59 1991 --- g++-1.39.1/toplev.c Wed Jun 5 18:12:15 1991 *************** *** 61,66 **** --- 61,67 ---- #include "c-tree.h" #include "rtl.h" #include "flags.h" + #include "getpagesize.h" #ifndef _bufsiz #define _bufsiz(p) ((p)->_bufsiz)