https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84319

            Bug ID: 84319
           Summary: [8 regression] Location views break bootstrap with
                    Solaris/SPARC as
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ro at gcc dot gnu.org
                CC: aoliva at gcc dot gnu.org
  Target Milestone: ---
              Host: sparc-sun-solaris2.*
            Target: sparc-sun-solaris2.*
             Build: sparc-sun-solaris2.*

The location views patch breaks bootstrap on Solaris/SPARC with the native as.

The picture is a bit complicated because some builds fail earlier due to the
SEGV
described in PR debug/84317.  Here's the overview:

                as/ld   gas/ld  gas/gld as/ld-64 gas/ld-64

  s10           segv    segv    segv    diff     ok
  s11           diff    segv    segv    diff     ok
  s11.4         ok      ok      ok      diff     ???

(s11 is Solaris 11.3, s11.4 is Solaris 11.4 Beta)

The `diff' cases fail like this (e.g. compiling the 64-bit
libstdc++-v3/src/c++11/iostream-inst.cc) with -fPIC:

/usr/ccs/bin/as: "iostream-inst.s", line 26808: error: can't compute difference
between symbols in different segments

        .uahalf .LLM93-.LLM92

  .LLM93:
.text._ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev%_ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev
  .LLM92:
.text._ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev%_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev

/usr/ccs/bin/as: "iostream-inst.s", line 26813: error: can't compute difference
between symbols in different segments

        .uahalf .LLM94-.LLM93

  .LLM94: .text._ZNSdD1Ev%_ZNSdD1Ev

  with -dA:

/usr/ccs/bin/as: "iostream-inst.s", line 30361: error: can't compute difference
between symbols in different segments

        .uaxword        .LLM92
        .byte   0x1     ! copy line 856
        .byte   0x5     ! column 27
        .byte   0x1b    ! uleb128 0x1b; 27
        .byte   0x9     ! fixed advance PC, increment view to 1
        .uahalf .LLM93-.LLM92   ! from *.LLM92 to *.LLM93

The last line is from dwarf2out.c (output_one_line_info_table) using
dw2_asm_output_delta, which has a fat comment about targets that cannot compute
the difference between symbols in different sections.

Adding -gno-variable-location-views to the compilation makes it succeed.

  Rainer
The last line is from

Reply via email to