rpms/gcc/devel gcc4-java-rh163099.patch, NONE, 1.1 gcc4-java-urls.patch, NONE, 1.1 gcc4-libjava-ia64-backtrace.patch, NONE, 1.1 gcc4-pr22052.patch, NONE, 1.1 gcc4-vsb-stack.patch, NONE, 1.1 .cvsignore, 1.99, 1.100 gcc4-libstdc++-pr22309.patch, 1.1, 1.2 gcc4-stack-protector.patch, 1.2, 1.3 gcc4.spec, 1.56, 1.57 sources, 1.101, 1.102 gcc4-fortran-forall.patch, 1.1, NONE gcc4-fortran-hollerith.patch, 1.1, NONE gcc4-fortran-legacy.patch, 1.1, NONE gcc4-fortran-logical-integer.patch, 1.1, NONE gcc4-stack-protector-shortsize.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Jul 14 18:50:52 UTC 2005


Author: jakub

Update of /cvs/dist/rpms/gcc/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv22583

Modified Files:
	.cvsignore gcc4-libstdc++-pr22309.patch 
	gcc4-stack-protector.patch gcc4.spec sources 
Added Files:
	gcc4-java-rh163099.patch gcc4-java-urls.patch 
	gcc4-libjava-ia64-backtrace.patch gcc4-pr22052.patch 
	gcc4-vsb-stack.patch 
Removed Files:
	gcc4-fortran-forall.patch gcc4-fortran-hollerith.patch 
	gcc4-fortran-legacy.patch gcc4-fortran-logical-integer.patch 
	gcc4-stack-protector-shortsize.patch 
Log Message:
4.0.1-3


gcc4-java-rh163099.patch:
 jvspec.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)

--- NEW FILE gcc4-java-rh163099.patch ---
2005-07-13  Tom Tromey  <tromey at redhat.com>

	* jvspec.c (lang_specific_driver): Put filelist_filename first on
	command line.

--- gcc/java/jvspec.c 12 Jul 2005 22:35:48 -0000 1.72
+++ gcc/java/jvspec.c 13 Jul 2005 15:21:33 -0000
@@ -458,7 +458,7 @@
       if (filelist_file == NULL)
 	pfatal_with_name (filelist_filename);
       num_args -= java_files_count + class_files_count + zip_files_count;
-      num_args += 2;  /* for the combined arg and "-xjava" */
+      num_args += 3;  /* for the combined arg "-xjava", and "-xnone" */
     }
   /* If we know we don't have to do anything, bail now.  */
 #if 0
@@ -493,11 +493,23 @@
   arglist = xmalloc ((num_args + 1) * sizeof (char *));
   j = 0;
 
-  for (i = 0; i < argc; i++, j++)
+  arglist[j++] = argv[0];
+
+  if (combine_inputs || indirect_files_count > 0)
+    arglist[j++] = "-ffilelist-file";
+
+  if (combine_inputs)
+    {
+      arglist[j++] = "-xjava";
+      arglist[j++] = filelist_filename;
+      arglist[j++] = "-xnone";
+    }
+
+  for (i = 1; i < argc; i++, j++)
     {
       arglist[j] = argv[i];
 
-      if ((args[i] & PARAM_ARG) || i == 0)
+      if ((args[i] & PARAM_ARG))
 	continue;
 
       if ((args[i] & RESOURCE_FILE_ARG) != 0)
@@ -559,15 +571,10 @@
 	}
   }
 
-  if (combine_inputs || indirect_files_count > 0)
-    arglist[j++] = "-ffilelist-file";
-
   if (combine_inputs)
     {
       if (fclose (filelist_file))
 	pfatal_with_name (filelist_filename);
-      arglist[j++] = "-xjava";
-      arglist[j++] = filelist_filename;
     }
 
   /* If we saw no -O or -g option, default to -g1, for javac compatibility. */

gcc4-java-urls.patch:
 gnu/java/net/protocol/file/Connection.java |   51 ++++++++++++++++++++++++++++-
 gnu/java/net/protocol/jar/Connection.java  |   13 +++++--
 java/net/URL.java                          |   12 +++---
 java/net/URLConnection.java                |   17 ++++++---
 4 files changed, 76 insertions(+), 17 deletions(-)

--- NEW FILE gcc4-java-urls.patch ---
2005-07-13  Andrew Haley  <aph at redhat.com>

	* gnu/java/net/protocol/file/Connection.java (unquote): New
	method.
	(connect): Unquote filename.
	gnu/java/net/protocol/jar/Connection.java (getInputStream):
	Likewise.  
	(getJarFile): Likewise.

	* java/net/URLConnection.java (getContentHandler): Guard cast with
	instaceof.

	* java/net/URL.java (URL): If the file part of a spec is absolute,
	ignore the file part of its context.

--- libjava/gnu/java/net/protocol/file/Connection.java	10 Sep 2004 11:06:38 -0000	1.9
+++ libjava/gnu/java/net/protocol/file/Connection.java	13 Jul 2005 15:49:37 -0000
@@ -57,6 +57,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
+import java.net.MalformedURLException;
 
 /**
  * This subclass of java.net.URLConnection models a URLConnection via
@@ -113,6 +114,54 @@
   }
   
   /**
+   * Unquote "%" + hex quotes characters
+   *
+   * @param str The string to unquote or null.
+   *
+   * @return The unquoted string or null if str was null.
+   *
+   * @exception MalformedURLException If the given string contains invalid
+   * escape sequences.
+   *
+   * Sadly the same as URI.unquote, but there's nothing we can do to
+   * make it accessible.
+   *
+   */
+  public static String unquote(String str) throws MalformedURLException
+  {
+    if (str == null)
+      return null;
+    byte[] buf = new byte[str.length()];
+    int pos = 0;
+    for (int i = 0; i < str.length(); i++)
+      {
+	char c = str.charAt(i);
+	if (c > 127)
+	  throw new MalformedURLException(str + " : Invalid character");
+	if (c == '%')
+	  {
+	    if (i + 2 >= str.length())
+	      throw new MalformedURLException(str + " : Invalid quoted character");
+	    int hi = Character.digit(str.charAt(++i), 16);
+	    int lo = Character.digit(str.charAt(++i), 16);
+	    if (lo < 0 || hi < 0)
+	      throw new MalformedURLException(str + " : Invalid quoted character");
+	    buf[pos++] = (byte) (hi * 16 + lo);
+	  }
+	else
+	  buf[pos++] = (byte) c;
+      }
+    try
+      {
+	return new String(buf, 0, pos, "utf-8");
+      }
+    catch (java.io.UnsupportedEncodingException x2)
+      {
+	throw (Error) new InternalError().initCause(x2);
+      }
+  }
+
+  /**
    * "Connects" to the file by opening it.
    */
   public void connect() throws IOException
