coolidge@casca.cs.uiuc.edu (John Coolidge) (03/20/90)
Here are the much hoped for patches for G++ 1.37.1 under A/UX. These are _not_ perfect --- at least two of the libg++ tests fail miserably, and another returns data that's a little bit off --- but they do compile all of libg++ and most of the tests run just fine. I`ll post the libg++ patches I'm using later today (mostly header file tweaking). These patches require that you use the patches for tm-aux.h that I posted earlier today. I strongly recommend using the tm-aux.h patches I posted last week too (they fix a bug with -g output). There isn't a README for the A/UX version yet, so here's a short guide to compiling g++: 1) Get gcc-1.37.1 and apply the A/UX patches from apple.com and my patches. 2) Make gcc-1.37.1 3) Install gcc-1.37.1. Run fixincludes. 4) Get g++-1.37.1 and apply these patches. 5) Run 'make maketest DIR=<gcc-1.37.1 dir> TDIR=<gcc-1.37.1 dir>' 6) Run 'config.g++ aux' 7) Make dwb@archer.apple.com (David W. Berry) writes: > No, g++ does not work with A/UX. The major problem that I >know of is g++'s complete and total lack of support for coff. I keep >wanting to do a port (I did the gcc port) but don't have time. Actually, COFF wasn't much of a problem --- collect.c seems to do a pretty good job. The big problem was dealing with the brain-damaged assembler that comes with A/UX. G++ really, really wants a wierd symbol to use to join things together, and 'as' simply doesn't give me anything to use. '%' is almost good enough, except 1) it's used for registers, and sometimes 'as' gets confused, and 2) it has a special meaning in printfs. Thus, I wound up using 'A' and patching things so that it wouldn't be completely horrible. But right now using anything of the format A_<anything> as a type name will cause strange error messages. I hope A/UX 2.0's 'as' has at least one oddball symbol to use for things like this (I know, dream on...). This patch incorporates two patches that came over gnu.g++.bug: one which fixes USG_STDIO, and one that fixes cplus-dem.c. The USG_STDIO patch (cplus-lex.c) is required, which the cplus-dem.c is of unknown value (it doesn't seem to break anything, though). The rest is just work-arounds for the 'as' problem and some minor tweaking. Send bug reports (and, hopefully, fixes!) to me (coolidge@cs.uiuc.edu), and I'll collect them all and put together an improved patch file. --John -------------------------------------------------------------------------- diff -r -c g++-1.37.1/Makefile g++-1.37.1.aux/Makefile *** g++-1.37.1/Makefile Mon Feb 26 08:37:46 1990 --- g++-1.37.1.aux/Makefile Wed Mar 14 14:46:00 1990 *************** *** 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 $(COFFLAGS) -B../gcc-test/ 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) -DAUX_ASM -DmacII -DAUX CC = gcc BISON = bison BISONFLAGS = -v -d *************** *** 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 *************** *** 124,135 **** # But don't do that if compiling using GCC. # If your system has alloca() in /lib/libPW.a, un-comment the following line: ! # CLIB= -lPW # 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: --- 124,135 ---- # But don't do that if compiling using GCC. # If your system has alloca() in /lib/libPW.a, un-comment the following line: ! CLIB= -lmalloc -lPW # 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 --- 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) $(INCLUDES) $< -lg -lc $$COLLECT_LIBS collect2: collect2.c config.h $(CC) -o collect2 collect2.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) -lc --- 286,292 ---- else \ COLLECT_OPTIONS=''; \ fi; \ ! $(CC) -o collect $(PROFILE) $(COLLECT_OPTIONS) $(CFLAGS) $(INCLUDES) collect.c -lld collect2: collect2.c config.h $(CC) -o collect2 collect2.c $(PROFILE) $$COLLECT_OPTIONS $(CFLAGS) $(INCLUDES) -lc diff -r -c g++-1.37.1/collect.c g++-1.37.1.aux/collect.c *** g++-1.37.1/collect.c Wed Nov 22 22:29:14 1989 --- g++-1.37.1.aux/collect.c Fri Mar 16 14:36:38 1990 *************** *** 71,76 **** --- 71,81 ---- #define NO_UNDERSCORES 1 #endif + #ifdef AUX + #define ASM_INT_OP "long " + #define NO_UNDERSCORES 1 + #endif + #ifndef ASM_OUTPUT_INT_CONST #define ASM_OUTPUT_INT_CONST(FILE,VALUE) \ fprintf(FILE,"\t%s %d\n", ASM_INT_OP, VALUE) *************** *** 115,121 **** # ifndef NO_DOLLAR_IN_LABEL # define CTOR_DTOR_MARKER_NAME "_GLOBAL_$" # else ! # define CTOR_DTOR_MARKER_NAME "_GLOBAL_." # endif # define CTOR_DTOR_MARKER_LENGTH 9 # define CTOR_DTOR_MARKER_OFFSET 0 --- 120,130 ---- # ifndef NO_DOLLAR_IN_LABEL # define CTOR_DTOR_MARKER_NAME "_GLOBAL_$" # else ! # ifndef NO_DOT_IN_LABEL ! # define CTOR_DTOR_MARKER_NAME "_GLOBAL_." ! # else ! # define CTOR_DTOR_MARKER_NAME "_GLOBAL_A" ! # endif # endif # define CTOR_DTOR_MARKER_LENGTH 9 # define CTOR_DTOR_MARKER_OFFSET 0 *************** *** 125,131 **** # ifndef NO_DOLLAR_IN_LABEL # define CTOR_DTOR_MARKER_NAME "__GLOBAL_$" # else ! # define CTOR_DTOR_MARKER_NAME "__GLOBAL_." # endif # define CTOR_DTOR_MARKER_LENGTH 10 # define CTOR_DTOR_MARKER_OFFSET 1 --- 134,144 ---- # ifndef NO_DOLLAR_IN_LABEL # define CTOR_DTOR_MARKER_NAME "__GLOBAL_$" # else ! # ifndef NO_DOT_IN_LABEL ! # define CTOR_DTOR_MARKER_NAME "__GLOBAL_." ! # else ! # define CTOR_DTOR_MARKER_NAME "__GLOBAL_A" ! # endif # endif # define CTOR_DTOR_MARKER_LENGTH 10 # define CTOR_DTOR_MARKER_OFFSET 1 *************** *** 396,401 **** --- 409,418 ---- do { if ((ldptr = ldopen(filename, ldptr)) != NULL ) { + #ifdef macII + #define ISCOFF(X) (X == M68TVMAGIC || X == M68MAGIC || \ + X == MC68TVMAGIC || X == MC68MAGIC || X == M68NSMAGIC) + #endif if (!ISCOFF( HEADER(ldptr).f_magic ) ) { return BAD_MAGIC; } *************** *** 585,591 **** --- 602,612 ---- char *p = strtab+strindex; #endif /* hp9000s300 */ + #ifndef CTOR_DTOR_MARKER_NAME if (! strncmp ("__GLOBAL_$", p, 10)) + #else + if (! strncmp (CTOR_DTOR_MARKER_NAME, p, CTOR_DTOR_MARKER_LENGTH)) + #endif add_ctor_dtor_elem(p); } } diff -r -c g++-1.37.1/cplus-dem.c g++-1.37.1.aux/cplus-dem.c *** g++-1.37.1/cplus-dem.c Fri Feb 16 22:40:07 1990 --- g++-1.37.1.aux/cplus-dem.c Wed Mar 14 14:51:50 1990 *************** *** 43,57 **** realloc except that they generate a fatal error if there is no available memory. */ ! /* #define nounderscore 1 /* define this is names don't start with _ */ #include <stdio.h> - #include <string.h> #include <ctype.h> #ifdef USG #include <memory.h> #else #define memcpy(s1, s2, n) bcopy ((s2), (s1), (n)) #define memcmp(s1, s2, n) bcmp ((s2), (s1), (n)) #define strchr index --- 43,58 ---- realloc except that they generate a fatal error if there is no available memory. */ ! #define nounderscore 1 /* define this is names don't start with _ */ #include <stdio.h> #include <ctype.h> #ifdef USG #include <memory.h> + #include <string.h> #else + #include <strings.h> #define memcpy(s1, s2, n) bcopy ((s2), (s1), (n)) #define memcmp(s1, s2, n) bcmp ((s2), (s1), (n)) #define strchr index *************** *** 148,153 **** --- 149,155 ---- static int do_arg (const char **type, string *result); static int do_args (const char **type, string *decl); static void munge_function_name (string *name); + static void remember_type (const char *type, int len); #else static void string_need (); static void string_delete (); *************** *** 166,171 **** --- 168,174 ---- static int do_arg (); static int do_args (); static void munge_function_name (); + static void remember_type (); #endif char * *************** *** 178,184 **** int constructor = 0; int const_flag = 0; int i; ! const char *p, *premangle; if (type == NULL || *type == '\0') return NULL; --- 181,190 ---- int constructor = 0; int const_flag = 0; int i; ! const char *p; ! #ifndef LONGERNAMES ! const char *premangle; ! #endif if (type == NULL || *type == '\0') return NULL; *************** *** 242,248 **** --- 248,256 ---- } p += 2; + #ifndef LONGERNAMES premangle = p; + #endif switch (*p) { case 'C': *************** *** 289,298 **** string_prepend (&decl, "::"); string_prependn (&decl, p, n); } - #ifndef LONGERNAMES - p = premangle; - #else p += n; #endif success = do_args (&p, &decl); if (const_flag) --- 297,305 ---- string_prepend (&decl, "::"); string_prependn (&decl, p, n); } p += n; + #ifndef LONGERNAMES + remember_type (premangle, p - premangle); #endif success = do_args (&p, &decl); if (const_flag) *************** *** 662,676 **** const char **type; string *result; { ! char *tem; ! int len; ! const char *start; ! const char *end; - start = *type; if (!do_type (type, result)) return 0; ! end = *type; if (ntypes >= typevec_size) { if (typevec_size == 0) --- 669,689 ---- const char **type; string *result; { ! const char *start = *type; if (!do_type (type, result)) return 0; ! remember_type (start, *type - start); ! return 1; ! } ! ! static void ! remember_type (start, len) ! const char *start; ! int len; ! { ! char *tem; ! if (ntypes >= typevec_size) { if (typevec_size == 0) *************** *** 684,695 **** typevec = (char **) xrealloc ((char *)typevec, sizeof (char*)*typevec_size); } } - len = end - start; tem = (char *) xmalloc (len + 1); memcpy (tem, start, len); tem[len] = '\0'; typevec[ntypes++] = tem; - return 1; } /* `decl' must be already initialised, usually non-empty; --- 697,706 ---- *************** *** 702,714 **** { string arg; int need_comma = 0; - int dont_want_first; - - #ifndef LONGERNAMES - dont_want_first = 1; - #else - dont_want_first = 0; - #endif string_append (decl, "("); --- 713,718 ---- *************** *** 739,752 **** string_append (decl, ", "); if (!do_arg (type, &arg)) return 0; ! if (dont_want_first) ! dont_want_first = 0; ! else ! { ! string_appends (decl, &arg); ! need_comma = 1; ! } string_delete (&arg); } } --- 743,751 ---- string_append (decl, ", "); if (!do_arg (type, &arg)) return 0; ! string_appends (decl, &arg); string_delete (&arg); + need_comma = 1; } } diff -r -c g++-1.37.1/cplus-lex.c g++-1.37.1.aux/cplus-lex.c *** g++-1.37.1/cplus-lex.c Thu Feb 22 07:51:38 1990 --- g++-1.37.1.aux/cplus-lex.c Mon Mar 12 15:18:29 1990 *************** *** 1125,1154 **** t = pending_inlines; pending_inlines = pending_inlines->next; finput = finput2; ! #if defined(i386) && !defined(sequent) && !defined(sun386) ! finput2->_ptr = finput2->_base = t->buf; ! _bufend(finput2) = t->buf + t->len; ! finput2->_flag = _IOFBF | _IOREAD; ! finput2->_cnt = t->len - 1; ! #else ! #ifndef hp9000s300 ! #ifdef USG_STDIO setvbuf(finput2,t->buf,_IOFBF,t->len); finput2->_cnt = t->len-1; #else ! #ifdef VMS ! setvbuf(finput2,t->buf,_IOFBF,t->len); ! (*finput2)->_cnt = t->len-1; #else setbuffer (finput2, t->buf, t->len); finput2->_cnt = finput2->_bufsiz - 1; - #endif /* VMS */ - #endif /* USG_STDIO */ - #else - setvbuf(finput2,t->buf,_IOFBF,t->len); - finput2->_cnt = t->len-1; #endif #endif lineno = t->lineno; input_filename = t->filename; yychar = PRE_PARSED_FUNCTION_DECL; --- 1125,1153 ---- t = pending_inlines; pending_inlines = pending_inlines->next; finput = finput2; ! ! #if defined(hp9000s300) ! /* The hp9000 has a working setvbuf() routine. */ setvbuf(finput2,t->buf,_IOFBF,t->len); finput2->_cnt = t->len-1; #else ! #if defined(USG) || defined(DGUX) || defined(macII) ! /* The standard SystemV code has a broken version of the setvbuf() ! routine. IF you try to setvbuf to a buffer which is shorter ! than 8 bytes, then the standard USG setvbuf() will ignore the ! request and malloc its own buffer. This totally screws up things ! for g++, so don't use setvbuf() on USG systems. */ ! finput2->_ptr = finput2->_base = (unsigned char *) t->buf; ! _bufend(finput2) = (unsigned char *) t->buf + t->len; ! finput2->_flag = _IOFBF | _IOREAD; ! finput2->_cnt = t->len - 1; #else + /* Typical BSD systems can use setbuffer. */ setbuffer (finput2, t->buf, t->len); finput2->_cnt = finput2->_bufsiz - 1; #endif #endif + lineno = t->lineno; input_filename = t->filename; yychar = PRE_PARSED_FUNCTION_DECL; *************** *** 2283,2310 **** /* The buffer we used will be freed at the end of this function. */ pending_inlines = pending_inlines->next; ! #if defined(i386) && !defined(sequent) && !defined(sun386) ! finput2->_ptr = finput2->_base = t->buf; ! _bufend(finput2) = t->buf + t->len; ! finput2->_flag = _IOFBF | _IOREAD; ! finput2->_cnt = t->len - 1; ! #else ! #ifndef hp9000s300 ! #ifdef USG_STDIO ! setvbuf(finput2,t->buf,_IOFBF,t->len); ! finput2->_cnt = t->len-1; ! #else ! #ifdef VMS ! setvbuf(finput2,t->buf,_IOFBF,t->len); ! (*finput2)->_cnt = t->len-1; #else ! setbuffer (finput2, t->buf, t->len); ! finput2->_cnt = finput2->_bufsiz - 1; ! #endif /* VMS */ ! #endif /* USG_STDIO */ #else ! setvbuf(finput2,t->buf,_IOFBF,t->len); ! finput2->_cnt = t->len-1; #endif #endif } --- 2282,2303 ---- /* The buffer we used will be freed at the end of this function. */ pending_inlines = pending_inlines->next; ! #if defined(hp9000s300) ! /* The hp900s300 has a working setvbuf() routine. */ ! setvbuf(finput2,t->buf,_IOFBF,t->len); ! finput2->_cnt = t->len-1; #else ! #if defined(USG) || defined (DGUX) || defined(macII) ! /* The standard USG setvbuf() routine screws up if the buffer ! you give it is smaller that 8 bytes, so don't use it. */ ! finput2->_ptr = finput2->_base = (unsigned char *) t->buf; ! _bufend(finput2) = (unsigned char *) t->buf + t->len; ! finput2->_flag = _IOFBF | _IOREAD; ! finput2->_cnt = t->len - 1; #else ! /* The typical BSD system can use setbuffer */ ! setbuffer (finput2, t->buf, t->len); ! finput2->_cnt = finput2->_bufsiz - 1; #endif #endif } diff -r -c g++-1.37.1/cplus-tree.h g++-1.37.1.aux/cplus-tree.h *** g++-1.37.1/cplus-tree.h Mon Feb 26 07:55:38 1990 --- g++-1.37.1.aux/cplus-tree.h Fri Mar 16 10:47:17 1990 *************** *** 1147,1153 **** /* Define NO_DOLLAR_IN_LABEL in your favorite tm file if your assembler doesn't allow '$' in symbol names. */ ! #ifndef NO_DOLLAR_IN_LABEL #define JOINER '$' --- 1147,1153 ---- /* Define NO_DOLLAR_IN_LABEL in your favorite tm file if your assembler doesn't allow '$' in symbol names. */ ! #if !defined(NO_DOLLAR_IN_LABEL) #define JOINER '$' *************** *** 1179,1186 **** #define FILE_FUNCTION_FORMAT "_GLOBAL_$D$%s" #define ANON_AGGRNAME_FORMAT "$_%d" ! #else /* NO_DOLLAR_IN_LABEL */ #define JOINER '.' #define THIS_NAME ".this" --- 1179,1188 ---- #define FILE_FUNCTION_FORMAT "_GLOBAL_$D$%s" #define ANON_AGGRNAME_FORMAT "$_%d" ! #endif + #if defined(NO_DOLLAR_IN_LABEL) && !defined(NO_DOT_IN_LABEL) + #define JOINER '.' #define THIS_NAME ".this" *************** *** 1212,1218 **** #define ANON_AGGRNAME_FORMAT "._%d" ! #endif /* NO_DOLLAR_IN_LABEL */ #define DESTRUCTOR_NAME_FORMAT "~%s" #define WRAPPER_NAME_FORMAT "()%s" --- 1214,1258 ---- #define ANON_AGGRNAME_FORMAT "._%d" ! #endif ! ! #if defined(NO_DOT_IN_LABEL) ! ! /* If we don't have $ or ., we probably have a very limited assembler. ! Thus, use A as the joiner (I _hope_ every assembler will have it) and ! use '_' to make AGGR hard to accidentally create */ ! ! #define JOINER 'A' ! ! #define THIS_NAME "Athis" ! #define VPTR_NAME "Avptr" ! #define THROW_NAME "Aeh_throw" ! #define DESTRUCTOR_DECL_FORMAT "_A_%s" ! #define WRAPPER_DECL_FORMAT "__WA%s" ! #define WRAPPER_PRED_DECL_FORMAT "__PA%s" ! #define ANTI_WRAPPER_DECL_FORMAT "__wA%s" ! #define IN_CHARGE_NAME "__inAcharge__" ! #define AUTO_VTABLE_NAME "__vtblAme__" ! #define AUTO_TEMP_NAME "_Atmp_" ! #define AUTO_TEMP_FORMAT "_Atmp_%d" ! #define OPERATOR_ASSIGN_FORMAT "opAassign_%s" ! #define OPERATOR_MODIFY_FORMAT "opAmodify" ! #define OPERATOR_METHOD_FORMAT "opAmethod_call" ! #define OPERATOR_NEW_FORMAT "opAnew" ! #define OPERATOR_DELETE_FORMAT "opAdelete" ! #define OPERATOR_FORMAT "opA%s" ! #define VTBL_PTR_TYPE "Avtbl_ptr_type" ! #define VTABLE_NAME_FORMAT "_vtA%s" ! #define VFIELD_NAME "_vptrA" ! #define VFIELD_NAME_FORMAT "_vptrA%s" ! #define VBASE_NAME "_vbA" ! #define VBASE_NAME_FORMAT "_vbA%s" ! #define STATIC_NAME_FORMAT "_%sA%s" ! #define OPERATOR_TYPENAME_FORMAT "typeA" ! #define FILE_FUNCTION_FORMAT "_GLOBAL_ADA%s" ! #define ANON_AGGRNAME_FORMAT "A_%d" ! ! #endif /* NO_DOT_IN_LABEL */ #define DESTRUCTOR_NAME_FORMAT "~%s" #define WRAPPER_NAME_FORMAT "()%s" *************** *** 1232,1239 **** && IDENTIFIER_POINTER (ID_NODE)[1] == 't') #define VPTR_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[1] == 'v') - #define DESTRUCTOR_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == JOINER) #define WRAPPER_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == '_' \ && IDENTIFIER_POINTER (ID_NODE)[2] == 'W' \ && IDENTIFIER_POINTER (ID_NODE)[3] == JOINER) --- 1272,1279 ---- && IDENTIFIER_POINTER (ID_NODE)[1] == 't') #define VPTR_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[1] == 'v') + #define DESTRUCTOR_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == JOINER) #define WRAPPER_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == '_' \ && IDENTIFIER_POINTER (ID_NODE)[2] == 'W' \ && IDENTIFIER_POINTER (ID_NODE)[3] == JOINER) *************** *** 1258,1264 **** #define VBASE_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[3] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[2] == 'b'\ && IDENTIFIER_POINTER (ID_NODE)[1] == 'v') - #define OPERATOR_TYPENAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[4] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[3] \ && IDENTIFIER_POINTER (ID_NODE)[2] \ --- 1298,1303 ---- *************** *** 1270,1276 **** --- 1309,1321 ---- /* For anonymous aggregate types, we need some sort of name to hold on to. In practice, this should not appear, but it should not be harmful if it does. */ + #if defined(NO_DOLLAR_IN_LABEL) && defined(NO_DOT_IN_LABEL) + #define ANON_AGGRNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == '_'\ + && IDENTIFIER_POINTER (ID_NODE)[0] == JOINER) + #else + #include "not.here" #define ANON_AGGRNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == JOINER) + #endif #define ANON_PARMNAME_FORMAT "_%d" #define ANON_PARMNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == '_' \ diff -r -c g++-1.37.1/toplev.c g++-1.37.1.aux/toplev.c *** g++-1.37.1/toplev.c Thu Feb 8 17:32:34 1990 --- g++-1.37.1.aux/toplev.c Mon Mar 12 15:14:08 1990 *************** *** 32,37 **** --- 32,41 ---- #include <sys/stat.h> #include <sys/file.h> + #ifdef macII + #define NO_UNISTD_H + #endif + #ifdef NO_UNISTD_H #define SEEK_SET L_SET #define SEEK_CUR L_INCR *************** *** 41,47 **** --- 45,55 ---- #endif #ifdef USG + #ifdef macII + #include <fcntl.h> + #else #include <sys/fcntl.h> + #endif #undef FLOAT #include <sys/param.h> /* This is for hpux. It is a real screw. They should change hpux. */ *** g++-1.37.1/config.g++ Sat Nov 4 23:26:35 1989 --- g++-1.37.1.aux/config.g++ Mon Mar 19 14:34:47 1990 *************** *** 193,198 **** --- 193,202 ---- aux_output=out-hp9k8.c machine_type=hp9k8 ;; + aux) # Mac II running A/UX + cpu_type=m68k + configuration_file=xm-aux.h + ;; isi68) cpu_type=m68k ;; -------------------------------------------------------------------------- John L. Coolidge Internet:coolidge@cs.uiuc.edu UUCP:uiucdcs!coolidge Of course I don't speak for the U of I (or anyone else except myself) Copyright 1990 John L. Coolidge. Copying allowed if (and only if) attributed. You may redistribute this article if and only if your recipients may as well.