This is the mail archive of the
gcc-testresults@gcc.gnu.org
mailing list for the GCC project.
Results for 4.6.0 20110319 (prerelease) (GCC) testsuite on x86_64-apple-darwin10.7.0
- From: Jack Howarth <howarth at bromo dot med dot uc dot edu>
- To: gcc-testresults at gcc dot gnu dot org
- Date: Sun, 20 Mar 2011 08:34:17 -0400
- Subject: Results for 4.6.0 20110319 (prerelease) (GCC) testsuite on x86_64-apple-darwin10.7.0
gcc-4_6-branch at r171176 built against GMP 5.0.1, MPFR 3.0.0 and MPC2 0.9 using Xcode 4.0 with...
http://gcc.gnu.org/ml/gcc-bugs/2011-03/msg02098.html
http://gcc.gnu.org/ml/gcc-bugs/2011-03/msg02101.html
and
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,
+ <o_sect_offset, <o_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 (<o_section_names_obstack, '\t');
- obstack_grow (<o_section_names_obstack, ".ascii ", 7);
- obstack_1grow (<o_section_names_obstack, '"');
- obstack_grow (<o_section_names_obstack, name, strlen (name));
- obstack_grow (<o_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 (<o_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 (<o_section_names_obstack, '\0');
- lto_section_names = XOBFINISH (<o_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 (<o_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
tive 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 20110319 (prerelease) (GCC)
=== gcc tests ===
Running target unix/-m32
=== gcc Summary for unix/-m32 ===
# of expected passes 74477
# 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 74611
# of unexpected failures 4
# of expected failures 215
# of unresolved testcases 3
# of unsupported tests 1743
=== gcc Summary ===
# of expected passes 149088
# 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 20110319 (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 20110319 (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 20110319 (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 20110319 (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
=== libstdc++ Summary for unix/-m64 ===
# of expected passes 6980
# of expected failures 81
# of unsupported tests 661
=== libstdc++ Summary ===
# of expected passes 13962
# of expected failures 162
# of unsupported tests 1321
Compiler version: 4.6.0 20110319 (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
`