@@ -122,7 +171,7 @@
       return;
     
     // If not connected, then file needs to be openned.
-    file = new File (getURL().getFile());
+    file = new File (unquote(getURL().getFile()));
 
     if (! file.isDirectory())
       {
--- libjava/gnu/java/net/protocol/jar/Connection.java	20 May 2005 20:02:16 -0000	1.8.6.1
+++ libjava/gnu/java/net/protocol/jar/Connection.java	13 Jul 2005 15:49:37 -0000
@@ -152,7 +152,8 @@
     if (jarfile != null)
       {
 	// this is the easy way...
-	ZipEntry entry = jarfile.getEntry(getEntryName());
+	ZipEntry entry = jarfile.getEntry
+	  (gnu.java.net.protocol.file.Connection.unquote(getEntryName()));
         
 	if (entry != null)
 	  return jarfile.getInputStream (entry);
@@ -163,12 +164,14 @@
 	JarInputStream zis = new JarInputStream(
 			jarFileURLConnection.getInputStream ());
 
+	String entryName = gnu.java.net.protocol.file.Connection.unquote(getEntryName());
+
 	// This is hideous, we're doing a linear search...
 	for (ZipEntry entry = zis.getNextEntry(); 
 	     entry != null; 
 	     entry = zis.getNextEntry())
 	  {
-	    if (getEntryName().equals(entry.getName()))
+	    if (entryName.equals(entry.getName()))
 	      {
 		int size = (int) entry.getSize();
 		byte[] data = new byte[size];
@@ -205,12 +208,14 @@
 	    jar_file = (JarFile) file_cache.get (jarFileURL);
 	    if (jar_file == null)
 	      {
-		jar_file = new JarFile (jarFileURL.getFile());
+		jar_file = new JarFile 
+		  (gnu.java.net.protocol.file.Connection.unquote(jarFileURL.getFile()));
 		file_cache.put (jarFileURL, jar_file);
 	      }
 	  }
 	else
-	  jar_file = new JarFile (jarFileURL.getFile());
+	  jar_file = new JarFile 
+	    (gnu.java.net.protocol.file.Connection.unquote(jarFileURL.getFile()));
       }
     else
       {
--- libjava/java/net/URL.java	28 Apr 2005 01:34:48 -0000	1.46.2.2
+++ libjava/java/net/URL.java	13 Jul 2005 15:49:38 -0000
@@ -408,10 +408,7 @@
 	    // The 1.2 doc specifically says these are copied to the new URL.
 	    host = context.host;
 	    port = context.port;
-	    file = context.file;
             userInfo = context.userInfo;
-	    if (file == null || file.length() == 0)
-	      file = "/";
 	    authority = context.authority;
 	  }
       }
@@ -423,10 +420,13 @@
 	protocol = context.protocol;
 	host = context.host;
 	port = context.port;
-	file = context.file;
         userInfo = context.userInfo;
-	if (file == null || file.length() == 0)
-	  file = "/";
+	if (spec.indexOf(":/", 1) < 0)
+	  {
+	    file = context.file;
+	    if (file == null || file.length() == 0)
+	      file = "/";
+	  }
 	authority = context.authority;
       }
     else // Protocol NOT specified in spec. and no context available.
--- libjava/java/net/URLConnection.java	28 Sep 2004 11:02:35 -0000	1.34
+++ libjava/java/net/URLConnection.java	13 Jul 2005 15:49:39 -0000
@@ -979,17 +979,22 @@
     if (contentType == null || contentType.equals(""))
       return null;
 
-    ContentHandler handler;
+    ContentHandler handler = null;
 
     // See if a handler has been cached for this content type.
     // For efficiency, if a content type has been searched for but not
     // found, it will be in the hash table but as the contentType String
     // instead of a ContentHandler.
-    if ((handler = (ContentHandler) handlers.get(contentType)) != null)
-      if (handler instanceof ContentHandler)
-	return handler;
-      else
-	return null;
+    {
+      Object cachedHandler;
+      if ((cachedHandler = handlers.get(contentType)) != null)
+	{
+	  if (cachedHandler instanceof ContentHandler)
+	    return (ContentHandler)cachedHandler;
+	  else
+	    return null;
+	}
+    }
 
     // If a non-default factory has been set, use it.
     if (factory != null)

gcc4-libjava-ia64-backtrace.patch:
 configure    |    3 ---
 configure.ac |    3 ---
 2 files changed, 6 deletions(-)

--- NEW FILE gcc4-libjava-ia64-backtrace.patch ---
2005-07-14  Jakub Jelinek  <jakub at redhat.com>

	* configure.ac (HAVE_BACKTRACE): Define even on ia64.
	* configure: Rebuilt.

--- libjava/configure.ac.jj	2005-04-12 22:28:45.000000000 +0200
+++ libjava/configure.ac	2005-07-14 18:09:23.000000000 +0200
@@ -769,9 +769,6 @@ else
    AC_CHECK_HEADERS(execinfo.h unistd.h dlfcn.h) 
    AC_CHECK_FUNC(backtrace, [
      case "$host" in
-       ia64-*-linux*)
-	 # Has broken backtrace()
-	 ;;
        mips*-*-linux*)
          # Has broken backtrace(), but we supply our own.
          if test -d sysdep; then true; else mkdir -p sysdep; fi
--- libjava/configure.jj	2005-04-12 22:28:34.000000000 +0200
+++ libjava/configure	2005-07-14 18:11:07.000000000 +0200
@@ -9303,9 +9303,6 @@ echo "${ECHO_T}$ac_cv_func_backtrace" >&
 if test $ac_cv_func_backtrace = yes; then
 
      case "$host" in
-       ia64-*-linux*)
-	 # Has broken backtrace()
-	 ;;
        mips*-*-linux*)
          # Has broken backtrace(), but we supply our own.
          if test -d sysdep; then true; else mkdir -p sysdep; fi

gcc4-pr22052.patch:
 c-decl.c                   |   55 ++++++++++++++++-----------------------------
 testsuite/gcc.dg/inline1.c |    8 ++++++
 testsuite/gcc.dg/inline2.c |    5 ++++
 testsuite/gcc.dg/inline3.c |    7 +++++
 testsuite/gcc.dg/inline4.c |    6 ++++
 testsuite/gcc.dg/inline5.c |    6 ++++
 6 files changed, 52 insertions(+), 35 deletions(-)

