This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

A new libg++ addon for egcs


> I did have a small problem with your libg++ egcs add-on
> (libg++-2.8.0b6.3)
> 
> This piece of code in src/configure.in picks up an
> absolute path for regex.h . configure later prepends $srcdir to it.
> 

Did you read README.libg++?

> 
> I also needed this: in gperf/src
> 

Here is the patch for libg++-2.8.0b6.3 to bring it to 2.8.0b6.4. 
libg++-2.8.0b6.4 is at ftp://ftp.yggdrasil.com/private/hjl.



H.J.
---
diff --new-file -ur egcs.old/README.libg++ egcs.new/README.libg++
--- egcs.old/README.libg++	Wed Nov  5 09:01:41 1997
+++ egcs.new/README.libg++	Wed Dec 10 10:44:29 1997
@@ -1,9 +1,10 @@
-This libg++ and librx are tested with egcs 971023 on linux/x86/libc 5,
-linux/x86/glibc 2.1 and linux/alpha/glibc 2.0.5c. Just put libg++ and
-librx under the egcs source directory, i.e.,
+This libg++ and librx are tested with egcs 1.0 on linux/x86/libc 5,
+linux/x86/glibc 2.0.5c, linux/x86/glibc 2.1 and linux/alpha/glibc
+2.0.5c. Just put libg++ and librx under the egcs source directory,
+i.e.,
 
 # cd src/egcs
-# gzip -dc xxxxxx/libg++-2.8.0b6.3.tar.gz | tar xf -
+# gzip -dc xxxxxx/libg++-2.8.0b6.4.tar.gz | tar xf -
 
 You also need to check configure.in and configure to see if the
 patch enclosed here is already applied. If not, please do
@@ -13,15 +14,17 @@
 Then you can configure/build/check/install egcs normally. Now it
 will include libg++.
 
+libg++-2.8.0b6.3-2.8.0b6.4.diff is the patch for libg++ 2.8.0b6.3.
+
 
 H.J. Lu
 hjl@gnu.org
-11/04/1997
+12/10/1997
 --- 
 Sun Sep  7 14:27:56 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
 	
-	* configure.in (alpha-*-linux*): Treat alpha-*-linux* as
-	alpha-*-linux* and alpha-*-*.
+	* configure.in (alpha*-*-linux*): Treat alpha*-*-linux* as
+	alpha*-*-linux* and alpha*-*-*.
 
 Mon Aug 25 17:31:49 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
 
@@ -39,7 +42,7 @@
    alpha*-*-*vms*)
      noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
      ;;
-+  alpha-*-linux*)
++  alpha*-*-linux*)
 +    # newlib is not 64 bit ready
 +    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
 +    # linux has rx in libc
