Path: utzoo!utgpu!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!cwjcc!bammi@dsrgsun.ces.cwru.edu
From: bammi@dsrgsun.ces.cwru.edu (Jwahar R. Bammi)
Newsgroups: comp.os.minix
Subject: Atari St GCC update 7 of 10 (gcc.shar.2)
Message-ID: <308@cwjcc.CWRU.Edu>
Date: 27 Nov 88 23:52:17 GMT
Sender: news@cwjcc.CWRU.Edu
Reply-To: bammi@dsrgsun.ces.cwru.edu (Jwahar R. Bammi)
Organization: Case Western Reserve University
Lines: 1221
#!/bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #!/bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
# gcc-1.31-diff
# This archive created: Thu Oct 27 21:49:58 1988
# By: Jwahar R. Bammi(Case Western Reserve University)
# Uucp: {decvax,sun,att}!cwjcc!dsrgsun!bammi
# Csnet: bammi@dsrgsun.ces.CWRU.edu
# Arpa: bammi@dsrgsun.ces.CWRU.edu
#
export PATH; PATH=/bin:$PATH
echo shar: extracting "'gcc-1.31-diff'" '(28120 characters)'
if test -f 'gcc-1.31-diff'
then
echo shar: over-writing existing file "'gcc-1.31-diff'"
fi
sed 's/^X//' << \SHAR_EOF > 'gcc-1.31-diff'
X*** ../../gcc-1.31/cccp.c Tue Nov 22 16:29:00 1988
X--- cccp.c Wed Nov 23 07:25:20 1988
X***************
X*** 106,111 ****
X--- 106,113 ----
X
X typedef unsigned char U_CHAR;
X
X+ #ifndef atarist
X+
X #ifdef EMACS
X #define NO_SHORTNAMES
X #include "../src/config.h"
X***************
X*** 132,148 ****
X
X #ifndef VMS
X #include
X! #ifndef USG
X #include /* for __DATE__ and __TIME__ */
X #include
X #else
X #define index strchr
X #define rindex strrchr
X #include
X #include
X! #endif /* USG */
X #endif /* not VMS */
X
X /* VMS-specific definitions */
X #ifdef VMS
X #include
X--- 134,169 ----
X
X #ifndef VMS
X #include
X! #if (!(defined(USG) || defined(atariminix)))
X #include /* for __DATE__ and __TIME__ */
X #include
X #else
X+ #ifndef atariminix
X #define index strchr
X #define rindex strrchr
X+ #endif
X #include
X #include
X! #endif /* USG or atariminix */
X #endif /* not VMS */
X
X+ #else /* atarist */
X+
X+ #include
X+ #include
X+ #include
X+ #include
X+ #include
X+ #include "stddef.h"
X+
X+ #define index strchr
X+ #define rindex strrchr
X+
X+ extern long _stksize = 524288; /* want big stack cause include files
X+ get alloca'ed there */
X+
X+ #endif /* atarist */
X+
X /* VMS-specific definitions */
X #ifdef VMS
X #include
X***************
X*** 311,329 ****
X /* #include "file" looks in source file dir, then stack. */
X /* #include just looks in the stack. */
X /* -I directories are added to the end, then the defaults are added. */
X struct directory_stack include_defaults[] =
X {
X #ifndef VMS
X! { &include_defaults[1], GCC_INCLUDE_DIR },
X { 0, "/usr/include" }
X #else
X { &include_defaults[1], "GNU_CC_INCLUDE:" }, /* GNU includes */
X { &include_defaults[2], "SYS$SYSROOT:[SYSLIB.]" }, /* VAX-11 "C" includes */
X { 0, "" }, /* This makes normal VMS filespecs work OK */
X #endif /* VMS */
X };
X
X /* These are used instead of the above, for C++. */
X struct directory_stack cplusplus_include_defaults[] =
X {
X #ifndef VMS
X--- 332,388 ----
X /* #include "file" looks in source file dir, then stack. */
X /* #include just looks in the stack. */
X /* -I directories are added to the end, then the defaults are added. */
X+ #ifdef atarist
X+
X+ struct directory_stack include_canned_defaults[] =
X+ {
X+ { &include_canned_defaults[1], "\\gnu\\lib" },
X+ { 0, "\\gnu\\include" }
X+ };
X+
X+ struct directory_stack * include_defaults = &include_canned_defaults[0];
X+
X+ #else
X+
X struct directory_stack include_defaults[] =
X {
X #ifndef VMS
X! #ifdef CROSSATARI
X! { 0, CROSSINC }
X! #else
X! #ifdef atariminix
X! { 0, "/usr/local/gcc-include" }
X! #else
X { 0, "/usr/include" }
X+ #endif
X+ #endif
X #else
X { &include_defaults[1], "GNU_CC_INCLUDE:" }, /* GNU includes */
X { &include_defaults[2], "SYS$SYSROOT:[SYSLIB.]" }, /* VAX-11 "C" includes */
X { 0, "" }, /* This makes normal VMS filespecs work OK */
X #endif /* VMS */
X };
X+ #endif /* atarist */
X
X /* These are used instead of the above, for C++. */
X+ #ifdef atarist
X+
X+ struct directory_stack include_canned_cplusplus_defaults[] =
X+ {
X+ { &include_canned_defaults[1], "\\gnu\\lib" },
X+ { 0, "\\gnu\\include" }
X+ };
X+
X+ struct directory_stack * cplusplus_include_defaults =
X+ &include_canned_cplusplus_defaults[0];
X+
X+ #else
X+
X+ #ifdef atariminix
X+ #define GPLUSPLUS_INCLUDE_DIR "/usr/local/g++-include"
X+ #define GCC_INCLUDE_DIR "/usr/local/gcc-include"
X+ #endif
X+
X struct directory_stack cplusplus_include_defaults[] =
X {
X #ifndef VMS
X***************
X*** 333,339 ****
X--- 392,402 ----
X { &cplusplus_include_defaults[2], "/usr/include/CC" },
X /* Use GNU CC specific header files. */
X { &cplusplus_include_defaults[3], GCC_INCLUDE_DIR },
X+ #ifdef CROSSATARI
X+ { 0, CROSSINC }
X+ #else
X { 0, "/usr/include" }
X+ #endif
X #else
X { &cplusplus_include_defaults[1], "GNU_CC_INCLUDE:" },
X /* VAX-11 C includes */
X***************
X*** 341,346 ****
X--- 404,410 ----
X { 0, "" }, /* This makes normal VMS filespecs work OK */
X #endif /* VMS */
X };
X+ #endif /* atarist */
X
X struct directory_stack *include = 0; /* First dir to search */
X /* First dir to search for */
X***************
X*** 565,570 ****
X--- 629,687 ----
X /* Nonzero means -I- has been seen,
X so don't look for #include "foo" the source-file directory. */
X int ignore_srcdir;
X+
X+ #ifdef atarist
X+ /* a little frobule to filter incoming file data */
X+ int eunuchs_read(f, buf, size)
X+ int f;
X+ char * buf;
X+ int size;
X+ {
X+ char local_buf[1024];
X+ register int result_size;
X+ register char * local_bufp, * target_bufp;
X+ register int buf_size, size_read;
X+
X+ for (result_size = 0, target_bufp = buf ; size > 0 ; size -= 1024)
X+ /* do a buffer */
X+ {
X+ if (size > 1024)
X+ buf_size = 1024;
X+ else
X+ buf_size = size;
X+ size_read = read(f, &local_buf, buf_size);
X+ for (local_bufp = (char * ) &local_buf; size_read > 0 ; size_read--)
X+ if (*local_bufp == '\r')
X+ local_bufp++;
X+ else
X+ {
X+ *target_bufp++ = *local_bufp++;
X+ result_size++;
X+ }
X+ }
X+ return(result_size);
X+ }
X+
X+ /* the following dingus is used in place of some calls to bcopy,
X+ to ensure that backslashes get properly slashified when getting
X+ shoved into strings. Note that it returns the new pointer!!
X+ There ought to be a better way... */
X+
X+ U_CHAR * slashifying_bcopy(from_buf, to_buf, nbytes)
X+ U_CHAR * from_buf, * to_buf;
X+ int nbytes;
X+ {
X+ for ( ; nbytes > 0 ; )
X+ {
X+ if(*from_buf == '\\')
X+ *to_buf++ = '\\';
X+ *to_buf++ = *from_buf++;
X+ nbytes--;
X+ }
X+ return(to_buf);
X+ }
X+
X+ #endif /* atarist */
X
X int
X main (argc, argv)
X***************
X*** 614,627 ****
X--- 731,767 ----
X #endif
X
X max_include_len
X+ #ifdef atarist
X+ = sizeof ("/usr/include/CC");
X+ #else
X = max (max (sizeof (GCC_INCLUDE_DIR),
X sizeof (GPLUSPLUS_INCLUDE_DIR)),
X sizeof ("/usr/include/CC"));
X+ #endif
X
X bzero (pend_files, argc * sizeof (char *));
X bzero (pend_defs, argc * sizeof (char *));
X bzero (pend_undefs, argc * sizeof (char *));
X
X+ #ifdef atarist
X+ /* see if we have an indication of where the GNU library directory is */
X+ {
X+ char * gnulib = (char * ) getenv("GNULIB");
X+ struct directory_stack * gnulib_dir;
X+
X+ if (gnulib)
X+ {
X+ gnulib_dir = (struct directory_stack * )
X+ xmalloc(sizeof(struct directory_stack));
X+ gnulib_dir->fname = xmalloc(strlen(gnulib) + 1);
X+ strcpy(gnulib_dir->fname, gnulib);
X+ /* cons it onto the front of the defaults. */
X+ gnulib_dir->next = include_defaults;
X+ include_defaults = gnulib_dir;
X+ }
X+ }
X+ #endif
X+
X /* Process switches and find input file name. */
X
X for (i = 1; i < argc; i++) {
X***************
X*** 904,910 ****
X--- 1044,1054 ----
X }
X }
X
X+ #ifdef atarist
X+ file_size_and_mode (in_fname, &st_mode, &st_size);
X+ #else
X file_size_and_mode (f, &st_mode, &st_size);
X+ #endif
X fp->fname = in_fname;
X fp->lineno = 1;
X /* JF all this is mine about reading pipes and ttys */
X***************
X*** 922,928 ****
X--- 1066,1076 ----
X fp->buf = (U_CHAR *) xmalloc (bsize + 2);
X bufp = fp->buf;
X for (;;) {
X+ #ifdef atarist
X+ cnt = eunuchs_read (f, bufp, bsize - size);
X+ #else
X cnt = read (f, bufp, bsize - size);
X+ #endif
X if (cnt < 0) goto perror; /* error! */
X if (cnt == 0) break; /* End of file */
X size += cnt;
X***************
X*** 942,948 ****
X--- 1090,1100 ----
X fp->buf = (U_CHAR *) xmalloc (st_size + 2);
X
X while (st_size > 0) {
X+ #ifdef atarist
X+ i = eunuchs_read (f, fp->buf + fp->length, st_size);
X+ #else
X i = read (f, fp->buf + fp->length, st_size);
X+ #endif
X if (i <= 0) {
X if (i == 0) break;
X goto perror;
X***************
X*** 992,997 ****
X--- 1144,1152 ----
X if (ferror (stdout))
X fatal ("I/O error on output");
X
X+ #ifdef atarist
X+ close(fileno(stdout)); /* this shouldn't be necessary */
X+ #endif
X if (errors)
X exit (FATAL_EXIT_CODE);
X exit (SUCCESS_EXIT_CODE);
X***************
X*** 2226,2231 ****
X--- 2381,2387 ----
X
X case T_DATE:
X case T_TIME:
X+ #ifndef atarist /* someday figure out how to do this */
X if (timebuf == NULL) {
X i = time (0);
X timebuf = localtime (&i);
X***************
X*** 2237,2242 ****
X--- 2393,2401 ----
X else
X sprintf (buf, "\"%02d:%02d:%02d\"", timebuf->tm_hour, timebuf->tm_min,
X timebuf->tm_sec);
X+ #else
X+ sprintf(buf, "");
X+ #endif
X break;
X
X case T_SPEC_DEFINED:
X***************
X*** 2342,2347 ****
X--- 2501,2509 ----
X and put it in front of the search list. */
X dsp[0].next = stackp;
X stackp = dsp;
X+ #ifdef atarist
X+ ep = rindex (nam, '\\');
X+ #else
X #ifndef VMS
X ep = rindex (nam, '/');
X #else /* VMS */
X***************
X*** 2350,2355 ****
X--- 2512,2518 ----
X if (ep == NULL) ep = rindex (nam, ':');
X if (ep != NULL) ep++;
X #endif /* VMS */
X+ #endif /* atarist */
X if (ep != NULL) {
X n = ep - nam;
X dsp[0].fname = (char *) alloca (n + 1);
X***************
X*** 2400,2406 ****
X--- 2563,2573 ----
X
X /* If specified file name is absolute, just open it. */
X
X+ #ifdef atarist
X+ if (*fbeg == '\\') {
X+ #else
X if (*fbeg == '/') {
X+ #endif
X strncpy (fname, fbeg, flen);
X fname[flen] = 0;
X f = open (fname, O_RDONLY, 0666);
X***************
X*** 2411,2417 ****
X--- 2578,2588 ----
X for (; stackp; stackp = stackp->next) {
X if (stackp->fname) {
X strcpy (fname, stackp->fname);
X+ #ifdef atarist
X+ strcat (fname, "\\");
X+ #else
X strcat (fname, "/");
X+ #endif
X fname[strlen (fname) + flen] = 0;
X } else {
X fname[0] = 0;
X***************
X*** 2463,2469 ****
X--- 2634,2644 ----
X FILE_BUF *fp; /* For input stack frame */
X int success = 0;
X
X+ #ifdef atarist
X+ if (file_size_and_mode (fname, (int *)0, &st_size) < 0)
X+ #else
X if (file_size_and_mode (f, (int *)0, &st_size) < 0)
X+ #endif
X goto nope; /* Impossible? */
X
X fp = &instack[indepth + 1];
X***************
X*** 2478,2484 ****
X--- 2653,2663 ----
X /* Read the file contents, knowing that st_size is an upper bound
X on the number of bytes we can read. */
X while (st_size > 0) {
X+ #ifdef atarist
X+ i = eunuchs_read (f, fp->buf + fp->length, st_size);
X+ #else
X i = read (f, fp->buf + fp->length, st_size);
X+ #endif
X if (i <= 0) {
X if (i == 0) break;
X goto nope;
X***************
X*** 3797,3804 ****
X--- 3976,3987 ----
X check_expand (op, len + 1);
X if (op->bufp > op->buf && op->bufp[-1] != '\n')
X *op->bufp++ = '\n';
X+ #ifdef atarist
X+ op->bufp = slashifying_bcopy (line_cmd_buf, op->bufp, len);
X+ #else
X bcopy (line_cmd_buf, op->bufp, len);
X op->bufp += len;
X+ #endif
X op->lineno = ip->lineno;
X }
X
X***************
X*** 5003,5009 ****
X--- 5186,5196 ----
X extern char *sys_errlist[];
X
X fprintf (stderr, "%s: ", progname);
X+ #ifdef atarist
X+ if ((errno > sys_nerr) && (errno < 0))
X+ #else
X if (errno < sys_nerr)
X+ #endif
X fprintf (stderr, "%s for `%s'\n", sys_errlist[errno], name);
X else
X fprintf (stderr, "undocumented error for `%s'\n", name);
X***************
X*** 5082,5095 ****
X--- 5269,5291 ----
X and store them in *MODE_POINTER and *SIZE_POINTER. */
X
X int
X+ #ifdef atarist
X+ file_size_and_mode (fname, mode_pointer, size_pointer)
X+ char * fname;
X+ #else
X file_size_and_mode (fd, mode_pointer, size_pointer)
X int fd;
X+ #endif
X int *mode_pointer;
X long int *size_pointer;
X {
X struct stat sbuf;
X
X+ #ifdef atarist
X+ if (stat (fname, &sbuf) < 0) return (-1);
X+ #else
X if (fstat (fd, &sbuf) < 0) return (-1);
X+ #endif
X if (mode_pointer) *mode_pointer = sbuf.st_mode;
X if (size_pointer) *size_pointer = sbuf.st_size;
X return 0;
X*** ../../gcc-1.31/combine.c Tue Nov 22 16:29:03 1988
X--- combine.c Wed Nov 23 07:25:23 1988
X***************
X*** 711,717 ****
X--- 711,721 ----
X register char *fmt;
X register int len, i;
X register enum rtx_code code;
X+ #if (defined(atarist) || defined(atariminix))
X+ short was_replaced[2]; /* 'char' confuses GAS 1.14... */
X+ #else
X char was_replaced[2];
X+ #endif
X
X #define SUBST(INTO, NEWVAL) \
X do { if (undobuf.num_undo < MAX_UNDO) \
X*** ../../gcc-1.31/gcc.c Tue Nov 22 16:29:26 1988
X--- gcc.c Wed Nov 23 09:13:38 1988
X***************
X*** 104,110 ****
X--- 104,119 ----
X position among the other output files.
X
X */
X+ #ifdef CROSSATARI
X+ #ifdef atarist
X+ #undef atarist
X+ #endif
X+ #ifdef atariminix
X+ #undef atariminix
X+ #endif
X+ #endif
X
X+
X /* This defines which switches take arguments. */
X
X #define SWITCH_TAKES_ARG(CHAR) \
X***************
X*** 114,126 ****
X || (CHAR) == 'L')
X
X #include
X #include
X #include
X #include
X #include "config.h"
X #include "obstack.h"
X
X! #ifdef USG
X #define R_OK 4
X #define W_OK 2
X #define X_OK 1
X--- 123,148 ----
X || (CHAR) == 'L')
X
X #include
X+
X+ #ifdef atarist
X+ #include
X+ #include
X+ #include
X+ #include
X+
X+ long _stksize = 8192;
X+ extern char *getenv();
X+
X+ #else
X #include
X #include
X #include
X+ #endif
X+
X #include "config.h"
X #include "obstack.h"
X
X! #if (defined(USG) || defined(atariminix))
X #define R_OK 4
X #define W_OK 2
X #define X_OK 1
X***************
X*** 207,213 ****
X {".c",
X "cpp %{nostdinc} %{C} %{v} %{D*} %{U*} %{I*} %{M*} %{T} \
X -undef -D__GNU__ -D__GNUC__ %{ansi:-T -$ -D__STRICT_ANSI__} %{!ansi:%p}\
X! %c %{O:-D__OPTIMIZE__} %{traditional} %{pedantic}\
X %{Wcomment} %{Wtrigraphs} %{Wall} %C\
X %i %{!M*:%{!E:%g.cpp}}%{E:%{o*}}%{M*:%{o*}}\n\
X %{!M*:%{!E:cc1 %g.cpp %1 %{!Q:-quiet} -dumpbase %i %{Y*} %{d*} %{m*} %{f*}\
X--- 229,236 ----
X {".c",
X "cpp %{nostdinc} %{C} %{v} %{D*} %{U*} %{I*} %{M*} %{T} \
X -undef -D__GNU__ -D__GNUC__ %{ansi:-T -$ -D__STRICT_ANSI__} %{!ansi:%p}\
X! %c %{O:-D__OPTIMIZE__} %{mshort:-D__MSHORT__} %{traditional}\
X! %{pedantic}\
X %{Wcomment} %{Wtrigraphs} %{Wall} %C\
X %i %{!M*:%{!E:%g.cpp}}%{E:%{o*}}%{M*:%{o*}}\n\
X %{!M*:%{!E:cc1 %g.cpp %1 %{!Q:-quiet} -dumpbase %i %{Y*} %{d*} %{m*} %{f*}\
X***************
X*** 243,252 ****
X--- 266,286 ----
X };
X
X /* Here is the spec for running the linker, after compiling all files. */
X+ #if (defined(CROSSATARI) || defined(atarist) || defined(atariminix))
X+
X char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l\
X %{A} %{d} %{e*} %{N} %{n} %{r} %{s} %{S} %{T*} %{t} %{u*} %{X} %{x} %{z}\
X %{y*} %{!nostdlib:%S} \
X+ %{L*} %o %{!nostdlib:%s %{g:-lg} %L}\n }}}}";
X+
X+ #else
X+
X+ char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l\
X+ %{A} %{d} %{e*} %{N} %{n} %{r} %{s} %{S} %{T*} %{t} %{u*} %{X} %{x} %{z}\
X+ %{y*} %{!nostdlib:%S} \
X %{L*} %o %{!nostdlib:gnulib%s %{g:-lg} %L}\n }}}}";
X+
X+ #endif
X
X /* Record the names of temporary files we tell compilers to write,
X and delete them at the end of the run. */
X***************
X*** 327,336 ****
X--- 361,389 ----
X void
X choose_temp_base ()
X {
X+ #if (!(defined(atarist) || defined(atariminix)))
X register char *foo = "/tmp/ccXXXXXX";
X temp_filename = (char *) xmalloc (strlen (foo) + 1);
X strcpy (temp_filename, foo);
X+ #else
X+ #ifdef atarist
X+ char * env_temp = (char *)getenv("TEMP");
X+
X+ if (!env_temp)
X+ env_temp = "\\temp";
X+ temp_filename = concat(env_temp, "\\", "gcc-temp");
X+ #else
X+ char * env_temp = (char *)getenv("TEMP");
X+
X+ if (!env_temp)
X+ env_temp = "/tmp";
X+ temp_filename = concat(env_temp, "/", "ccXXXXXX");
X+ #endif
X+ #endif
X+
X+ #ifndef atarist
X mktemp (temp_filename);
X+ #endif
X temp_filename_length = strlen (temp_filename);
X }
X
X***************
X*** 360,372 ****
X--- 413,445 ----
X /* Default prefixes to attach to command names. */
X
X #ifndef STANDARD_EXEC_PREFIX
X+ #ifdef CROSSATARI
X+ #ifdef MINIX
X+ #define STANDARD_EXEC_PREFIX "/dsrg/bammi/cross-minix/lib/gcc-"
X+ #else
X+ #define STANDARD_EXEC_PREFIX "/dsrg/bammi/cross-gcc/lib/gcc-"
X+ #endif
X+ #else
X #define STANDARD_EXEC_PREFIX "/usr/local/lib/gcc-"
X+ #endif
X #endif /* !defined STANDARD_EXEC_PREFIX */
X
X char *standard_exec_prefix = STANDARD_EXEC_PREFIX;
X char *standard_exec_prefix_1 = "/usr/lib/gcc-";
X
X+ #ifdef CROSSATARI
X+ #ifdef MINIX
X+ char *standard_startfile_prefix = "/dsrg/bammi/cross-minix/lib/";
X+ #else
X+ char *standard_startfile_prefix = "/dsrg/bammi/cross-gcc/lib/";
X+ #endif
X+ #else
X+ #ifdef atariminix
X+ char *standard_startfile_prefix = "/usr/local/lib/";
X+ #else
X char *standard_startfile_prefix = "/lib/";
X+ #endif
X+ #endif
X char *standard_startfile_prefix_1 = "/usr/lib/";
X
X /* Clear out the vector of arguments (after a command is executed). */
X***************
X*** 418,423 ****
X--- 491,499 ----
X if (strlen (standard_exec_prefix_1) > size)
X size = strlen (standard_exec_prefix_1);
X size += strlen (argbuf[0]) + 1;
X+ #ifdef atarist
X+ size += 5; /* slush for ".ttp" */
X+ #endif
X temp = (char *) alloca (size);
X
X /* Determine the filename to execute. */
X***************
X*** 426,431 ****
X--- 502,510 ----
X {
X strcpy (temp, user_exec_prefix);
X strcat (temp, argbuf[0]);
X+ #ifdef atarist
X+ strcat (temp, ".ttp");
X+ #endif
X win = (access (temp, X_OK) == 0);
X }
X
X***************
X*** 433,438 ****
X--- 512,520 ----
X {
X strcpy (temp, standard_exec_prefix);
X strcat (temp, argbuf[0]);
X+ #ifdef atarist
X+ strcat (temp, ".ttp");
X+ #endif
X win = (access (temp, X_OK) == 0);
X }
X
X***************
X*** 440,445 ****
X--- 522,530 ----
X {
X strcpy (temp, standard_exec_prefix_1);
X strcat (temp, argbuf[0]);
X+ #ifdef atarist
X+ strcat (temp, ".ttp");
X+ #endif
X win = (access (temp, X_OK) == 0);
X }
X
X***************
X*** 466,472 ****
X #endif /* DEBUG */
X }
X
X! #ifdef USG
X pid = fork ();
X if (pid < 0)
X pfatal_with_name ("fork");
X--- 551,558 ----
X #endif /* DEBUG */
X }
X
X! #ifndef atarist
X! #if (defined(USG) || defined(atariminix))
X pid = fork ();
X if (pid < 0)
X pfatal_with_name ("fork");
X***************
X*** 480,494 ****
X--- 566,613 ----
X if (win)
X execv (temp, argbuf);
X else
X+ #ifdef atariminix
X+ /* hopefully it never gets here -- keep your fingers crossed */
X+ /* this has to fixed someday */
X+ execv (argbuf[0], argbuf);
X+ #else
X execvp (argbuf[0], argbuf);
X+ #endif
X perror_with_name (argbuf[0]);
X+ #ifdef atariminix
X+ exit (65);
X+ #else
X _exit (65);
X+ #endif
X+
X }
X wait (&status);
X if ((status & 0x7F) != 0)
X fatal ("Program %s got fatal signal %d.", argbuf[0], (status & 0x7F));
X if (((status & 0xFF00) >> 8) >= MIN_FATAL_STATUS)
X return -1;
X+ #else
X+
X+ {
X+ char * sizep = (char * ) alloca(256);
X+ char * cmdp = sizep + 1;
X+ register int iii;
X+
X+ *cmdp = '\0';
X+ for (iii = 1 ; (argbuf[iii] != 0) ; iii++ )
X+ {
X+ strcat (cmdp, argbuf[iii]);
X+ strcat (cmdp, " ");
X+ }
X+ *sizep = strlen(cmdp);
X+ if (!win)
X+ temp = argbuf[0];
X+ /* printf("exec '%s' '%s'\n", temp, cmdp); */
X+ iii = Pexec(0, temp, sizep, 0);
X+ /* printf(" ... -> %d\n", iii); */
X+ return(iii);
X+ }
X+ #endif /* atarist */
X return 0;
X }
X
X***************
X*** 654,659 ****
X--- 773,788 ----
X search dirs for it. */
X int this_is_library_file;
X
X+ #ifdef atarist
X+ /* I don't know why this is necessary. Recursive calls to do_spec_1
X+ end up ignoring the error code from calls to execute(). That causes
X+ do_spec to get a 0 return value, and do_spec_1("\n"), which causes the
X+ command to get executed again.
X+ */
X+ int execute_return_error = 0;
X+ #endif
X+
X+
X /* Process the spec SPEC and run the commands specified therein.
X Returns 0 if the spec is successfully processed; -1 if failed. */
X
X***************
X*** 670,675 ****
X--- 799,811 ----
X this_is_library_file = 0;
X
X value = do_spec_1 (spec, 0);
X+ #ifdef atarist
X+ if (!value && execute_return_error)
X+ {
X+ value = execute_return_error;
X+ execute_return_error = 0;
X+ }
X+ #endif
X if (value == 0)
X value = do_spec_1 ("\n", 0);
X return value;
X***************
X*** 701,706 ****
X--- 837,866 ----
X Otherwise, NL, SPC, TAB and % are special. */
X switch (inswitch ? 'a' : c)
X {
X+ #ifdef atarist
X+ /* this stuff added by jrd. if see '$', expect name of env var, delimited
X+ by '$'. Find it's value, and subst it in. */
X+
X+ case '$':
X+ {
X+ char varname[32]; /* should be enough */
X+ char * value; /* deciphered value string */
X+ int i;
X+
X+ for (i = 0 ; ((c = *p++) != '$') ; i++)
X+ varname[i] = c;
X+ varname[i] = '\0';
X+ if (strlen(&varname) > 0)
X+ {
X+ value = (char * )getenv(&varname);
X+ if (value)
X+ do_spec_1(value, 0);
X+ else
X+ do_spec_1(".", 0); /* a compleat kludge... */
X+ }
X+ break;
X+ }
X+ #endif /* atarist */
X case '\n':
X /* End of line: finish any pending argument,
X then run the pending command if one has been started. */
X***************
X*** 718,723 ****
X--- 878,887 ----
X if (argbuf_index)
X {
X int value = execute ();
X+ #ifdef atarist
X+ if (!execute_return_error)
X+ execute_return_error = value;
X+ #endif
X if (value)
X return value;
X }
X***************
X*** 834,839 ****
X--- 998,1007 ----
X break;
X
X default:
X+ #ifdef atarist
X+ fprintf(stderr, "Bogus char '%c' found at pos %d of spec '%s'\n",
X+ c, (p - spec - 1), spec);
X+ #endif
X abort ();
X }
X break;
X***************
X*** 1026,1032 ****
X--- 1194,1204 ----
X
X if (!win)
X {
X+ #ifdef atarist
X+ strcpy (temp, ".\\");
X+ #else
X strcpy (temp, "./");
X+ #endif
X strcat (temp, name);
X win = (access (temp, R_OK) == 0);
X }
X***************
X*** 1042,1047 ****
X--- 1214,1220 ----
X
X /* On fatal signals, delete all the temporary files. */
X
X+ #ifndef atarist
X void
X fatal_error (signum)
X int signum;
X***************
X*** 1052,1057 ****
X--- 1225,1231 ----
X so its normal effect occurs. */
X kill (getpid (), signum);
X }
X+ #endif /* atarist */
X
X int
X main (argc, argv)
X***************
X*** 1063,1076 ****
X--- 1237,1256 ----
X int nolink = 0;
X int error_count = 0;
X
X+ #ifdef atarist
X+ programname = "gcc";
X+ #else
X programname = argv[0];
X+ #endif
X
X+ #ifndef atarist
X if (signal (SIGINT, SIG_IGN) != SIG_IGN)
X signal (SIGINT, fatal_error);
X if (signal (SIGHUP, SIG_IGN) != SIG_IGN)
X signal (SIGHUP, fatal_error);
X if (signal (SIGTERM, SIG_IGN) != SIG_IGN)
X signal (SIGTERM, fatal_error);
X+ #endif
X
X argbuf_length = 10;
X argbuf = (char **) xmalloc (argbuf_length * sizeof (char *));
X***************
X*** 1084,1089 ****
X--- 1264,1279 ----
X
X process_command (argc, argv);
X
X+ #ifdef atarist
X+ /* if no default dir specified for executables, look for an env var
X+ called 'GCCEXEC' and use that */
X+
X+ if (!user_exec_prefix)
X+ {
X+ user_exec_prefix = getenv("GCCEXEC");
X+ }
X+ #endif /* atarist */
X+
X if (vflag)
X {
X extern char *version_string;
X***************
X*** 1130,1142 ****
X--- 1320,1342 ----
X
X input_basename = input_filename;
X for (p = input_filename; *p; p++)
X+ #ifdef atarist
X+ if (*p == '\\')
X+ #else
X if (*p == '/')
X+ #endif
X input_basename = p + 1;
X basename_length = (input_filename_length - strlen (cp->suffix)
X - (input_basename - input_filename));
X value = do_spec (cp->spec);
X if (value < 0)
X error_count = 1;
X+ #ifdef atarist
X+ /* is this necessary? */
X+ else
X+ if (value == FATAL_EXIT_CODE)
X+ error_count = 1;
X+ #endif
X break;
X }
X }
X***************
X*** 1240,1246 ****
X--- 1440,1450 ----
X extern char *sys_errlist[];
X char *s;
X
X+ #ifdef atarist
X+ if ((errno > sys_nerr) && (errno < 0))
X+ #else
X if (errno < sys_nerr)
X+ #endif
X s = concat ("", sys_errlist[errno], " for %s");
X else
X s = "cannot open %s";
X***************
X*** 1254,1260 ****
X--- 1458,1468 ----
X extern char *sys_errlist[];
X char *s;
X
X+ #ifdef atarist
X+ if ((errno > sys_nerr) && (errno < 0))
X+ #else
X if (errno < sys_nerr)
X+ #endif
X s = concat ("", sys_errlist[errno], " for %s");
X else
X s = "cannot open %s";
X*** ../../gcc-1.31/symout.c Mon Aug 22 11:57:25 1988
X--- symout.c Wed Nov 23 07:25:27 1988
X***************
X*** 25,30 ****
X--- 25,35 ----
X #include "rtl.h"
X #include "gdbfiles.h"
X #include
X+ #ifndef atarist
X+ #include
X+ #else
X+ #include
X+ #endif
X #undef NULL
X #include "stddef.h"
X
X*** ../../gcc-1.31/toplev.c Tue Nov 22 16:30:39 1988
X--- toplev.c Wed Nov 23 07:25:29 1988
X***************
X*** 29,48 ****
X--- 29,66 ----
X #include
X #include
X
X+ #ifdef atarist
X+ #include
X+ #include
X+
X+ extern long _stksize = 128L * 1024L; /* for 1M ST's */
X+ /* extern long _stksize = 500000; */ /* enough to compile -O gas */
X+
X+ #else
X+
X #include
X #include
X
X+ #ifdef atariminix
X+ #include
X+ #include
X+ #endif
X+
X #ifdef USG
X #include
X #include
X #include /* Correct for hpux at least. Is it good on other USG? */
X #else
X #ifndef VMS
X+ #ifndef atariminix
X #include
X #include
X #endif
X #endif
X+ #endif
X
X+ #endif /* atarist */
X+
X #include "tree.h"
X #include "c-tree.h"
X #include "rtl.h"
X***************
X*** 271,277 ****
X int
X gettime ()
X {
X! #ifdef USG
X struct tms tms;
X #else
X #ifndef VMS
X--- 289,298 ----
X int
X gettime ()
X {
X! #ifdef atarist
X! long now;
X! #else
X! #if (defined(USG) || defined(atariminix))
X struct tms tms;
X #else
X #ifndef VMS
X***************
X*** 286,296 ****
X } vms_times;
X #endif
X #endif
X
X if (quiet_flag)
X return 0;
X
X! #ifdef USG
X times (&tms);
X return (tms.tms_utime + tms.tms_stime) * (1000000 / HZ);
X #else
X--- 307,321 ----
X } vms_times;
X #endif
X #endif
X+ #endif
X
X if (quiet_flag)
X return 0;
X
X! #ifdef atarist
X! return(time(NULL) * 1000000);
X! #else
X! #if (defined(USG) || defined(atariminix))
X times (&tms);
X return (tms.tms_utime + tms.tms_stime) * (1000000 / HZ);
X #else
X***************
X*** 303,308 ****
X--- 328,334 ----
X return (vms_times.proc_user_time + vms_times.proc_system_time) * 10000;
X #endif
X #endif
X+ #endif /* atarist */
X }
X
X #define TIMEVAR(VAR, BODY) \
X***************
X*** 965,971 ****
X--- 991,1001 ----
X TIMEVAR (symout_time,
X {
X struct stat statbuf;
X+ #ifdef atarist
X+ stat (name, &statbuf);
X+ #else
X fstat (fileno (finput), &statbuf);
X+ #endif
X symout_types (get_permanent_types ());
X symout_top_blocks (globals, gettags ());
X symout_finish (name, statbuf.st_ctime);
X***************
X*** 1475,1480 ****
X--- 1505,1520 ----
X else if (!strcmp (str, "dumpbase"))
X {
X dump_base_name = argv[++i];
X+ #ifdef atarist
X+ /* dump_base_name will typically be 'foo.c' here. Need to truncate at the '.',
X+ cause dots mean something here */
X+ {
X+ char * n = dump_base_name;
X+ for ( ; ((*n) && (*n != '.')) ; )
X+ n++;
X+ *n = '\0';
X+ }
X+ #endif
X }
X else if (str[0] == 'd')
X {
X***************
X*** 1635,1640 ****
X--- 1675,1681 ----
X
X compile_file (filename);
X
X+ #if (!(defined(atarist) || defined(atariminix)))
X #ifndef USG
X #ifndef VMS
X if (print_mem_flag)
X***************
X*** 1650,1656 ****
X }
X #endif /* not VMS */
X #endif /* not USG */
X!
X if (errorcount)
X exit (FATAL_EXIT_CODE);
X if (sorrycount)
X--- 1691,1697 ----
X }
X #endif /* not VMS */
X #endif /* not USG */
X! #endif /* atarist or atariminix */
X if (errorcount)
X exit (FATAL_EXIT_CODE);
X if (sorrycount)
SHAR_EOF
if test 28120 -ne "`wc -c 'gcc-1.31-diff'`"
then
echo shar: error transmitting "'gcc-1.31-diff'" '(should have been 28120 characters)'
fi
# End of shell archive
exit 0
usenet: {decvax,sun}!cwjcc!dsrgsun!bammi jwahar r. bammi
csnet: bammi@dsrgsun.ces.CWRU.edu
arpa: bammi@dsrgsun.ces.CWRU.edu
compuServe: 71515,155