--- NEW FILE gcc4-pr22052.patch ---
2005-06-28  Eric Christopher  <echristo at redhat.com>

	PR c/22052
	PR c/21975
	* c-decl.c (diagnose_mismatched_decls): Define DECL_EXTERN_INLINE.
	Use. Fix detection of invalid extern inline redefinition.

	* gcc.dg/inline1.c: New test.
	* gcc.dg/inline2.c: Ditto.
	* gcc.dg/inline3.c: Ditto.
	* gcc.dg/inline4.c: Ditto.
	* gcc.dg/inline5.c: Ditto.

--- gcc/c-decl.c	28 Jun 2005 19:51:24 -0000	1.668
+++ gcc/c-decl.c	29 Jun 2005 00:10:39 -0000	1.669
@@ -1154,6 +1154,9 @@ diagnose_mismatched_decls (tree newdecl,
   bool warned = false;
   bool retval = true;
 
+#define DECL_EXTERN_INLINE(DECL) (DECL_DECLARED_INLINE_P (DECL)  \
+				  && DECL_EXTERNAL (DECL))
+
   /* If we have error_mark_node for either decl or type, just discard
      the previous decl - we're in an error cascade already.  */
   if (olddecl == error_mark_node || newdecl == error_mark_node)
@@ -1282,6 +1285,7 @@ diagnose_mismatched_decls (tree newdecl,
      Multiple definitions are not allowed (6.9p3,5) but GCC permits
      two definitions if one is 'extern inline' and one is not.  The non-
      extern-inline definition supersedes the extern-inline definition.  */
+
   else if (TREE_CODE (newdecl) == FUNCTION_DECL)
     {
       /* If you declare a built-in function name as static, or
@@ -1304,45 +1308,25 @@ diagnose_mismatched_decls (tree newdecl,
 	{
 	  if (DECL_INITIAL (olddecl))
 	    {
-	      /* If both decls have extern inline and are in the same TU,
-	         reject the new decl.  */
-	      if (DECL_DECLARED_INLINE_P (olddecl)
-		  && DECL_EXTERNAL (olddecl)
-		  && DECL_DECLARED_INLINE_P (newdecl)
-		  && DECL_EXTERNAL (newdecl)
+	      /* If both decls are in the same TU and the new declaration
+		 isn't overridding an extern inline reject the new decl.
+		 When we handle c99 style inline rules we'll want to reject
+		 the following:
+
+		 DECL_EXTERN_INLINE (olddecl)
+		 && !DECL_EXTERN_INLINE (newdecl)
+
+		 if they're in the same translation unit. Until we implement
+		 the full semantics we accept the construct.  */
+	      if (!(DECL_EXTERN_INLINE (olddecl)
+		    && !DECL_EXTERN_INLINE (newdecl))
 		  && same_translation_unit_p (newdecl, olddecl))
 		{
 		  error ("%Jredefinition of %qD", newdecl, newdecl);
 		  locate_old_decl (olddecl, error);
 		  return false;
 		}
-	      /* If both decls have not extern inline, reject the new decl.  */
-	      if (!DECL_DECLARED_INLINE_P (olddecl)
-		  && !DECL_EXTERNAL (olddecl)
-		  && !DECL_DECLARED_INLINE_P (newdecl)
-		  && !DECL_EXTERNAL (newdecl))
-		{
-		  error ("%Jredefinition of %qD", newdecl, newdecl);
-		  locate_old_decl (olddecl, error);
-		  return false;
-		}
-	      /* If the new decl is declared as extern inline, error if they are
-	         in the same TU, otherwise retain the old decl.  */
-	      if (!DECL_DECLARED_INLINE_P (olddecl)
-		  && !DECL_EXTERNAL (olddecl)
-		  && DECL_DECLARED_INLINE_P (newdecl)
-		  && DECL_EXTERNAL (newdecl))
-		{
-		  if (same_translation_unit_p (newdecl, olddecl))
-		    {
-		      error ("%Jredefinition of %qD", newdecl, newdecl);
-		      locate_old_decl (olddecl, error);
-		      return false;
-		    }
-		  else
-		    retval = false;
-		}
-	   }
+	    }
 	}
       /* If we have a prototype after an old-style function definition,
 	 the argument types must be checked specially.  */
