Between rev 163993 and 164013, mainline bootstrap started failing on Solaris 2
SPARC.  The stage2 libgcc fails to configure because the stage2 xgcc gets a

% ../../xgcc -B../../gcc/ -c -g -O2 conftest.c
Bus Error

Running xgcc under gdb, I find that the crash happens here:

Program received signal SIGSEGV, Segmentation fault.
generate_option_input_file (argc=<value optimized out>, argv=<value optimized
out>, lang_mask=<value optimized out>, decoded_options=0xffbff394,
decoded_options_count=0xffbff390) at
1: x/i $pc
=> 0x28584 <decode_cmdline_options_to_array+168>:       clrx  [ %l0 + 0x18 ]

%lo+0x18 isn't 8-byte aligned at that point.

Comparing the assembler code between the working and failing versions, I find
that the following change has happened:

     decode_cmdline_options_to_array+0xa4:   c0 24 20 14  clr       [%l0 +
-    decode_cmdline_options_to_array+0xa8:   c0 24 20 18  clr       [%l0 +
-    decode_cmdline_options_to_array+0xac:   c0 24 20 1c  clr       [%l0 +
-    decode_cmdline_options_to_array+0xb0:   c4 24 20 24  st        %g2, [%l0 +
+    decode_cmdline_options_to_array+0xa8:   c0 74 20 18  clrx      [%l0 +
+    decode_cmdline_options_to_array+0xac:   c4 24 20 24  st        %g2, [%l0 +

i.e. two clr insns (which are ok with 4-byte alignment) have been replaced by
a single clrx.

I'll start a reghunt to find the culprit patch.

           Summary: [4.6 regression] SIGBUS in generate_option_input_file on
                    Solaris 2/SPARC
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: bootstrap
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ro at gcc dot gnu dot org
 GCC build triplet: sparc-sun-solaris2*
  GCC host triplet: sparc-sun-solaris2*
GCC target triplet: sparc-sun-solaris2*

Reply via email to