[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Hurd port for gcc-8 go PATCH 1-3(15)

From: Svante Signell
Subject: Hurd port for gcc-8 go PATCH 1-3(15)
Date: Sat, 11 Nov 2017 00:07:49 +0100


Attached are patches to enable gccgo to build properly on Debian
GNU/Hurd on gcc-8 (8-8-20171108-1).

The first two patches are Debian-specific:
Enable build of gccgo for GNU/Hurd:
* debian_rules.defs.diff
Define patches for the generated series file:
* debian_rules.patch.diff

The third enables split-stack support:
* src_gcc_config_i386_gnu.h.diff

The test suite results are as follows:

                === go Summary ===

# of expected passes            7359
# of unexpected failures        13
# of expected failures          1
# of untested testcases         7
# of unsupported tests          2

                === libgo Summary ===

# of expected passes            128
# of unexpected failures        27

Most failing go tests and more than half of the libgo tests are runtime errors
probably due to exception handling not working as expected, stopping execution
with SIGSEGV. These issues are also present in  the gcc-6 port (where libgo is
implemented with more C code) and might be due to issues in gnumach/hurd/glibc
yet to be solved.

Another large group of tests, mainly in libgo, fails with SIGILL. The reason for
these failures are also currently unknown. Maybe it is still some more things to
address with the port, but the cause can also be due to the above. Unfortunately
gdb and rpctrace are not especially usable, the former due to hangs, and the
second due to bugs in multi-thread support.

Another issue is that /proc/self/exe has to return an absolute path for the
built program go-7 to execute properly. This is solved by a pending patch for
glibc in Debian and will be available in the next upload of glibc-2.24.
Adding to this, the executable ./build/gotools/go does work displaying the help
text, but e.g. ./build/gotools/go env exits with a SIGILL: Illegal instruction.

Furthermore, since more code is written in go the previous routine
src/libgo/rutime/netpoll_select.c has to be rewritten in go. The supplied file
src/libgo/go/runtime/netpoll_gnu.go is merely a stub for now and has to be
implemented using either select or poll since neither epoll or kqueue or exists
in GNU/Hurd. I'm currently working on an implementation using poll(2). 

Nevertheless, it seems like not so much is left for gccgo working
properly on GNU/Hurd, as for gcc-6. However, since I'm currently stuck, having
spent a lot of time debugging, it is time to hand over to more people taking a
look at this port.

More detailed information on specific issues will be supplied on request.


Attachment: debian_rules.defs.diff
Description: Text Data

Attachment: debian_rules.patch.diff
Description: Text Data

Attachment: src_gcc_config_i386_gnu.h.diff
Description: Text Data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]