This is the mail archive of the gcc-testresults@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]
Other format: [Raw text]

Results for 4.6.0 20110317 (prerelease) (GCC) testsuite on x86_64-apple-darwin10.7.0


gcc-4_6-branch at r171110 built against GMP 5.0.1, MPFR 3.0.0 and MPC2 0.9 using Xcode 4.0 with...

Index: libstdc++-v3/testsuite/lib/prune.exp
===================================================================
--- libstdc++-v3/testsuite/lib/prune.exp	(revision 171118)
+++ libstdc++-v3/testsuite/lib/prune.exp	(working copy)
@@ -55,6 +55,9 @@ proc libstdc++-dg-prune { system text } 
     regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable:  AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
 
+    # Ignore harmless warnings from Xcode 4.0.
+    regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
+
     foreach p $additional_prunes {
 	if { [string length $p] > 0 } {
 	    # Following regexp matches a complete line containing $p.
Index: libiberty/simple-object-mach-o.c
===================================================================
--- libiberty/simple-object-mach-o.c	(revision 171118)
+++ libiberty/simple-object-mach-o.c	(working copy)
@@ -170,9 +170,13 @@ struct mach_o_section_64
 
 #define MACH_O_NAME_LEN (16)
 
-/* A GNU specific extension for long section names.  */
+/* A GNU-specific extension to wrap lto sections into a single mach-o
+   section.  FIXME: These need to be in sync with their equivalents in
+   darwin.c  */
 
 #define GNU_SECTION_NAMES "__section_names"
+#define GNU_SECTION_SECTS "__lto_sections"
+#define GNU_SECTION_INDEX "__section_index"
 
 /* Private data for an simple_object_read.  */
 
@@ -376,11 +380,16 @@ simple_object_mach_o_segment (simple_obj
   size_t segname_offset;
   size_t sectname_offset;
   unsigned int nsects;
-  unsigned char *secdata;
+  unsigned char *secdata = NULL;
   unsigned int i;
-  unsigned int strtab_index;
+  int strtab_index, index_index, sections_index;
   char *strtab;
   size_t strtab_size;
+  unsigned char *index = NULL;
+  size_t index_size;
+  unsigned int n_lto_sects = 0;
+  size_t lto_sect_size = 0;
+  off_t lto_sect_offset = (off_t)0;
 
   fetch_32 = (omr->is_big_endian
 	      ? simple_object_fetch_big_32
@@ -417,9 +426,8 @@ simple_object_mach_o_segment (simple_obj
       return 0;
     }
 
-  /* Scan for a __section_names section.  This is in effect a GNU
-     extension that permits section names longer than 16 chars.  */
-
+  /* Scan for section names that signal GNU LTO extensions to mach-o.  */
+  strtab_index = index_index = sections_index = -1;
   for (i = 0; i < nsects; ++i)
     {
       size_t nameoff;
@@ -429,11 +437,16 @@ simple_object_mach_o_segment (simple_obj
 	continue;
       nameoff = i * sechdrsize + sectname_offset;
       if (strcmp ((char *) secdata + nameoff, GNU_SECTION_NAMES) == 0)
-	break;
+	strtab_index = i;
+      else if (strcmp ((char *) secdata + nameoff, GNU_SECTION_INDEX) == 0)
+	index_index = i;
+      else if (strcmp ((char *) secdata + nameoff, GNU_SECTION_SECTS) == 0)
+	sections_index = i;
     }
 
-  strtab_index = i;
-  if (strtab_index >= nsects)
+  /* Support code compiled with the orginal LTO implementation of one mach-o 
+     section for each LTO section.  */
+  if (strtab_index < 0)
     {
       strtab = NULL;
       strtab_size = 0;
@@ -457,7 +470,79 @@ simple_object_mach_o_segment (simple_obj
 	}
     }
 
-  /* Process the sections.  */
+  /* The new version puts all the LTO data into a single mach-o section and
+     provides a separate index from which we implement sub-sectioning.
+     For now, it is not an error for this to be missing, we could have an
+     old-style file.  */
+  if (index_index < 0)
+    {
+      index = NULL;
+      index_size = 0;
+    }
+  else
+    {
+      off_t index_offset;
+
+      simple_object_mach_o_section_info (omr->is_big_endian, is_32,
+					 secdata + index_index * sechdrsize,
+					 &index_offset, &index_size);
+      index = XNEWVEC (unsigned char, index_size);
+      if (!simple_object_internal_read (sobj->descriptor,
+					sobj->offset + index_offset,
+					index, index_size,
+					errmsg, err))
+	{
+	  XDELETEVEC (index);
+	  XDELETEVEC (strtab);
+	  XDELETEVEC (secdata);
+	  return 0;
+	}
+    }
+
+  if (sections_index >= 0)
+    simple_object_mach_o_section_info (omr->is_big_endian, is_32,
+				       secdata + sections_index * sechdrsize,
+				       &lto_sect_offset, &lto_sect_size);
+  /* The index contains 4 uint32_t per sub-section:
+     sub-section offset/length, sub-section name/length.  
+     We fix this for both 32 and 64 bit mach-o for now, since other 
+     fields limit the maximum size of an object to 4G.  */
+  n_lto_sects = index_size / 16;
+
+  /* If we have a new-style file - handle that here.  */
+  if (n_lto_sects && index)
+    { 
+      for (i = 0; i < n_lto_sects; ++i)
+        {
+	  char *name;
+	  off_t secoffset;
+	  size_t secsize;
+	  unsigned int info[4];
+	  info[0] = (*fetch_32) (index + 16 * i);
+	  info[1] = (*fetch_32) (index + 16 * i + 4);
+	  info[2] = (*fetch_32) (index + 16 * i + 8);
+	  info[3] = (*fetch_32) (index + 16 * i + 12);
+	  
+	  secoffset = lto_sect_offset + info[0];
+	  secsize = info[1];
+	  name = strtab + info[2];
+	  /* We don't use the length yet.  */
+	  
+	  if (!(*pfn) (data, name, secoffset, secsize))
+	    {
+	      *errmsg = NULL;
+	      *err = 0;
+	      XDELETEVEC (index);
+	      XDELETEVEC (strtab);
+	      XDELETEVEC (secdata);
+	      return 0;
+	    }
+        }
+      /* Done. */
+      goto ok;
+    }
+
+  /* Process the sections the old way.  */
 
   for (i = 0; i < nsects; ++i)
     {
@@ -505,12 +590,15 @@ simple_object_mach_o_segment (simple_obj
 	{
 	  *errmsg = NULL;
 	  *err = 0;
+	  XDELETEVEC (index);
 	  XDELETEVEC (strtab);
 	  XDELETEVEC (secdata);
 	  return 0;
 	}
     }
 
+ok:
+  XDELETEVEC (index);
   XDELETEVEC (strtab);
   XDELETEVEC (secdata);
 
Index: gcc/doc/tm.texi
===================================================================
--- gcc/doc/tm.texi	(revision 171118)
+++ gcc/doc/tm.texi	(working copy)
@@ -7453,6 +7453,10 @@ The default implementation of this hook 
 when the relevant string is @code{NULL}.
 @end deftypefn
 
+@deftypefn {Target Hook} bool TARGET_ASM_HANDLED_ASSEMBLE_VARIABLE_P (tree @var{var_decl})
+Returns @code{true} iff the target has handled the assembly of the  variable @var{var_decl}
+@end deftypefn
+
 @deftypefn {Target Hook} bool TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA (FILE *@var{file}, rtx @var{x})
 A target hook to recognize @var{rtx} patterns that @code{output_addr_const}
 can't deal with, and output assembly code to @var{file} corresponding to
Index: gcc/doc/tm.texi.in
===================================================================
--- gcc/doc/tm.texi.in	(revision 171118)
+++ gcc/doc/tm.texi.in	(working copy)
@@ -7420,6 +7420,8 @@ The default implementation of this hook 
 when the relevant string is @code{NULL}.
 @end deftypefn
 
+@hook TARGET_ASM_HANDLED_ASSEMBLE_VARIABLE_P
+
 @hook TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA
 A target hook to recognize @var{rtx} patterns that @code{output_addr_const}
 can't deal with, and output assembly code to @var{file} corresponding to
Index: gcc/target.def
===================================================================
--- gcc/target.def	(revision 171118)
+++ gcc/target.def	(working copy)
@@ -501,6 +501,13 @@ DEFHOOK
  bool, (FILE *file, rtx x),
  default_asm_output_addr_const_extra)
 
+DEFHOOK
+(handled_assemble_variable_p,
+ "Returns @code{true} iff the target has handled the assembly of the\
+  variable @var{var_decl}",
+ bool, (tree var_decl),
+ hook_bool_tree_false)
+
 /* ??? The TARGET_PRINT_OPERAND* hooks are part of the asm_out struct,
    even though that is not reflected in the macro name to override their
    initializers.  */
Index: gcc/objc/objc-next-runtime-abi-01.c
===================================================================
--- gcc/objc/objc-next-runtime-abi-01.c	(revision 171118)
+++ gcc/objc/objc-next-runtime-abi-01.c	(working copy)
@@ -2267,27 +2267,51 @@ generate_objc_symtab_decl (void)
 		   init_objc_symtab (TREE_TYPE (UOBJC_SYMBOLS_decl)));
 }
 
-
 static void
 handle_next_class_ref (tree chain)
 {
+  tree decl, exp;
+  struct imp_entry *impent;
   const char *name = IDENTIFIER_POINTER (TREE_VALUE (chain));
   char *string = (char *) alloca (strlen (name) + 30);
 
+  for (impent = imp_list; impent; impent = impent->next)
+    if (TREE_CODE (impent->imp_context) == CLASS_IMPLEMENTATION_TYPE
+        && IDENTIFIER_POINTER (CLASS_NAME (impent->imp_context))
+           == IDENTIFIER_POINTER (TREE_VALUE (chain)))
+      return; /* we declare this, no need for a lazy ref.  */
+
   sprintf (string, ".objc_class_name_%s", name);
 
-#ifdef ASM_DECLARE_UNRESOLVED_REFERENCE
-  ASM_DECLARE_UNRESOLVED_REFERENCE (asm_out_file, string);
-#else
-  return ; /* NULL build for targets other than Darwin.  */
-#endif
+  decl = build_decl (UNKNOWN_LOCATION,
+		     VAR_DECL, get_identifier (string), char_type_node);
+  TREE_PUBLIC (decl) = 1;
+  DECL_EXTERNAL (decl) = 1;
+  DECL_CONTEXT (decl) = NULL_TREE;
+  finish_var_decl (decl, NULL);
+
+  /* We build a variable to signal the reference.  This will be intercepted
+     and output as a lazy reference.  */
+  sprintf (string, "_OBJC_class_ref_%s", name);
+  exp = build1 (ADDR_EXPR, string_type_node, decl);
+  decl = build_decl (input_location,
+		     VAR_DECL, get_identifier (string), string_type_node);
+  TREE_STATIC (decl) = 1;
+  DECL_ARTIFICIAL (decl) = 1;
+  DECL_INITIAL (decl) = error_mark_node;
+ 
+  /* We must force the reference.  */
+  DECL_PRESERVE_P (decl) = 1;
+  OBJCMETA (decl, objc_meta, get_identifier ("V1_CREF"));
+  DECL_CONTEXT (decl) = NULL_TREE;
+  finish_var_decl (decl, exp);
 }
 
 static void
 handle_next_impent (struct imp_entry *impent)
 {
   char buf[BUFSIZE];
-
+  tree decl;
   switch (TREE_CODE (impent->imp_context))
     {
     case CLASS_IMPLEMENTATION_TYPE:
@@ -2303,11 +2327,16 @@ handle_next_impent (struct imp_entry *im
       return;
     }
 
-#ifdef ASM_DECLARE_CLASS_REFERENCE
-  ASM_DECLARE_CLASS_REFERENCE (asm_out_file, buf);
-#else
-  return ; /* NULL build for targets other than Darwin.  */
-#endif
+  /* We build a variable to signal that this TU contains this class metadata.  */
+  decl = build_decl (UNKNOWN_LOCATION,
+		     VAR_DECL, get_identifier (buf), char_type_node);
+  TREE_PUBLIC (decl) = 1;
+  DECL_CONTEXT (decl) = NULL_TREE;
+  OBJCMETA (decl, objc_meta, get_identifier ("V1_CDEF"));
+  TREE_STATIC (decl) = 1;
+  DECL_ARTIFICIAL (decl) = 1;
+  DECL_INITIAL (decl) = error_mark_node;
+  finish_var_decl (decl,  NULL);
 }
 
 static void
Index: gcc/testsuite/lib/prune.exp
===================================================================
--- gcc/testsuite/lib/prune.exp	(revision 171118)
+++ gcc/testsuite/lib/prune.exp	(working copy)
@@ -56,6 +56,9 @@ proc prune_gcc_output { text } {
     regsub -all "(^|\n)\[^\n\]*ld: warning: can't add line info to anonymous symbol\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable:  AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
+
+    # Ignore harmless warnings from Xcode 4.0.
+    regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
     
     #send_user "After:$text\n"
 
Index: gcc/varasm.c
===================================================================
--- gcc/varasm.c	(revision 171118)
+++ gcc/varasm.c	(working copy)
@@ -2016,6 +2016,10 @@ assemble_variable (tree decl, int top_le
   align_variable (decl, dont_output_data);
   set_mem_align (decl_rtl, DECL_ALIGN (decl));
 
+  /* Allow the target to handle the variable output in some special manner.  */
+  if (targetm.asm_out.handled_assemble_variable_p (decl))
+    return;
+
   if (TREE_PUBLIC (decl))
     maybe_assemble_visibility (decl);
 
Index: gcc/config/darwin-protos.h
===================================================================
--- gcc/config/darwin-protos.h	(revision 171118)
+++ gcc/config/darwin-protos.h	(working copy)
@@ -106,6 +106,7 @@ extern void darwin_asm_output_aligned_de
 extern void darwin_asm_output_aligned_decl_common (FILE *, tree, const char *,
 						   unsigned HOST_WIDE_INT, 
 						   unsigned int);
+extern bool darwin_handled_assemble_variable_p (tree);
 
 extern bool darwin_binds_local_p (const_tree);
 extern void darwin_cpp_builtins (struct cpp_reader *);
Index: gcc/config/darwin.c
===================================================================
--- gcc/config/darwin.c	(revision 171118)
+++ gcc/config/darwin.c	(working copy)
@@ -1432,9 +1432,14 @@ darwin_objc1_section (tree decl ATTRIBUT
   else if (!strncmp (p, "V1_CEXT", 7))
     return darwin_sections[objc1_class_ext_section];
 
-  else if (!strncmp (p, "V2_CSTR", 7))
+  else if (!strncmp (p, "V1_CSTR", 7))
     return darwin_sections[objc_constant_string_object_section];
 
+  else if (!strncmp (p, "V1_CREF", 7))
+    return darwin_sections[objc_cls_refs_section];
+  else if (!strncmp (p, "V1_CDEF", 7))
+    return data_section;
+
   return base;
 }
 
@@ -1749,13 +1754,41 @@ darwin_label_is_anonymous_local_objc_nam
   return (!strncmp ((const char *)p, "_OBJC_", 6));
 }
 
-/* LTO support for Mach-O.  */
+/* LTO support for Mach-O.  
+   This version uses three mach-o sections to encapsulate the (unlimited)
+   number of lto sections.
+   
+   __GNU_LTO, __lto_sections  contains the concatented GNU LTO section data.
+   __GNU_LTO, __section_names contains the GNU LTO section names.
+   __GNU_LTO, __section_index contains an array of values that index these.
+
+   viz:
+     <section offset from the start of __GNU_LTO, __lto_sections>,
+     <section length>
+     <name offset from the start of __GNU_LTO, __section_names,
+     <name length>.
+
+   At present, for both m32 and m64 mach-o files each of these fields is
+   represented  by a uint32_t.  This is because, AFAICT, a mach-o object
+   cannot exceed 4Gb because the section_64 offset field is 32bits.
+   
+    uint32_t offset;
+   "offset  An integer specifying the offset to this section in the file."
+   
+   This is very odd.  */
+
+/* Count lto section numbers. */
+static unsigned int lto_section_num = 0;
 
-/* Section names for LTO sections.  */
-static unsigned int lto_section_names_offset = 0;
+/* A vector of information about LTO sections, at present, we only have
+   the name.  TODO: see if we can get the data length somehow.  */
+typedef struct GTY(()) darwin_lto_section_e {
+  const char *sectname;
+} darwin_lto_section_e ;
+DEF_VEC_O(darwin_lto_section_e);
+DEF_VEC_ALLOC_O(darwin_lto_section_e, gc);
 
-/* This is the obstack which we use to allocate the many strings.  */
-static struct obstack lto_section_names_obstack;
+static GTY (()) VEC (darwin_lto_section_e, gc) * lto_section_names;
 
 /* Segment name for LTO sections.  */
 #define LTO_SEGMENT_NAME "__GNU_LTO"
@@ -1763,6 +1796,12 @@ static struct obstack lto_section_names_
 /* Section name for LTO section names section.  */
 #define LTO_NAMES_SECTION "__section_names"
 
+/* Section name for LTO section index section.  */
+#define LTO_INDEX_SECTION "__section_index"
+
+/* Section name for LTO sections section.  */
+#define LTO_SECTS_SECTION "__lto_sections"
+
 /* File to temporarily store LTO data.  This is appended to asm_out_file
    in darwin_end_file.  */
 static FILE *lto_asm_out_file, *saved_asm_out_file;
@@ -1804,37 +1843,37 @@ darwin_asm_named_section (const char *na
 			  unsigned int flags,
 			  tree decl ATTRIBUTE_UNUSED)
 {
-  /* LTO sections go in a special segment __GNU_LTO.  We want to replace the
-     section name with something we can use to represent arbitrary-length
-     names (section names in Mach-O are at most 16 characters long).  */
+  /* LTO sections go in a special section that encapsulates the (unlimited)
+     number of GNU LTO sections within a single mach-o one.  */
   if (strncmp (name, LTO_SECTION_NAME_PREFIX,
 	       strlen (LTO_SECTION_NAME_PREFIX)) == 0)
     {
+      darwin_lto_section_e e;
       /* We expect certain flags to be set...  */
       gcc_assert ((flags & (SECTION_DEBUG | SECTION_NAMED))
 		  == (SECTION_DEBUG | SECTION_NAMED));
 
-      /* Add the section name to the things to output when we end the
-	 current assembler output file.
-	 This is all not very efficient, but that doesn't matter -- this
-	 shouldn't be a hot path in the compiler...  */
-      obstack_1grow (&lto_section_names_obstack, '\t');
-      obstack_grow (&lto_section_names_obstack, ".ascii ", 7);
-      obstack_1grow (&lto_section_names_obstack, '"');
-      obstack_grow (&lto_section_names_obstack, name, strlen (name));
-      obstack_grow (&lto_section_names_obstack, "\\0\"\n", 4);
-
-      /* Output the dummy section name.  */
-      fprintf (asm_out_file, "\t# %s\n", name);
-      fprintf (asm_out_file, "\t.section %s,__%08X,regular,debug\n",
-	       LTO_SEGMENT_NAME, lto_section_names_offset);
-
-      /* Update the offset for the next section name.  Make sure we stay
-	 within reasonable length.  */  
-      lto_section_names_offset += strlen (name) + 1;
-      gcc_assert (lto_section_names_offset > 0
-		  && lto_section_names_offset < ((unsigned) 1 << 31));
-    }
+      /* Switch to our combined section.  */
+      fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
+	       LTO_SEGMENT_NAME, LTO_SECTS_SECTION);
+      /* Output a label for the start of this sub-section.  */
+      fprintf (asm_out_file, "L_GNU_LTO%d:\t# %s\n",
+	       lto_section_num, name);
+      /* We have to jump through hoops to get the values of the intra-section
+         offsets... */
+      fprintf (asm_out_file, "\t.set $GNU$LTO$OFF%d,L_GNU_LTO%d-L_GNU_LTO0\n",
+	       lto_section_num, lto_section_num);
+      fprintf (asm_out_file, "\t.set $GNU$LTO$SIZ%d,L_GNU_LTO%d-L_GNU_LTO%d\n",
+	       lto_section_num, lto_section_num+1, lto_section_num);
+      lto_section_num++;
+      e.sectname = xstrdup (name);
+      /* Keep the names, we'll need to make a table later.
+         TODO: check that we do not revisit sections, that would break 
+         the assumption of how this is done. */
+      if (lto_section_names == NULL)
+        lto_section_names = VEC_alloc (darwin_lto_section_e, gc, 16);
+      VEC_safe_push (darwin_lto_section_e, gc, lto_section_names, &e);
+   }
   else if (strncmp (name, "__DWARF,", 8) == 0)
     darwin_asm_dwarf_section (name, flags, decl);
   else
@@ -2069,6 +2108,7 @@ fprintf (file, "# dadon: %s %s (%llu, %u
      
      For non-zero objects this output is handled by varasm.c.
   */
+  
   if (!size)
     {
       unsigned int l2align = 0;
@@ -2175,7 +2215,8 @@ darwin_emit_objc_zeroed (FILE *fp, tree 
 
   /* We shall declare that zero-sized meta-data are not valid (yet).  */
   gcc_assert (size);
-  fprintf (fp, "\t.align\t%d\n", floor_log2 (align / BITS_PER_UNIT));
+  if (size)
+    fprintf (fp, "\t.align\t%d\n", floor_log2 (align / BITS_PER_UNIT));
 
   /* ... and we let it deal with outputting one byte of zero for them too.  */ 
   darwin_asm_declare_object_name (fp, name, decl);
@@ -2590,6 +2631,51 @@ darwin_assemble_visibility (tree decl, i
 	     "not supported in this configuration; ignored");
 }
 
+/* For certain Objective-C metadata we handle the assembly of the variables
+   here (it must be here, rather than in darwin-c.c to cater for LTO).  When
+   we reference a class we emit a lazy ref, when we have class  metadata
+   (local to a specific object), we emit a tag so that linkage will be
+   satisfied for the class.  */
+
+bool
+darwin_handled_assemble_variable_p (tree decl)
+{
+  tree meta;
+  if (DECL_ATTRIBUTES (decl)
+      && (meta = lookup_attribute ("OBJC1META", DECL_ATTRIBUTES (decl))))
+    {
+      const char *name;
+      rtx decl_rtl, symbol;
+
+      if (TREE_VALUE (meta) == get_identifier ("V1_CREF"))
+	{
+	  tree exp = DECL_INITIAL (decl);
+	  gcc_assert (exp && exp != error_mark_node && TREE_CODE (exp) == ADDR_EXPR);
+	  exp = TREE_OPERAND (exp, 0);
+	  decl_rtl = DECL_RTL (exp);
+	  symbol = XEXP (decl_rtl, 0);
+	  name = XSTR (symbol, 0);
+	  targetm.asm_out.globalize_decl_name (asm_out_file, exp);
+	  fputs ("\t.lazy_reference\t",asm_out_file);
+	  assemble_name (asm_out_file, name);
+	  fputs ("\n",asm_out_file);
+	  return true;
+	}
+      else if (TREE_VALUE (meta) == get_identifier ("V1_CDEF"))
+	{
+	  decl_rtl = DECL_RTL (decl);
+	  symbol = XEXP (decl_rtl, 0);
+	  name = XSTR (symbol, 0);
+	  targetm.asm_out.globalize_decl_name (asm_out_file, decl);
+	  fputs ("\t",asm_out_file);
+	  assemble_name (asm_out_file, name);
+	  fputs (" = 0\n",asm_out_file);
+	  return true;
+	}
+    }
+  return false;
+}
+
 /* VEC Used by darwin_asm_dwarf_section.
    Maybe a hash tab would be better here - but the intention is that this is
    a very short list (fewer than 16 items) and each entry should (ideally, 
@@ -2707,16 +2793,11 @@ darwin_asm_output_dwarf_offset (FILE *fi
   darwin_asm_output_dwarf_delta (file, size, lab, sname);
 }
 
-/* Called from the within the TARGET_ASM_FILE_START for each target. 
-  Initialize the stuff we need for LTO long section names support.  */
+/* Called from the within the TARGET_ASM_FILE_START for each target.  */
 
 void
 darwin_file_start (void)
 {
-  /* We fill this obstack with the complete section text for the lto section
-     names to write in darwin_file_end.  */
-  obstack_init (&lto_section_names_obstack);
-  lto_section_names_offset = 0;
 }
 
 /* Called for the TARGET_ASM_FILE_END hook.
@@ -2727,8 +2808,6 @@ darwin_file_start (void)
 void
 darwin_file_end (void)
 {
-  const char *lto_section_names;
-
   machopic_finish (asm_out_file);
   if (strcmp (lang_hooks.name, "GNU C++") == 0)
     {
@@ -2758,6 +2837,13 @@ darwin_file_end (void)
 	  lto_asm_txt = buf = (char *) xmalloc (n + 1);
 	  while (fgets (lto_asm_txt, n, lto_asm_out_file))
 	    fputs (lto_asm_txt, asm_out_file);
+	  /* Put a termination label and a single termination byte.  */
+	  fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
+		   LTO_SEGMENT_NAME, LTO_SECTS_SECTION);
+	  fprintf (asm_out_file, "L_GNU_LTO%d:\t# end of lto\n",
+		   lto_section_num);
+      /* make sure our termination label stays in this section.  */
+	  fputs ("\t.space\t1\n", asm_out_file);
 	}
 
       /* Remove the temporary file.  */
@@ -2766,21 +2852,50 @@ darwin_file_end (void)
       free (lto_asm_out_name);
     }
 
-  /* Finish the LTO section names obstack.  Don't output anything if
-     there are no recorded section names.  */
-  obstack_1grow (&lto_section_names_obstack, '\0');
-  lto_section_names = XOBFINISH (&lto_section_names_obstack, const char *);
-  if (strlen (lto_section_names) > 0)
+  /* Output the names and indices.  */
+  if (lto_section_names && VEC_length (darwin_lto_section_e, lto_section_names))
     {
-      fprintf (asm_out_file,
-	       "\t.section %s,%s,regular,debug\n",
+      int count;
+      darwin_lto_section_e *ref;
+      /* For now, we'll make the offsets 4 bytes and unaligned - we'll fix
+         the latter up ourselves. */
+      const char *op = integer_asm_op (4,0); 
+
+      /* Emit the names. */
+      fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
 	       LTO_SEGMENT_NAME, LTO_NAMES_SECTION);
-      fprintf (asm_out_file,
-	       "\t# Section names in %s are offsets into this table\n",
-	       LTO_SEGMENT_NAME);
-      fprintf (asm_out_file, "%s\n", lto_section_names);
+      fputs ("L_GNU_LTO_NAMES:\n", asm_out_file);
+      FOR_EACH_VEC_ELT (darwin_lto_section_e, lto_section_names, count, ref)
+	{
+	  fprintf (asm_out_file, "L_GNU_LTO_NAME%d:\n", count);
+         /* We have to jump through hoops to get the values of the intra-section
+            offsets... */
+	  fprintf (asm_out_file, 
+		   "\t.set $GNU$LTO$NOFF%d,L_GNU_LTO_NAME%d-L_GNU_LTO_NAME0\n",
+		   count, count);
+	  fprintf (asm_out_file,
+		   "\t.set $GNU$LTO$NSIZ%d,L_GNU_LTO_NAME%d-L_GNU_LTO_NAME%d\n",
+		   count, count+1, count);
+	  fprintf (asm_out_file, "\t.asciz\t\"%s\"\n", ref->sectname);
+	}
+      fprintf (asm_out_file, "L_GNU_LTO_NAME%d:\t# end\n", lto_section_num);
+      /* make sure our termination label stays in this section.  */
+      fputs ("\t.space\t1\n", asm_out_file);
+
+      /* Emit the Index. */
+      fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
+	       LTO_SEGMENT_NAME, LTO_INDEX_SECTION);
+      fputs ("\t.align\t2\n", asm_out_file);
+      fputs ("# Section offset, Section length, Name offset, Name length\n", asm_out_file);
+      FOR_EACH_VEC_ELT (darwin_lto_section_e, lto_section_names, count, ref)
+	{
+	  fprintf (asm_out_file, "%s $GNU$LTO$OFF%d\t# %s\n",
+		   op, count, ref->sectname);
+	  fprintf (asm_out_file, "%s $GNU$LTO$SIZ%d\n", op, count);
+	  fprintf (asm_out_file, "%s $GNU$LTO$NOFF%d\n", op, count);
+	  fprintf (asm_out_file, "%s $GNU$LTO$NSIZ%d\n", op, count);
+	}
     }
-  obstack_free (&lto_section_names_obstack, NULL);
 
   /* If we have section anchors, then we must prevent the linker from
      re-arranging data.  */
Index: gcc/config/darwin.h
===================================================================
--- gcc/config/darwin.h	(revision 171118)
+++ gcc/config/darwin.h	(working copy)
@@ -675,6 +675,9 @@ extern GTY(()) section * darwin_sections
 #undef	TARGET_ASM_SELECT_SECTION
 #define TARGET_ASM_SELECT_SECTION machopic_select_section
 
+#undef	TARGET_ASM_HANDLED_ASSEMBLE_VARIABLE_P
+#define TARGET_ASM_HANDLED_ASSEMBLE_VARIABLE_P darwin_handled_assemble_variable_p
+
 #undef	TARGET_ASM_FUNCTION_SECTION
 #define TARGET_ASM_FUNCTION_SECTION darwin_function_section
 

Native configuration is x86_64-apple-darwin10.7.0

		=== g++ tests ===


Running target unix/-m32
WARNING: g++.dg/ext/label13.C compilation failed to produce executable

		=== g++ Summary for unix/-m32 ===

# of expected passes		26678
# of expected failures		162
# of unsupported tests		178

Running target unix/-m64
WARNING: g++.dg/ext/label13.C compilation failed to produce executable
FAIL: g++.dg/tree-prof/partition1.C compilation,  -g  -fprofile-use
UNRESOLVED: g++.dg/tree-prof/partition1.C execution,    -g  -fprofile-use
FAIL: g++.dg/tree-prof/partition1.C compilation,  -O0  -fprofile-use
UNRESOLVED: g++.dg/tree-prof/partition1.C execution,    -O0  -fprofile-use
FAIL: g++.dg/tree-prof/partition1.C compilation,  -O1  -fprofile-use
UNRESOLVED: g++.dg/tree-prof/partition1.C execution,    -O1  -fprofile-use
FAIL: g++.dg/tree-prof/partition1.C compilation,  -O2  -fprofile-use
UNRESOLVED: g++.dg/tree-prof/partition1.C execution,    -O2  -fprofile-use
FAIL: g++.dg/tree-prof/partition1.C compilation,  -O3  -fprofile-use
UNRESOLVED: g++.dg/tree-prof/partition1.C execution,    -O3  -fprofile-use
FAIL: g++.dg/tree-prof/partition1.C compilation,  -O3 -g  -fprofile-use
UNRESOLVED: g++.dg/tree-prof/partition1.C execution,    -O3 -g  -fprofile-use
FAIL: g++.dg/tree-prof/partition1.C compilation,  -Os  -fprofile-use
UNRESOLVED: g++.dg/tree-prof/partition1.C execution,    -Os  -fprofile-use

		=== g++ Summary for unix/-m64 ===

# of expected passes		26897
# of unexpected failures	7
# of expected failures		162
# of unresolved testcases	7
# of unsupported tests		376

		=== g++ Summary ===

# of expected passes		53575
# of unexpected failures	7
# of expected failures		324
# of unresolved testcases	7
# of unsupported tests		554
/sw/src/fink.build/gcc46-4.6.0-1000/darwin_objdir/gcc/testsuite/g++/../../g++  version 4.6.0 20110317 (prerelease) (GCC) 

		=== gcc tests ===


Running target unix/-m32

		=== gcc Summary for unix/-m32 ===

# of expected passes		74469
# of expected failures		214
# of unsupported tests		1371

Running target unix/-m64
FAIL: gcc.dg/matrix/transpose-3.c execution,    -fprofile-use -fipa-matrix-reorg -fdump-ipa-matrix-reorg -O3 -fwhole-program
FAIL: gcc.dg/tree-prof/bb-reorg.c compilation,  -fprofile-use -D_PROFILE_USE
UNRESOLVED: gcc.dg/tree-prof/bb-reorg.c execution,    -fprofile-use -D_PROFILE_USE
FAIL: gcc.dg/tree-prof/pr34999.c compilation,  -fprofile-use -D_PROFILE_USE
UNRESOLVED: gcc.dg/tree-prof/pr34999.c execution,    -fprofile-use -D_PROFILE_USE
FAIL: gcc.dg/tree-prof/pr45354.c compilation,  -fprofile-use -D_PROFILE_USE
UNRESOLVED: gcc.dg/tree-prof/pr45354.c execution,    -fprofile-use -D_PROFILE_USE

		=== gcc Summary for unix/-m64 ===

# of expected passes		74603
# of unexpected failures	4
# of expected failures		215
# of unresolved testcases	3
# of unsupported tests		1743

		=== gcc Summary ===

# of expected passes		149072
# of unexpected failures	4
# of expected failures		429
# of unresolved testcases	3
# of unsupported tests		3114
/sw/src/fink.build/gcc46-4.6.0-1000/darwin_objdir/gcc/xgcc  version 4.6.0 20110317 (prerelease) (GCC) 

		=== gfortran tests ===


Running target unix/-m32

		=== gfortran Summary for unix/-m32 ===

# of expected passes		38297
# of expected failures		53
# of unsupported tests		209

Running target unix/-m64

		=== gfortran Summary for unix/-m64 ===

# of expected passes		38584
# of expected failures		53
# of unsupported tests		71

		=== gfortran Summary ===

# of expected passes		76881
# of expected failures		106
# of unsupported tests		280
/sw/src/fink.build/gcc46-4.6.0-1000/darwin_objdir/gcc/testsuite/gfortran/../../gfortran  version 4.6.0 20110317 (prerelease) (GCC) 

		=== obj-c++ tests ===


Running target unix/-m32
FAIL: obj-c++.dg/lto/trivial-1 obj_cpp_lto_trivial-1_0.o-obj_cpp_lto_trivial-1_0.o link, -O0 -flto -flto-partition=none -fnext-runtime
UNRESOLVED: obj-c++.dg/lto/trivial-1 obj_cpp_lto_trivial-1_0.o-obj_cpp_lto_trivial-1_0.o execute -O0 -flto -flto-partition=none -fnext-runtime
FAIL: obj-c++.dg/lto/trivial-1 obj_cpp_lto_trivial-1_0.o-obj_cpp_lto_trivial-1_0.o link, -O2 -flto -flto-partition=none -fnext-runtime
UNRESOLVED: obj-c++.dg/lto/trivial-1 obj_cpp_lto_trivial-1_0.o-obj_cpp_lto_trivial-1_0.o execute -O2 -flto -flto-partition=none -fnext-runtime
FAIL: obj-c++.dg/torture/trivial.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/trivial.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O0  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O1  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O2  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O3 -fomit-frame-pointer  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O3 -g  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -Os  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O2 -flto -flto-partition=none  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O2 -flto  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-3.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-3.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-4.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-7.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-7.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-8.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-8.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/string1.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/string1.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-1.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-2.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-3.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-3.mm  -O2 -flto  -fnext-runtime (test for excess errors)

		=== obj-c++ Summary for unix/-m32 ===

# of expected passes		3004
# of unexpected failures	25
# of expected failures		2
# of unresolved testcases	2
# of unsupported tests		68

Running target unix/-m64
FAIL: obj-c++.dg/torture/trivial.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/trivial.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O0  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O1  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O2  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O3 -fomit-frame-pointer  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O3 -g  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -Os  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O2 -flto -flto-partition=none  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-1.mm  -O2 -flto  -fnext-runtime execution test
FAIL: obj-c++.dg/torture/strings/const-cfstring-3.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-3.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-4.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-7.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-7.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-8.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/const-str-8.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/string1.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/strings/string1.mm  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-1.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-2.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-3.mm  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: obj-c++.dg/torture/tls/thr-init-3.mm  -O2 -flto  -fnext-runtime (test for excess errors)

		=== obj-c++ Summary for unix/-m64 ===

# of expected passes		2958
# of unexpected failures	23
# of expected failures		19
# of unsupported tests		73

		=== obj-c++ Summary ===

# of expected passes		5962
# of unexpected failures	48
# of expected failures		21
# of unresolved testcases	2
# of unsupported tests		141
/sw/src/fink.build/gcc46-4.6.0-1000/darwin_objdir/gcc/testsuite/obj-c++/../../g++  version 4.6.0 20110317 (prerelease) (GCC) 

		=== objc tests ===


Running target unix/-m32
FAIL: objc.dg/lto/trivial-1 objc_lto_trivial-1_0.o-objc_lto_trivial-1_0.o link, -O0 -flto -flto-partition=none -fnext-runtime
UNRESOLVED: objc.dg/lto/trivial-1 objc_lto_trivial-1_0.o-objc_lto_trivial-1_0.o execute -O0 -flto -flto-partition=none -fnext-runtime
FAIL: objc.dg/lto/trivial-1 objc_lto_trivial-1_0.o-objc_lto_trivial-1_0.o link, -O2 -flto -flto-partition=none -fnext-runtime
UNRESOLVED: objc.dg/lto/trivial-1 objc_lto_trivial-1_0.o-objc_lto_trivial-1_0.o execute -O2 -flto -flto-partition=none -fnext-runtime
FAIL: objc.dg/torture/forward-1.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/trivial.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/trivial.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O0  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O1  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O2  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O3 -fomit-frame-pointer  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O3 -g  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -Os  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O2 -flto -flto-partition=none  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O2 -flto  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-4.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-7.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-7.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-8.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-8.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string1.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string1.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string2.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string2.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string3.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string4.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string4.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init-2.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init-3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init-3.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)

		=== objc Summary for unix/-m32 ===

# of expected passes		5921
# of unexpected failures	32
# of expected failures		6
# of unresolved testcases	2
# of unsupported tests		86

Running target unix/-m64
FAIL: objc.dg/torture/trivial.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/trivial.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O0  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O1  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O2  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O3 -fomit-frame-pointer  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O3 -g  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -Os  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O2 -flto -flto-partition=none  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-1.m  -O2 -flto  -fnext-runtime execution test
FAIL: objc.dg/torture/strings/const-cfstring-3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-4.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-7.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-7.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-8.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/const-str-8.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string1.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string1.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string2.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string2.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string3.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string4.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/strings/string4.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init-2.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init-3.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init-3.m  -O2 -flto  -fnext-runtime (test for excess errors)
FAIL: objc.dg/torture/tls/thr-init.m  -O2 -flto -flto-partition=none  -fnext-runtime (test for excess errors)

		=== objc Summary for unix/-m64 ===

# of expected passes		5848
# of unexpected failures	29
# of expected failures		24
# of unsupported tests		102

		=== objc Summary ===

# of expected passes		11769
# of unexpected failures	61
# of expected failures		30
# of unresolved testcases	2
# of unsupported tests		188
/sw/src/fink.build/gcc46-4.6.0-1000/darwin_objdir/gcc/xgcc  version 4.6.0 20110317 (prerelease) (GCC) 

		=== libffi tests ===


Running target unix/-m32

		=== libffi Summary for unix/-m32 ===

# of expected passes		1634
# of expected failures		10
# of unsupported tests		15

Running target unix/-m64

		=== libffi Summary for unix/-m64 ===

# of expected passes		1634
# of expected failures		10
# of unsupported tests		15

		=== libffi Summary ===

# of expected passes		3268
# of expected failures		20
# of unsupported tests		30
		=== libgomp tests ===


Running target unix/-m32

		=== libgomp Summary for unix/-m32 ===

# of expected passes		2584
# of unsupported tests		2

Running target unix/-m64

		=== libgomp Summary for unix/-m64 ===

# of expected passes		2584
# of unsupported tests		2

		=== libgomp Summary ===

# of expected passes		5168
# of unsupported tests		4
		=== libjava tests ===


Running target unix/-m32
FAIL: PR16923.c compilation

		=== libjava Summary for unix/-m32 ===

# of expected passes		2572
# of unexpected failures	1

Running target unix/-m64
FAIL: Throw_2 execution - source compiled test
FAIL: Throw_2 -findirect-dispatch execution - source compiled test
FAIL: Throw_2 -O3 execution - source compiled test
FAIL: Throw_2 -O3 -findirect-dispatch execution - source compiled test

		=== libjava Summary for unix/-m64 ===

# of expected passes		2566
# of unexpected failures	4
# of untested testcases		4

		=== libjava Summary ===

# of expected passes		5138
# of unexpected failures	5
# of untested testcases		4
		=== libstdc++ tests ===


Running target unix/-m32

		=== libstdc++ Summary for unix/-m32 ===

# of expected passes		6982
# of expected failures		81
# of unsupported tests		660

Running target unix/-m64
WARNING: program timed out.
FAIL: tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc execution test

		=== libstdc++ Summary for unix/-m64 ===

# of expected passes		6979
# of unexpected failures	1
# of expected failures		81
# of unsupported tests		661

		=== libstdc++ Summary ===

# of expected passes		13961
# of unexpected failures	1
# of expected failures		162
# of unsupported tests		1321

Compiler version: 4.6.0 20110317 (prerelease) (GCC) 
Platform: x86_64-apple-darwin10.7.0
configure flags: --prefix=/sw --prefix=/sw/lib/gcc4.6 --mandir=/sw/share/man --infodir=/sw/lib/gcc4.6/info --with-build-config=bootstrap-lto --enable-stage1-languages=c,lto --enable-languages=c,c++,fortran,lto,objc,obj-c++,java --with-gmp=/sw --with-libiconv-prefix=/sw --with-ppl=/sw --with-cloog=/sw --with-mpc=/sw --with-system-zlib --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --program-suffix=-fsf-4.6 --enable-checking=yes --enable-cloog-backend=isl


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