james@dell.dell.com (James Van Artsdalen) (11/10/89)
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