G++ 1.37.1 patches for A/UX

John Coolidge coolidge at casca.cs.uiuc.edu
Tue Mar 20 07:20:26 AEST 1990


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 at 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 at 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 at 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.



More information about the Comp.unix.aux mailing list