diff --new-file -ur egcs.old/libg++/etc/benchmarks/foo.cc egcs.new/libg++/etc/benchmarks/foo.cc
--- egcs.old/libg++/etc/benchmarks/foo.cc	Thu Sep 25 13:48:07 1997
+++ egcs.new/libg++/etc/benchmarks/foo.cc	Wed Dec 31 16:00:00 1969
@@ -1,401 +0,0 @@
-#ifdef BUILTIN
-typedef int Int;
-#else
-
-#ifdef CALL
-#define INLINE
-#else
-#define INLINE inline
-#endif
-
-#ifndef VIRT
-#define VIRTUAL
-#else
-#define VIRTUAL virtual
-#endif
-
-#ifdef BYVAL
-#define REF 
-#else
-#define REF &
-#endif
-
-#ifndef  CONVERT
-#define EXPLICIT
-#endif
-
-#ifndef RETREF
-#define IntR void
-#define ReturnIntR 
-#else
-#define IntR Int&
-#define ReturnIntr  return *this
-#endif
-
-class Int 
-{
-protected:
-  int          rep;
-#ifdef FAKEVPTR
-  void*        fake_vptr;
-#endif
-public: 
-  INLINE       Int ();
-  INLINE       Int (const int  b);
-  INLINE       Int (const Int& b);
-  INLINE VIRTUAL      ~Int();
-
-  INLINE       operator int() const;
-
-  INLINE VIRTUAL int   val() const;
-
-  INLINE VIRTUAL IntR operator  = (const int);
-  INLINE VIRTUAL IntR operator  = (const Int&);
-
-  INLINE VIRTUAL IntR negate();
-  INLINE VIRTUAL IntR complement();
-  INLINE VIRTUAL IntR operator ++ ();
-  INLINE VIRTUAL IntR operator -- ();
-
-  INLINE VIRTUAL IntR operator += (const Int REF );
-  INLINE VIRTUAL IntR operator -= (const Int REF );
-  INLINE VIRTUAL IntR operator *= (const Int REF );
-  INLINE VIRTUAL IntR operator /= (const Int REF );
-  INLINE VIRTUAL IntR operator %= (const Int REF );
-  INLINE VIRTUAL IntR operator |= (const Int REF );
-  INLINE VIRTUAL IntR operator &= (const Int REF );
-  INLINE VIRTUAL IntR operator ^= (const Int REF );
-  INLINE VIRTUAL IntR operator <<=(const Int REF );
-  INLINE VIRTUAL IntR operator >>=(const Int REF );
-
-#ifdef EXPLICIT
-  INLINE VIRTUAL IntR operator += (const int);
-  INLINE VIRTUAL IntR operator -= (const int);
-  INLINE VIRTUAL IntR operator *= (const int);
-  INLINE VIRTUAL IntR operator /= (const int);
-  INLINE VIRTUAL IntR operator %= (const int);
-  INLINE VIRTUAL IntR operator |= (const int);
-  INLINE VIRTUAL IntR operator &= (const int);
-  INLINE VIRTUAL IntR operator ^= (const int);
-  INLINE VIRTUAL IntR operator <<=(const int);
-  INLINE VIRTUAL IntR operator >>=(const int);
-
-#endif
-};
-
-INLINE int  Int::val() const { return rep; }
-INLINE      Int::operator int() const { return val(); }
-
-INLINE      Int::Int () :rep(0) {}
-INLINE      Int::Int (const int  b) :rep(b) {}
-INLINE      Int::Int (const Int& b) :rep(b.Int::val()) {}
-INLINE      Int::~Int() {}
-
-INLINE IntR Int::operator  = (const int  b) 
-{ rep = b; ReturnIntR; }
-INLINE IntR Int::operator  = (const Int&  b) 
-{ rep = b.Int::val(); ReturnIntR; }
- 
-INLINE IntR Int::complement()
-{ rep = ~rep; ReturnIntR; }
-INLINE IntR Int::negate()
-{ rep = -rep; ReturnIntR; }
-INLINE IntR Int::operator ++ ()        
-{ ++rep; ReturnIntR; }
-INLINE IntR Int::operator -- ()        
-{ --rep; ReturnIntR; }
-
-INLINE IntR Int::operator += (const Int REF  b) 
-{ rep += b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator -= (const Int REF  b) 
-{ rep -= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator *= (const Int REF  b) 
-{ rep *= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator /= (const Int REF  b) 
-{ rep /= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator %= (const Int REF  b) 
-{ rep %= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator |= (const Int REF  b) 
-{ rep |= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator &= (const Int REF  b) 
-{ rep &= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator ^= (const Int REF  b) 
-{ rep ^= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator <<=(const Int REF  b) 
-{ rep <<= b.Int::val(); ReturnIntR; }
-INLINE IntR Int::operator >>=(const Int REF  b) 
-{ rep >>= b.Int::val(); ReturnIntR; }
-
-#ifdef EXPLICIT
-
-INLINE IntR Int::operator += (const int b) 
-{ rep += b; ReturnIntR; }
-INLINE IntR Int::operator -= (const int b) 
-{ rep -= b; ReturnIntR; }
-INLINE IntR Int::operator *= (const int b) 
-{ rep *= b; ReturnIntR; }
-INLINE IntR Int::operator /= (const int b) 
-{ rep /= b; ReturnIntR; }
-INLINE IntR Int::operator %= (const int b) 
-{ rep %= b; ReturnIntR; }
-INLINE IntR Int::operator |= (const int b) 
-{ rep |= b; ReturnIntR; }
-INLINE IntR Int::operator &= (const int b) 
-{ rep &= b; ReturnIntR; }
-INLINE IntR Int::operator ^= (const int b) 
-{ rep ^= b; ReturnIntR; }
-INLINE IntR Int::operator <<=(const int b) 
-{ rep <<= b; ReturnIntR; }
-INLINE IntR Int::operator >>=(const int b) 
-{ rep >>= b; ReturnIntR; }
-
-
-INLINE int& operator += (int& a,  const Int REF  b) 
-{ a += b.Int::val(); return a; }
-INLINE int& operator -= (int& a,  const Int REF  b) 
-{ a -= b.Int::val(); return a;}
-INLINE int& operator *= (int& a,  const Int REF  b) 
-{ a *= b.Int::val(); return a;}
-INLINE int& operator /= (int& a,  const Int REF  b) 
-{ a /= b.Int::val(); return a;}
-INLINE int& operator %= (int& a,  const Int REF  b) 
-{ a %= b.Int::val(); return a;}
-INLINE int& operator |= (int& a,  const Int REF  b) 
-{ a |= b.Int::val(); return a;}
-INLINE int& operator &= (int& a,  const Int REF  b) 
-{ a &= b.Int::val(); return a;}
-INLINE int& operator ^= (int& a,  const Int REF  b) 
-{ a ^= b.Int::val(); return a;}
-INLINE int& operator <<=(int& a,  const Int REF  b) 
-{ a <<= b.Int::val(); return a;}
-INLINE int& operator >>=(int& a,  const Int REF  b) 
-{ a >>= b.Int::val(); return a;}
-
-#endif
-
-#ifdef _G_NO_NRV
-
-INLINE Int  operator -  (const Int REF  a) 
-{ Int r(a); r.negate(); return r; }
-INLINE Int  operator ~  (const Int REF  a) 
-{ Int r(a); r.complement(); return r; }
-
-INLINE Int  operator +  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r += b.Int::val(); return r; }
-INLINE Int  operator -  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r -= b.Int::val(); return r; }
-INLINE Int  operator *  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r *= b.Int::val(); return r; }
-INLINE Int  operator /  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r /= b.Int::val(); return r; }
-INLINE Int  operator %  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r %= b.Int::val(); return r; }
-INLINE Int  operator << (const Int REF  a, const Int REF  b) 
-{ Int r(a); r <<= b.Int::val(); return r; }
-INLINE Int  operator >> (const Int REF  a, const Int REF  b) 
-{ Int r(a); r >>= b.Int::val(); return r; }
-INLINE Int  operator &  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r &= b.Int::val(); return r; }
-INLINE Int  operator |  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r |= b.Int::val(); return r; }
-INLINE Int  operator ^  (const Int REF  a, const Int REF  b) 
-{ Int r(a); r ^= b.Int::val(); return r; }
-
-INLINE Int  operator +  (const Int REF  a, const int b) 
-{ Int r(a); r += b; return r; }
-INLINE Int  operator -  (const Int REF  a, const int b) 
-{ Int r(a); r -= b; return r; }
-INLINE Int  operator *  (const Int REF  a, const int b) 
-{ Int r(a); r *= b; return r; }
-INLINE Int  operator /  (const Int REF  a, const int b) 
-{ Int r(a); r /= b; return r; }
-INLINE Int  operator %  (const Int REF  a, const int b) 
-{ Int r(a); r %= b; return r; }
-INLINE Int  operator << (const Int REF  a, const int b) 
-{ Int r(a); r <<= b; return r; }
-INLINE Int  operator >> (const Int REF  a, const int b) 
-{ Int r(a); r >>= b; return r; }
-INLINE Int  operator &  (const Int REF  a, const int b) 
-{ Int r(a); r &= b; return r; }
-INLINE Int  operator |  (const Int REF  a, const int b) 
-{ Int r(a); r |= b; return r; }
-INLINE Int  operator ^  (const Int REF  a, const int b) 
-{ Int r(a); r ^= b; return r; }
-
-INLINE Int  operator +  (const int a, const Int REF  b) 
-{ Int r(a); r += b.Int::val(); return r; }
-INLINE Int  operator -  (const int a, const Int REF  b) 
-{ Int r(a); r -= b.Int::val(); return r; }
-INLINE Int  operator *  (const int a, const Int REF  b) 
-{ Int r(a); r *= b.Int::val(); return r; }
-INLINE Int  operator /  (const int a, const Int REF  b) 
-{ Int r(a); r /= b.Int::val(); return r; }
-INLINE Int  operator %  (const int a, const Int REF  b) 
-{ Int r(a); r %= b.Int::val(); return r; }
-INLINE Int  operator << (const int a, const Int REF  b) 
-{ Int r(a); r <<= b.Int::val(); return r; }
-INLINE Int  operator >> (const int a, const Int REF  b) 
-{ Int r(a); r >>= b.Int::val(); return r; }
-INLINE Int  operator &  (const int a, const Int REF  b) 
-{ Int r(a); r &= b.Int::val(); return r; }
-INLINE Int  operator |  (const int a, const Int REF  b) 
-{ Int r(a); r |= b.Int::val(); return r; }
-INLINE Int  operator ^  (const int a, const Int REF  b) 
-{ Int r(a); r ^= b.Int::val(); return r; }
-
-#else
-
-INLINE Int  operator -  (const Int REF  a) return r(a)
-{ r.negate();  }
-INLINE Int  operator ~  (const Int REF  a) return r(a)
-{ r.complement();  }
-
-INLINE Int  operator +  (const Int REF  a, const Int REF  b) return r(a)
-{ r += b.Int::val();  }
-INLINE Int  operator -  (const Int REF  a, const Int REF  b) return r(a)
-{ r -= b.Int::val();  }
-INLINE Int  operator *  (const Int REF  a, const Int REF  b) return r(a)
-{ r *= b.Int::val();  }
-INLINE Int  operator /  (const Int REF  a, const Int REF  b) return r(a)
-{ r /= b.Int::val();  }
-INLINE Int  operator %  (const Int REF  a, const Int REF  b) return r(a)
-{ r %= b.Int::val();  }
-INLINE Int  operator << (const Int REF  a, const Int REF  b) return r(a)
-{ r <<= b.Int::val();  }
-INLINE Int  operator >> (const Int REF  a, const Int REF  b) return r(a)
-{ r >>= b.Int::val();  }
-INLINE Int  operator &  (const Int REF  a, const Int REF  b) return r(a)
-{ r &= b.Int::val();  }
-INLINE Int  operator |  (const Int REF  a, const Int REF  b) return r(a)
-{ r |= b.Int::val();  }
-INLINE Int  operator ^  (const Int REF  a, const Int REF  b) return r(a)
-{ r ^= b.Int::val();  }
-
-INLINE Int  operator +  (const Int REF  a, const int b) return r(a)
-{ r += b;  }
-INLINE Int  operator -  (const Int REF  a, const int b) return r(a)
-{ r -= b;  }
-INLINE Int  operator *  (const Int REF  a, const int b) return r(a)
-{ r *= b;  }
-INLINE Int  operator /  (const Int REF  a, const int b) return r(a)
-{ r /= b;  }
-INLINE Int  operator %  (const Int REF  a, const int b) return r(a)
-{ r %= b;  }
-INLINE Int  operator << (const Int REF  a, const int b) return r(a)
-{ r <<= b;  }
-INLINE Int  operator >> (const Int REF  a, const int b) return r(a)
-{ r >>= b;  }
-INLINE Int  operator &  (const Int REF  a, const int b) return r(a)
-{ r &= b;  }
-INLINE Int  operator |  (const Int REF  a, const int b) return r(a)
-{ r |= b;  }
-INLINE Int  operator ^  (const Int REF  a, const int b) return r(a)
-{ r ^= b;  }
-
-INLINE Int  operator +  (const int a, const Int REF  b) return r(a)
-{ r += b.Int::val();  }
-INLINE Int  operator -  (const int a, const Int REF  b) return r(a)
-{ r -= b.Int::val();  }
-INLINE Int  operator *  (const int a, const Int REF  b) return r(a)
-{ r *= b.Int::val();  }
-INLINE Int  operator /  (const int a, const Int REF  b) return r(a)
-{ r /= b.Int::val();  }
-INLINE Int  operator %  (const int a, const Int REF  b) return r(a)
-{ r %= b.Int::val();  }
-INLINE Int  operator << (const int a, const Int REF  b) return r(a)
-{ r <<= b.Int::val();  }
-INLINE Int  operator >> (const int a, const Int REF  b) return r(a)
-{ r >>= b.Int::val();  }
-INLINE Int  operator &  (const int a, const Int REF  b) return r(a)
-{ r &= b.Int::val();  }
-INLINE Int  operator |  (const int a, const Int REF  b) return r(a)
-{ r |= b.Int::val();  }
-INLINE Int  operator ^  (const int a, const Int REF  b) return r(a)
-{ r ^= b.Int::val();  }
-
-#endif
-
-INLINE int  operator !  (const Int REF  a) { return !a.Int::val(); }
-
-INLINE int  operator == (const Int REF  a, const Int REF  b) 
-{ return a.Int::val() == b.Int::val(); }
-INLINE int  operator != (const Int REF  a, const Int REF  b) 
-{ return a.Int::val() != b.Int::val(); }
-INLINE int  operator <  (const Int REF  a, const Int REF  b) 
-{ return a.Int::val() <  b.Int::val(); }
-INLINE int  operator <= (const Int REF  a, const Int REF  b) 
-{ return a.Int::val() <= b.Int::val(); }
-INLINE int  operator >  (const Int REF  a, const Int REF  b) 
-{ return a.Int::val() >  b.Int::val(); }
-INLINE int  operator >= (const Int REF  a, const Int REF  b) 
-{ return a.Int::val() >= b.Int::val(); }
-
-INLINE int  operator == (const Int REF  a, const int b) 
-{ return a.Int::val() == b; }
-INLINE int  operator != (const Int REF  a, const int b) 
-{ return a.Int::val() != b; }
-INLINE int  operator <  (const Int REF  a, const int b) 
-{ return a.Int::val() <  b; }
-INLINE int  operator <= (const Int REF  a, const int b) 
-{ return a.Int::val() <= b; }
-INLINE int  operator >  (const Int REF  a, const int b) 
-{ return a.Int::val() >  b; }
-INLINE int  operator >= (const Int REF  a, const int b) 
-{ return a.Int::val() >= b; }
-
-INLINE int  operator == (const int a, const Int REF  b) 
-{ return a == b.Int::val(); }
-INLINE int  operator != (const int a, const Int REF  b) 
-{ return a != b.Int::val(); }
-INLINE int  operator <  (const int a, const Int REF  b) 
-{ return a <  b.Int::val(); }
-INLINE int  operator <= (const int a, const Int REF  b) 
-{ return a <= b.Int::val(); }
-INLINE int  operator >  (const int a, const Int REF  b) 
-{ return a >  b.Int::val(); }
-INLINE int  operator >= (const int a, const Int REF  b) 
-{ return a >= b.Int::val(); }
-
-#endif
-#if 0
-#endif
-
-typedef Int	OneToFifty;
-
-void Proc0();
-void Proc7(OneToFifty IntParI1, OneToFifty IntParI2, OneToFifty *IntParOut);
-
-
-main()
-{
-	Proc0();
-	exit(0);
-}
-
-void Proc0()
-{
-	OneToFifty		IntLoc1;
-	OneToFifty		IntLoc2;
-	OneToFifty		IntLoc3;
-	{
-
-		IntLoc1 = 2;
-		IntLoc2 = 3;
-		while (IntLoc1 < IntLoc2)
-		{
-			IntLoc3 = 5 * IntLoc1 - IntLoc2;
-			Proc7(IntLoc1, IntLoc2, &IntLoc3);
-			++IntLoc1;
-		}
-	}
-
-}
-
-
-void Proc7(OneToFifty IntParI1, OneToFifty IntParI2, OneToFifty *IntParOut)
-{
-	OneToFifty	IntLoc;
-
-	IntLoc = IntParI1 + 2;
-	*IntParOut = IntParI2 + IntLoc;
-}
diff --new-file -ur egcs.old/libg++/gperf/src/key-list.cc egcs.new/libg++/gperf/src/key-list.cc
--- egcs.old/libg++/gperf/src/key-list.cc	Sat Jun 24 14:40:37 1995
+++ egcs.new/libg++/gperf/src/key-list.cc	Mon Nov 10 10:42:57 1997
@@ -164,6 +164,7 @@
    of characters not from REJECT (borrowed from Henry Spencer's
    ANSI string package, when GNU libc comes out I'll replace this...). */
 
+#ifndef strcspn
 inline int
 Key_List::strcspn (const char *s, const char *reject)
 {
@@ -184,6 +185,7 @@
 
   return count;
 }
+#endif
 
 /* Sets up the Return_Type, the Struct_Tag type and the Array_Type
    based upon various user Options. */
diff --new-file -ur egcs.old/libg++/gperf/src/key-list.h egcs.new/libg++/gperf/src/key-list.h
--- egcs.old/libg++/gperf/src/key-list.h	Sat Jun 24 09:45:24 1995
+++ egcs.new/libg++/gperf/src/key-list.h	Mon Nov 10 10:41:41 1997
@@ -52,7 +52,9 @@
   int         total_keys;                            /* Total number of keys, counting duplicates. */
   static int  determined[ALPHA_SIZE];                /* Used in function reorder, below. */
   static int  get_occurrence (List_Node *ptr);
+#ifndef strcspn
   static int  strcspn (const char *s, const char *reject);
+#endif
   static int  already_determined (List_Node *ptr);
   static void set_determined (List_Node *ptr);
   void        output_min_max (void);
diff --new-file -ur egcs.old/libg++/tests/Makefile.sh egcs.new/libg++/tests/Makefile.sh
--- egcs.old/libg++/tests/Makefile.sh	Thu Feb 29 11:40:06 1996
+++ egcs.new/libg++/tests/Makefile.sh	Sun Nov 23 17:32:12 1997
@@ -91,15 +91,17 @@
 
 # Comment this out if your compiler doesn't handle templates:
 CHECK_TEMPLATES=check-templates
-
-tests checktests: clean_tests test_h \
-  check-tObstack check-tString check-tInteger \
+CHECKS=check-tObstack check-tString check-tInteger \
   check-tRational check-tBitSet check-tBitString \
   check-tFix check-tFix16 check-tFix24 check-tGetOpt \
   check-tList check-tPlex check-tLList check-tVec \
   check-tStack check-tQueue check-tDeque check-tPQ \
   check-tSet check-tBag check-tMap $(CHECK_TEMPLATES)
+
+tests checktests: test_h $(CHECKS)
 	./test_h
+
+$(CHECKS): clean_tests
 
 check-templates: check-tiLList
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]