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