@@ -1371,8 +1355,7 @@ diagnose_mismatched_decls (tree newdecl,
 	     occur only in Objective C; see also above.  (FIXME: Make
 	     Objective C use normal builtins.)  */
 	  if (!DECL_IS_BUILTIN (olddecl)
-	      && !(DECL_EXTERNAL (olddecl)
-		   && DECL_DECLARED_INLINE_P (olddecl)))
+	      && !DECL_EXTERN_INLINE (olddecl))
 	    {
 	      error ("%Jstatic declaration of %qD follows "
 		     "non-static declaration", newdecl, newdecl);
@@ -1585,6 +1568,8 @@ diagnose_mismatched_decls (tree newdecl,
   if (warned || pedwarned)
     locate_old_decl (olddecl, pedwarned ? pedwarn : warning0);
 
+#undef DECL_EXTERN_INLINE
+
   return retval;
 }
 
--- gcc/testsuite/gcc.dg/inline1.c	1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/inline1.c	29 Jun 2005 00:11:36 -0000	1.1
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -std=gnu89" } */
+/* This test is expected to fail with an error for the redefinition of foo.
+   This violates the constraint of 6.9#3 (no more than one external definition
+   of an identifier with internal linkage in the same translation unit).  */
+static inline int foo(void) { return 1; } /* { dg-error "previous definition of" } */
+static inline int foo(void) { return 0; } /* { dg-error "redefinition of" } */
+
--- gcc/testsuite/gcc.dg/inline2.c	1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/inline2.c	29 Jun 2005 00:11:36 -0000	1.1
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -std=gnu89" } */
+/* This test should compile successfully.  */
+extern inline int foo (void) { return 0; }
+inline int foo (void) { return 1; }
--- gcc/testsuite/gcc.dg/inline3.c	1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/inline3.c	29 Jun 2005 00:11:36 -0000	1.1
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -std=gnu89" } */
+/* This testcase should fail since we're redefining foo in the same
+   translation unit.  */
+extern inline int foo(void) { return 0; }
+inline int foo (void) { return 1; } /* { dg-error "previous definition of" } */
+int foo (void) { return 2; } /* { dg-error "error: redefinition of" } */
--- gcc/testsuite/gcc.dg/inline4.c	1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/inline4.c	29 Jun 2005 00:11:36 -0000	1.1
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -std=gnu89" } */
+/* This testcase should fail since we're redefining foo in the same
+   translation unit.  */
+int foo (void) { return 2; } /* { dg-error "previous definition of" } */
+extern inline int foo (void) { return 1; } /* { dg-error "redefinition of" } */
--- gcc/testsuite/gcc.dg/inline5.c	1 Jan 1970 00:00:00 -0000
+++ gcc/testsuite/gcc.dg/inline5.c	29 Jun 2005 00:11:36 -0000	1.1
@@ -0,0 +1,6 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -std=gnu89" } */
+/* This testcase should fail since we're redefining foo in the same
+   translation unit.  */
+extern inline int foo (void) { return 2; } /* { dg-error "previous definition of" } */
+extern inline int foo (void) { return 1; } /* { dg-error "redefinition of" } */

gcc4-vsb-stack.patch:
 c-pragma.c      |   22 ++++++++++++----------
 doc/invoke.texi |    4 ++--
 2 files changed, 14 insertions(+), 12 deletions(-)

--- NEW FILE gcc4-vsb-stack.patch ---
2005-05-18  H.J. Lu  <hongjiu.lu at intel.com>

	PR middle-end/20303
	* c-pragma.c: Include "vec.h".
	(handle_pragma_visibility): Use VEC.

	* doc/invoke.texi: Remove the nested visibility push limit.

--- gcc/c-pragma.c.jj	2004-11-29 15:47:36.000000000 -0800
+++ gcc/c-pragma.c	2005-05-18 09:14:46.000000000 -0700
@@ -34,6 +34,7 @@ Software Foundation, 59 Temple Place - S
 #include "c-common.h"
 #include "output.h"
 #include "tm_p.h"
+#include "vec.h"
 #include "target.h"
 
 #define GCC_BAD(msgid) do { warning (msgid); return; } while (0)
@@ -583,15 +584,19 @@ maybe_apply_renaming_pragma (tree decl, 
 #ifdef HANDLE_PRAGMA_VISIBILITY
 static void handle_pragma_visibility (cpp_reader *);
 
+typedef enum symbol_visibility visibility;
+DEF_VEC_MALLOC_P (visibility);
+
 /* Sets the default visibility for symbols to something other than that
    specified on the command line.  */
 static void
 handle_pragma_visibility (cpp_reader *dummy ATTRIBUTE_UNUSED)
-{ /* Form is #pragma GCC visibility push(hidden)|pop */
-  static int visstack [16], visidx;
+{
+  /* Form is #pragma GCC visibility push(hidden)|pop */
   tree x;
   enum cpp_ttype token;
   enum { bad, push, pop } action = bad;
+  static VEC (visibility) *visstack;
  
   token = c_lex (&x);
   if (token == CPP_NAME)
@@ -608,14 +613,15 @@ handle_pragma_visibility (cpp_reader *du
     {
       if (pop == action)
         {
-          if (!visidx)
+          if (!VEC_length (visibility, visstack))
             {
               GCC_BAD ("No matching push for %<#pragma GCC visibility pop%>");
             }
           else
             {
-              default_visibility = visstack[--visidx];
-              visibility_options.inpragma = (visidx>0);
+	      default_visibility = VEC_pop (visibility, visstack);
+	      visibility_options.inpragma
+		= VEC_length (visibility, visstack) != 0;
             }
         }
       else
@@ -627,14 +633,10 @@ handle_pragma_visibility (cpp_reader *du
             {
               GCC_BAD ("malformed #pragma GCC visibility push");
             }
-          else if (visidx >= 16)
-            {
-              GCC_BAD ("No more than sixteen #pragma GCC visibility pushes allowed at once");
-            }
           else
             {
               const char *str = IDENTIFIER_POINTER (x);
-              visstack[visidx++] = default_visibility;
+	      VEC_safe_push (visibility, visstack, default_visibility);
               if (!strcmp (str, "default"))
                 default_visibility = VISIBILITY_DEFAULT;
               else if (!strcmp (str, "internal"))
--- gcc/doc/invoke.texi.jj	2005-05-18 09:09:40.000000000 -0700
+++ gcc/doc/invoke.texi	2005-05-18 09:09:40.000000000 -0700
@@ -12445,8 +12445,8 @@ For those adding visibility support to e
 @samp{#pragma GCC visibility} of use.  This works by you enclosing
 the declarations you wish to set visibility for with (for example)
 @samp{#pragma GCC visibility push(hidden)} and
- at samp{#pragma GCC visibility pop}.  These can be nested up to sixteen
-times.  Bear in mind that symbol visibility should be viewed @strong{as
+ at samp{#pragma GCC visibility pop}.
+Bear in mind that symbol visibility should be viewed @strong{as
 part of the API interface contract} and thus all new code should
 always specify visibility when it is not the default ie; declarations
 only for use within the local DSO should @strong{always} be marked explicitly


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/.cvsignore,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -r1.99 -r1.100
--- .cvsignore	10 Jul 2005 12:46:57 -0000	1.99
+++ .cvsignore	14 Jul 2005 18:50:49 -0000	1.100
@@ -1 +1 @@
-gcc-4.0.1-20050710.tar.bz2
+gcc-4.0.1-20050714.tar.bz2

gcc4-libstdc++-pr22309.patch:
 mt_allocator.cc |  168 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 118 insertions(+), 50 deletions(-)

Index: gcc4-libstdc++-pr22309.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4-libstdc++-pr22309.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcc4-libstdc++-pr22309.patch	8 Jul 2005 21:09:22 -0000	1.1
+++ gcc4-libstdc++-pr22309.patch	14 Jul 2005 18:50:49 -0000	1.2
@@ -1,12 +1,25 @@
-2005-07-07  Jakub Jelinek  <jakub at redhat.com>
+2005-07-14  Jakub Jelinek  <jakub at redhat.com>
 
 	PR libstdc++/22309
-	* src/mt_allocator.cc (__gnu_internal::__freelist_key): New type.
-	(__gnu_internal::freelist_key): Change to the above type.
-	(_M_initialize, _M_get_thread_id): Adjust users.
+	* src/mt_allocator.cc (__gnu_internal::freelist_mutex): Make static.
+	(__gnu_internal::__freelist_key): New type.
+	(__gnu_internal::freelist): New variable.
+	(__gnu_internal::_M_destroy_thread_key): New function.
+	(__gnu_cxx::__pool<true>::_M_destroy): Don't delete
+	_M_thread_freelist_initial.
+	(__gnu_cxx::__pool<true>::_M_initialize): Add unused attribute to __d
+	argument.  Don't use _M_thread_freelist and _M_thread_freelist_initial
+	__pool<true> fields, instead use __gnu_cxx::freelist fields, call
+	gthread_key_create just once.  Use
+	__gnu_internal::_M_destroy_thread_key as key destructor.
+	(__gnu_cxx::__pool<true>::_M_get_thread_id): Store size_t id rather than
+	_Thread_record* in the thread specific value.  Don't use
+	_M_thread_freelist __pool<true> field, instead use __gnu_cxx::freelist
+	fields.
+	(__gnu_cxx::__pool<true>::_M_destroy_thread_key): Do nothing.
 
---- libstdc++-v3/src/mt_allocator.cc.jj	2005-06-07 12:31:09.000000000 +0200
-+++ libstdc++-v3/src/mt_allocator.cc	2005-07-07 19:43:31.000000000 +0200
+--- libstdc++-v3/src/mt_allocator.cc.jj	2004-10-17 17:22:03.000000000 +0200
++++ libstdc++-v3/src/mt_allocator.cc	2005-07-14 14:26:30.000000000 +0200
 @@ -1,8 +1,8 @@
  // Allocator details.
  
@@ -18,49 +31,224 @@
  // software; you can redistribute it and/or modify it under the
  // terms of the GNU General Public License as published by the
  // Free Software Foundation; either version 2, or (at your option)
-@@ -40,7 +40,14 @@ namespace __gnu_internal
-   __glibcxx_mutex_define_initialized(freelist_mutex);
+@@ -37,10 +37,39 @@
+ 
+ namespace __gnu_internal
+ {
+-  __glibcxx_mutex_define_initialized(freelist_mutex);
++  static __glibcxx_mutex_define_initialized(freelist_mutex);
  
  #ifdef __GTHREADS
 -  __gthread_key_t freelist_key;
-+  struct __freelist_key
++  static struct __freelist
 +  {
-+    bool _M_init;
++    typedef __gnu_cxx::__pool<true>::_Thread_record _Thread_record;
++    _Thread_record* _M_thread_freelist;
++    _Thread_record* _M_thread_freelist_array;
++    size_t _M_max_threads;
 +    __gthread_key_t _M_key;
-+    ~__freelist_key() { if (_M_init) __gthread_key_delete (_M_key); }
-+  } freelist_key
-+  /* Ensure freelist_key is destructed last.  */
++    ~__freelist()
++    {
++      if (_M_thread_freelist_array)
++	{
++	  __gthread_key_delete (_M_key);
++	  ::operator delete(static_cast<void*>(_M_thread_freelist_array));
++	}
++    }
++  } freelist
++  /* Ensure freelist is destructed last.  */
 +  __attribute__((init_priority (101)));
++
++  static void _M_destroy_thread_key (void* __id)
++  {
++    // Return this thread id record to front of thread_freelist.
++    typedef __gnu_cxx::__pool<true>::_Thread_record _Thread_record;
++    __gnu_cxx::lock sentry(__gnu_internal::freelist_mutex);
++    size_t _M_id = (size_t)__id;
++    _Thread_record* __tr
++      = &__gnu_internal::freelist._M_thread_freelist_array[_M_id - 1];
++    __tr->_M_next = __gnu_internal::freelist._M_thread_freelist;
++    __gnu_internal::freelist._M_thread_freelist = __tr;
++  }
  #endif
  }
  
-@@ -454,8 +461,9 @@ namespace __gnu_cxx
- 	  
- 	// Initialize per thread key to hold pointer to
- 	// _M_thread_freelist.
+@@ -194,7 +223,6 @@ namespace __gnu_cxx
+ 		::operator delete(__bin._M_used);
+ 		::operator delete(__bin._M_mutex);
+ 	      }
+-	    ::operator delete(_M_thread_freelist_initial);
+ 	  }
+ 	else
+ 	  {
+@@ -386,8 +414,9 @@ namespace __gnu_cxx
+     return reinterpret_cast<char*>(__block) + __options._M_align;
+   }
+ 
+- void
+-  __pool<true>::_M_initialize(__destroy_handler __d)
++  void
++  __pool<true>::_M_initialize(__destroy_handler __d
++			      __attribute__((__unused__)))
+   {
+     // _M_force_new must not change after the first allocate(),
+     // which in turn calls this method, so if it's false, it's false
+@@ -397,7 +426,7 @@ namespace __gnu_cxx
+ 	_M_init = true;
+ 	return;
+       }
+-      
++
+     // Create the bins.
+     // Calculate the number of bins required based on _M_max_bytes.
+     // _M_bin_size is statically-initialized to one.
+@@ -433,29 +462,70 @@ namespace __gnu_cxx
+     // directly and have no need for this.
+     if (__gthread_active_p())
+       {
+-	const size_t __k = sizeof(_Thread_record) * _M_options._M_max_threads;
+-	__v = ::operator new(__k);
+-	_M_thread_freelist = static_cast<_Thread_record*>(__v);
+-	_M_thread_freelist_initial = __v;
+-	  
+-	// NOTE! The first assignable thread id is 1 since the
+-	// global pool uses id 0
+-	size_t __i;
+-	for (__i = 1; __i < _M_options._M_max_threads; ++__i)
+-	  {
+-	    _Thread_record& __tr = _M_thread_freelist[__i - 1];
+-	    __tr._M_next = &_M_thread_freelist[__i];
+-	    __tr._M_id = __i;
+-	  }
+-	  
+-	// Set last record.
+-	_M_thread_freelist[__i - 1]._M_next = NULL;
+-	_M_thread_freelist[__i - 1]._M_id = __i;
+-	  
+-	// Initialize per thread key to hold pointer to
+-	// _M_thread_freelist.
 -	__gthread_key_create(&__gnu_internal::freelist_key, __d);
 -	  
-+	__gthread_key_create(&__gnu_internal::freelist_key._M_key, __d);
-+	__gnu_internal::freelist_key._M_init = true;
++	{
++	  __gnu_cxx::lock sentry(__gnu_internal::freelist_mutex);
++
++	  if (!__gnu_internal::freelist._M_thread_freelist_array
++	      || __gnu_internal::freelist._M_max_threads
++		 < _M_options._M_max_threads)
++	    {
++	      const size_t __k = sizeof(_Thread_record)
++				 * _M_options._M_max_threads;
++	      __v = ::operator new(__k);
++	      _Thread_record* _M_thread_freelist
++		= static_cast<_Thread_record*>(__v);
++
++	      // NOTE! The first assignable thread id is 1 since the
++	      // global pool uses id 0
++	      size_t __i;
++	      for (__i = 1; __i < _M_options._M_max_threads; ++__i)
++		{
++		  _Thread_record& __tr = _M_thread_freelist[__i - 1];
++		  __tr._M_next = &_M_thread_freelist[__i];
++		  __tr._M_id = __i;
++		}
++
++	      // Set last record.
++	      _M_thread_freelist[__i - 1]._M_next = NULL;
++	      _M_thread_freelist[__i - 1]._M_id = __i;
++
++	      if (!__gnu_internal::freelist._M_thread_freelist_array)
++		{
++		  // Initialize per thread key to hold pointer to
++		  // _M_thread_freelist.
++		  __gthread_key_create(&__gnu_internal::freelist._M_key,
++				       __gnu_internal::_M_destroy_thread_key);
++		  __gnu_internal::freelist._M_thread_freelist
++		    = _M_thread_freelist;
++		}
++	      else
++		{
++		  _Thread_record* _M_old_freelist
++		    = __gnu_internal::freelist._M_thread_freelist;
++		  _Thread_record* _M_old_array
++		    = __gnu_internal::freelist._M_thread_freelist_array;
++		  __gnu_internal::freelist._M_thread_freelist
++		    = &_M_thread_freelist[_M_old_freelist - _M_old_array];
++		  while (_M_old_freelist)
++		    {
++		      size_t next_id;
++		      if (_M_old_freelist->_M_next)
++			next_id = _M_old_freelist->_M_next - _M_old_array;
++		      else
++			next_id = __gnu_internal::freelist._M_max_threads;
++		      _M_thread_freelist[_M_old_freelist->_M_id - 1]._M_next
++			= &_M_thread_freelist[next_id];
++		      _M_old_freelist = _M_old_freelist->_M_next;
++		    }
++		  ::operator delete(static_cast<void*>(_M_old_array));
++		}
++	      __gnu_internal::freelist._M_thread_freelist_array
++		= _M_thread_freelist;
++	      __gnu_internal::freelist._M_max_threads
++		= _M_options._M_max_threads;
++	    }
++	}
 +
  	const size_t __max_threads = _M_options._M_max_threads + 1;
  	for (size_t __n = 0; __n < _M_bin_size; ++__n)
  	  {
-@@ -514,7 +522,7 @@ namespace __gnu_cxx
+@@ -514,23 +584,24 @@ namespace __gnu_cxx
      // returns it's id.
      if (__gthread_active_p())
        {
 -	void* v = __gthread_getspecific(__gnu_internal::freelist_key);
-+	void* v = __gthread_getspecific(__gnu_internal::freelist_key._M_key);
- 	_Thread_record* __freelist_pos = static_cast<_Thread_record*>(v); 
- 	if (__freelist_pos == NULL)
- 	  {
-@@ -527,7 +535,7 @@ namespace __gnu_cxx
- 	      _M_thread_freelist = _M_thread_freelist->_M_next;
+-	_Thread_record* __freelist_pos = static_cast<_Thread_record*>(v); 
+-	if (__freelist_pos == NULL)
+-	  {
+-	    // Since _M_options._M_max_threads must be larger than
+-	    // the theoretical max number of threads of the OS the
+-	    // list can never be empty.
++	void* v = __gthread_getspecific(__gnu_internal::freelist._M_key);
++	size_t _M_id = (size_t)v;
++	if (_M_id == 0)
++	  {
+ 	    {
+ 	      __gnu_cxx::lock sentry(__gnu_internal::freelist_mutex);
+-	      __freelist_pos = _M_thread_freelist;
+-	      _M_thread_freelist = _M_thread_freelist->_M_next;
++	      if (__gnu_internal::freelist._M_thread_freelist)
++		{
++		  _M_id = __gnu_internal::freelist._M_thread_freelist->_M_id;
++		  __gnu_internal::freelist._M_thread_freelist
++		    = __gnu_internal::freelist._M_thread_freelist->_M_next;
++		}
  	    }
- 	      
+-	      
 -	    __gthread_setspecific(__gnu_internal::freelist_key, 
-+	    __gthread_setspecific(__gnu_internal::freelist_key._M_key, 
- 				  static_cast<void*>(__freelist_pos));
+-				  static_cast<void*>(__freelist_pos));
++
++	    __gthread_setspecific(__gnu_internal::freelist._M_key,
++				  (void*)_M_id);
  	  }
- 	return __freelist_pos->_M_id;
+-	return __freelist_pos->_M_id;
++	return _M_id >= _M_options._M_max_threads ? 0 : _M_id;
+       }
+ 
+     // Otherwise (no thread support or inactive) all requests are
+@@ -538,14 +609,11 @@ namespace __gnu_cxx
+     return 0;
+   }
+ 
++  // Compatibility
+   void
+-  __pool<true>::_M_destroy_thread_key(void* __freelist_pos)
++  __pool<true>::_M_destroy_thread_key(void* __freelist_pos
++				      __attribute__((__unused__)))
+   {
+-    // Return this thread id record to front of thread_freelist.
+-    __gnu_cxx::lock sentry(__gnu_internal::freelist_mutex);
+-    _Thread_record* __tr = static_cast<_Thread_record*>(__freelist_pos);
+-    __tr->_M_next = _M_thread_freelist; 
+-    _M_thread_freelist = __tr;
+   }
+ #endif
+ 

gcc4-stack-protector.patch:
 Makefile.in             |   10 +-
 c-cppbuiltin.c          |    6 +
 cfgexpand.c             |  216 +++++++++++++++++++++++++++++++++++++++++++++++-
 common.opt              |   12 ++
 config.in               |    6 +
 config/i386/i386.c      |   25 +++++
 config/i386/i386.h      |    1 
 config/i386/i386.md     |  184 ++++++++++++++++++++++++++++++----------
 config/i386/linux.h     |    5 +
 config/i386/linux64.h   |    6 +
 config/rs6000/darwin.h  |   14 +--
 config/rs6000/linux.h   |    5 +
 config/rs6000/linux64.h |    6 +
 config/rs6000/rs6000.c  |  162 +++++++++++++++++++++++++++++++-----
 config/rs6000/rs6000.h  |   93 ++++++++++----------
 config/rs6000/rs6000.md |   82 ++++++++++++++++++
 config/rs6000/sysv4.h   |    5 -
 config/s390/s390.c      |   24 +++--
 config/s390/s390.h      |   10 +-
 config/sparc/linux.h    |    5 +
 config/sparc/linux64.h  |    6 +
 config/sparc/sparc.c    |   10 ++
 config/sparc/sparc.h    |    1 
 config/sparc/sparc.md   |   93 ++++++++++++++++++++
 configure               |   48 ++++++++++
 configure.ac            |   39 ++++++++
 doc/md.texi             |   34 ++++++-
 doc/tm.texi             |   26 +++++
 function.c              |  104 +++++++++++++++++++++++
 function.h              |    4 
 gcc.c                   |   12 ++
 params.def              |    5 +
 regrename.c             |    6 +
 target-def.h            |    5 +
 target.h                |   11 ++
 targhooks.c             |   91 ++++++++++++++++++++
 targhooks.h             |    4 
 toplev.c                |   10 ++
 tree.h                  |    1 
 39 files changed, 1231 insertions(+), 156 deletions(-)

Index: gcc4-stack-protector.patch
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4-stack-protector.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- gcc4-stack-protector.patch	8 Jul 2005 21:26:40 -0000	1.2
+++ gcc4-stack-protector.patch	14 Jul 2005 18:50:49 -0000	1.3
@@ -1,3 +1,9 @@
+2005-07-11  Jakub Jelinek  <jakub at redhat.com>
+
+	* cfgexpand.c (stack_protect_classify_type): Use TYPE_SIZE_UNIT (type)
+	instead of TYPE_MAX_VALUE (TYPE_DOMAIN (type)) to get array size in
+	bytes.
+
 2005-07-07  Jakub Jelinek  <jakub at redhat.com>
 
 	* config/sparc/sparc.md (stack_protect_testsi): Put clobbers after
@@ -309,9 +315,9 @@
    /* A straightforward target hook doesn't work, because of problems
       linking that hook's body when part of non-C front ends.  */
  # define preprocessing_asm_p() (cpp_get_options (pfile)->lang == CLK_ASM)
---- gcc/cfgexpand.c	26 Jun 2005 05:18:13 -0000	2.44
-+++ gcc/cfgexpand.c	27 Jun 2005 07:40:50 -0000	2.45
-@@ -37,6 +37,8 @@ Boston, MA 02110-1301, USA.  */
+--- gcc/cfgexpand.c	26 Jun 2005 05:18:13 -0000
++++ gcc/cfgexpand.c	27 Jun 2005 07:40:50 -0000
+@@ -37,6 +37,8 @@ Boston, MA 02111-1307, USA.  */
  #include "flags.h"
  #include "diagnostic.h"
  #include "toplev.h"
@@ -320,7 +326,7 @@
  
  /* Verify that there is exactly single jump instruction since last and attach
     REG_BR_PROB note specifying probability.
-@@ -137,6 +139,13 @@ static size_t stack_vars_conflict_alloc;
+@@ -139,6 +141,13 @@ static size_t stack_vars_conflict_alloc;
     (frame_offset+frame_phase) % PREFERRED_STACK_BOUNDARY == 0.  */
  static int frame_phase;
  
@@ -334,7 +340,7 @@
  
  /* Discover the byte alignment to use for DECL.  Ignore alignment
     we can't do with expected alignment of the stack boundary.  */
-@@ -487,7 +496,7 @@ expand_one_stack_var_at (tree decl, HOST
+@@ -489,7 +498,7 @@ expand_one_stack_var_at (tree decl, HOST
     with that location.  */
  
  static void
@@ -343,7 +349,7 @@
  {
    size_t si, i, j, n = stack_vars_num;
  
-@@ -501,6 +510,16 @@ expand_stack_vars (void)
+@@ -503,6 +512,16 @@ expand_stack_vars (void)
        if (stack_vars[i].representative != i)
  	continue;
  
@@ -360,7 +366,7 @@
        offset = alloc_stack_frame_space (stack_vars[i].size,
  					stack_vars[i].alignb);
  
-@@ -620,6 +639,11 @@ expand_one_error_var (tree var)
+@@ -622,6 +641,11 @@ expand_one_error_var (tree var)
  static bool
  defer_stack_allocation (tree var, bool toplevel)
  {
@@ -372,7 +378,7 @@
    /* Variables in the outermost scope automatically conflict with
       every other variable.  The only reason to want to defer them
       at all is that, after sorting, we can more efficiently pack
-@@ -725,6 +749,144 @@ clear_tree_used (tree block)
+@@ -727,6 +751,143 @@ clear_tree_used (tree block)
      clear_tree_used (t);
  }
  
@@ -397,15 +403,14 @@
 +	  || t == signed_char_type_node
 +	  || t == unsigned_char_type_node)
 +	{
-+	  HOST_WIDE_INT max = PARAM_VALUE (PARAM_SSP_BUFFER_SIZE);
-+	  HOST_WIDE_INT len;
++	  unsigned HOST_WIDE_INT max = PARAM_VALUE (PARAM_SSP_BUFFER_SIZE);
++	  unsigned HOST_WIDE_INT len;
 +
-+	  if (!TYPE_DOMAIN (type)
-+	      || !TYPE_MAX_VALUE (TYPE_DOMAIN (type))
-+	      || !host_integerp (TYPE_MAX_VALUE (TYPE_DOMAIN (type)), 1))
-+	    len = max + 1;
++	  if (!TYPE_SIZE_UNIT (type)
++	      || !host_integerp (TYPE_SIZE_UNIT (type), 1))
++	    len = max;
 +	  else
-+	    len = tree_low_cst (TYPE_MAX_VALUE (TYPE_DOMAIN (type)), 1);
++	    len = tree_low_cst (TYPE_SIZE_UNIT (type), 1);
 +
 +	  if (len < max)
 +	    ret = SPCT_HAS_SMALL_CHAR_ARRAY | SPCT_HAS_ARRAY;
@@ -517,7 +522,7 @@
  /* Expand all variables used in the function.  */
  
  static void
-@@ -746,6 +908,10 @@ expand_used_vars (void)
+@@ -748,6 +909,10 @@ expand_used_vars (void)
    /* Clear TREE_USED on all variables associated with a block scope.  */
    clear_tree_used (outer_block);
  
@@ -528,7 +533,7 @@
    /* At this point all variables on the unexpanded_var_list with TREE_USED
       set are not associated with any block scope.  Lay them out.  */
    for (t = cfun->unexpanded_var_list; t; t = TREE_CHAIN (t))
-@@ -794,14 +960,44 @@ expand_used_vars (void)
+@@ -796,14 +961,44 @@ expand_used_vars (void)
  	 reflect this.  */
        add_alias_set_conflicts ();
  
@@ -575,7 +580,7 @@
  
        /* Free up stack variable graph data.  */
        XDELETEVEC (stack_vars);
-@@ -1288,6 +1484,16 @@ tree_expand_cfg (void)
+@@ -1280,6 +1475,16 @@ tree_expand_cfg (void)
    /* Expand the variables recorded during gimple lowering.  */
    expand_used_vars ();
  
@@ -592,7 +597,7 @@
    /* Set up parameters and prepare for return, for the function.  */
    expand_function_start (current_function_decl);
  
-@@ -1298,6 +1504,11 @@ tree_expand_cfg (void)
+@@ -1290,6 +1495,11 @@ tree_expand_cfg (void)
        && DECL_FILE_SCOPE_P (current_function_decl))
      expand_main_function ();
  


Index: gcc4.spec
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/gcc4.spec,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -r1.56 -r1.57
--- gcc4.spec	10 Jul 2005 12:50:19 -0000	1.56
+++ gcc4.spec	14 Jul 2005 18:50:49 -0000	1.57
@@ -1,6 +1,6 @@
-%define DATE 20050710
+%define DATE 20050714
 %define gcc_version 4.0.1
-%define gcc_release 2
+%define gcc_release 3
 %define _unpackaged_files_terminate_build 0
 %define multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} alpha ia64 x86_64 s390 sparc sparc64
@@ -82,15 +82,15 @@
 Patch9: gcc4-struct-layout.patch
 Patch10: gcc4-ppc32-hwint32.patch
 Patch11: gcc4-pr17965.patch
-Patch12: gcc4-fortran-forall.patch
+Patch12: gcc4-vsb-stack.patch
 Patch13: gcc4-libltdl-multilib.patch
-Patch14: gcc4-fortran-legacy.patch
-Patch15: gcc4-fortran-logical-integer.patch
-Patch16: gcc4-fortran-hollerith.patch
+Patch14: gcc4-java-rh163099.patch
+Patch15: gcc4-java-urls.patch
+Patch16: gcc4-libjava-ia64-backtrace.patch
 Patch17: gcc4-stack-protector.patch
 Patch18: gcc4-ia64-stack-protector.patch
 Patch19: gcc4-s390-stack-protector.patch
-Patch20: gcc4-stack-protector-shortsize.patch
+Patch20: gcc4-pr22052.patch
 Patch21: gcc4-libstdc++-pr22309.patch
 
 %define _gnu %{nil}
@@ -412,15 +412,15 @@
 %patch9 -p0 -b .struct-layout~
 #%patch10 -p0 -b .ppc32-hwint32~
 %patch11 -p0 -b .pr17965~
-%patch12 -p0 -b .fortran-forall~
+%patch12 -p0 -b .vsb-stack~
 %patch13 -p0 -b .libltdl-multilib~
-%patch14 -p0 -b .fortran-legacy~
-%patch15 -p0 -b .fortran-logical-integer~
-%patch16 -p0 -b .fortran-hollerith~
+%patch14 -p0 -b .java-rh163099~
+%patch15 -p0 -b .java-urls~
+%patch16 -p0 -b .libjava-ia64-backtrace~
 %patch17 -p0 -b .stack-protector~
 %patch18 -p0 -b .ia64-stack-protector~
 %patch19 -p0 -b .s390-stack-protector~
-%patch20 -p0 -b .stack-protector-shortsize~
+%patch20 -p0 -b .pr22052~
 %patch21 -p0 -b .libstdc++-pr22309~
 
 perl -pi -e 's/4\.0\.2/4.0.1/' gcc/version.c
@@ -1446,6 +1446,23 @@
 %endif
 
 %changelog
+* Thu Jul 14 2005 Jakub Jelinek  <jakub at redhat.com> 4.0.1-3
+- update from CVS
+  - PRs bootstrap/21704, c++/10611, c++/20563, c++/20637, c++/20678,
+	c++/20746, c++/20789, c++/21903, c++/21929, fortran/15966,
+	fortran/16531, fortran/18781, fortran/22327, fortran/22417,
+	libfortran/16435, libfortran/21875, libgfortran/22412,
+	libstdc++/22102, middle-end/20593, tree-opt/22105
+- another attempt to fix libstdc++ mt allocator (#161061,
+  PR libstdc++/22309)
+- diagnose invalid uses of inline (Eric Christopher, #162216, #159731,
+  PRs c/22052, c/21975)
+- fix linker command line ordering when compiling multiple
+  java source files (Tom Tromey, #163099)
+- use backtrace () in libgcj even on ia64
+- fix java handling of URLs (Andrew Haley)
+- support more than 16 nested GCC visibility pragmas (H.J.Lu)
+
 * Sun Jul 10 2005 Jakub Jelinek  <jakub at redhat.com> 4.0.1-2
 - update from CVS
   - PRs fortran/17792, fortran/19926, fortran/21257, fortran/21375
@@ -1467,7 +1484,7 @@
 - make sure libstdc++ mt allocator calls pthread_key_delete before
   libstdc++ dlclose (#161061, PR libstdc++/22309)
 - accept fortran ENTRY without () even in FUNCTIONs (#161634)
-- fix fortran handling of ENTRY return var names as rvalues (161669)
+- fix fortran handling of ENTRY return var names as rvalues (#161669)
 - fix fortran ICE on invalid preprocessor line (#161679)
 - fix fortran handling of long preprocessor lines (#161680)
 - add -std=legacy gfortran option (Roger Sayle)


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/gcc/devel/sources,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -r1.101 -r1.102
--- sources	10 Jul 2005 12:46:57 -0000	1.101
+++ sources	14 Jul 2005 18:50:49 -0000	1.102
@@ -1 +1 @@
-158f94a28dc1e04943d0e29dae3bb9b8  gcc-4.0.1-20050710.tar.bz2
+47e6bed61cb2e0bd68cc52c048dec062  gcc-4.0.1-20050714.tar.bz2


--- gcc4-fortran-forall.patch DELETED ---


--- gcc4-fortran-hollerith.patch DELETED ---


--- gcc4-fortran-legacy.patch DELETED ---


--- gcc4-fortran-logical-integer.patch DELETED ---


--- gcc4-stack-protector-shortsize.patch DELETED ---




More information about the fedora-cvs-commits mailing list