Hi Iain, >> unfortunately, Solaris/SPARC results are miserable: >> >> * About 1600 Go tests FAIL, spread across go.*, libgo, and gotools, all >> in the same way, it seems: >> >> +FAIL: go.go-torture/execute/array-1.go execution, -O0 >> >> fatal error: DWARF underflow in .debug_line at 3266879 >> >> goroutine 1 [running, locked to thread]: >> fatal error: DWARF underflow in .debug_line at 3266879 >> panic during panic >> >> goroutine 1 [running, locked to thread]: >> fatal error: DWARF underflow in .debug_line at 3266879 >> stack trace unavailable > > go is stil not implemented for Darwin, so I have no comparison there.
I suspect this is not about Go in particular, but about a buggy assembler ;-) The Solaris as track record isn't really the best, unfortunately. I just had a quick look at the stacktrace at the failure point Thread 2 hit Breakpoint 1, 0xfeb60cc8 in runtime.throw (s=...) at /vol/gcc/src/hg/master/local/libgo/go/runtime/internal/sys/intrinsics_common.go:33837 33837 /vol/gcc/src/hg/master/local/libgo/go/runtime/internal/sys/intrinsics_common.go: No such file or directory. (gdb) where #0 0xfeb60cc8 in runtime.throw (s=...) at /vol/gcc/src/hg/master/local/libgo/go/runtime/internal/sys/intrinsics_common.go:33837 #1 0xfe6a1c0c in runtime_throw (s=0x64d100 "DWARF underflow in .debug_line at 3266879") at /vol/gcc/src/hg/master/local/libgo/runtime/panic.c:13 #2 0xfe69ea18 in error_callback (data=0x64d9e0, errnum=0, msg=0x64d100 "DWARF underflow in .debug_line at 3266879") at /vol/gcc/src/hg/master/local/libgo/runtime/go-callers.c:68 #3 error_callback (data=0x64d9e0, msg=0x64d100 "DWARF underflow in .debug_line at 3266879", errnum=0) at /vol/gcc/src/hg/master/local/libgo/runtime/go-callers.c:211 #4 0xfecd22d0 in dwarf_buf_error (msg=<optimized out>, buf=<optimized out>) at /vol/gcc/src/hg/master/local/libbacktrace/dwarf.c:16103 #5 require (count=<optimized out>, buf=<optimized out>) at /vol/gcc/src/hg/master/local/libbacktrace/dwarf.c:433 #6 advance (count=<optimized out>, buf=<optimized out>) at /vol/gcc/src/hg/master/local/libbacktrace/dwarf.c:446 #7 read_line_program (vec=<optimized out>, line_buf=<optimized out>, hdr=<optimized out>, u=<optimized out>, ddata=<optimized out>, state=<optimized out>) at /vol/gcc/src/hg/master/local/libbacktrace/dwarf.c:2819 #8 read_line_info (lines_count=<synthetic pointer>, lines=<synthetic pointer>, hdr=<error reading variable: DWARF expression error: ran off end of buffer reading sleb128 value>, u=<optimized out>, data=<optimized out>, error_callback=<optimized out>, ddata=0xed188510, state=0xff188000) at /vol/gcc/src/hg/master/local/libbacktrace/dwarf.c:2951 #9 dwarf_lookup_pc (state=0xff188000, ddata=0xed188510, pc=<optimized out>, callback=<optimized out>, error_callback=<optimized out>, data=<optimized out>, found=<optimized out>) at /vol/gcc/src/hg/master/local/libbacktrace/dwarf.c:3732 #10 0xfecd3300 in dwarf_fileline (state=0xff188000, pc=4273447611, callback=0xfe69ec04 <callback>, error_callback=0xfe69e9e4 <error_callback>, data=0x64d9e0) at /vol/gcc/src/hg/master/local/libbacktrace/dwarf.c:20031 #11 0xfecd4160 in backtrace_pcinfo (state=0xff188000, pc=4273447611, callback=0xfe69ec04 <callback>, error_callback=0xfe69e9e4 <error_callback>, data=0x64d9e0) at /vol/gcc/src/hg/master/local/libbacktrace/fileline.c:973 #12 0xfecd4714 in unwind (context=<optimized out>, vdata=0x64d964) at /vol/gcc/src/hg/master/local/libbacktrace/backtrace.c:91 #13 0xff13c8d4 in _Unwind_Backtrace (trace=0xfecd4688 <unwind>, trace_argument=0x64d964) at /builds2/ulhg/nightly_85/components/gcc10/gcc-10.2.0/libgcc/unwind.inc:307 #14 0xfecd479c in backtrace_full (state=0xff188000, skip=0, callback=0xfe69ec04 <callback>, error_callback=0xfe69e9e4 <error_callback>, data=0x64d9e0) at /vol/gcc/src/hg/master/local/libbacktrace/backtrace.c:127 [...] which shows that the problem is detected in the depths of libbacktrace's DWARF reader. There's something completely off in places, like line numbers well beyond the end of dwarf.c. TBH, I don't really feel like diving into the innards of libbacktrace and DWARF at this point to investigate. >> All this happens for both 32 and 64-bit tests. >> >> To ascertain that this is really the leb128 patch, I've reverted it in >> my tree and reran the bootstrap: all those failures are gone. >> >> So without further investigation, we cannot use the leb128 directives >> with Solaris/SPARC as. > > I think Andrew was running GCN (not sure of the results there) > > - but, I suppose that the simplest modification is to do > > elif … target is darwin > > and make it so that other (non-GNU-as) platforms have to opt in. Agreed: that's certainly the safest option given that we're in stage3. While it would be nice to be able to use the leb128 directives, I wouldn't consider this crucial. > I’ll make a version that does this and test it locally. Great, thanks. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University