summaryrefslogtreecommitdiff
path: root/open_issues
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2016-02-22 12:48:19 +0100
committerThomas Schwinge <thomas@codesourcery.com>2016-02-22 12:48:19 +0100
commitd826147859b1ed79a2dca4861aafe65532ab52ce (patch)
tree7fc20fa01ed7c2b5c342cc483822c3fd870e7fd5 /open_issues
parentbfe350dabc00d8f3b281837cefdea7d909e00f7a (diff)
open_issues/gcc: bd5bb665eb00598666a8162c2440410a51eb9e7e (2016-02-20)
Diffstat (limited to 'open_issues')
-rw-r--r--open_issues/gcc.mdwn403
-rw-r--r--open_issues/gccgo.mdwn109
-rw-r--r--open_issues/gnat.mdwn170
3 files changed, 658 insertions, 24 deletions
diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn
index 8fef7e7f..bf07de56 100644
--- a/open_issues/gcc.mdwn
+++ b/open_issues/gcc.mdwn
@@ -30,12 +30,12 @@ example. Especially all the compiler magic is all the same.
git checkout reviewed
git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefix=./ --word-diff --color --find-renames --ignore-space-change ..upstream/trunk | awk '/^(\x1b\[[0-9]+m)?diff/ { c = " " $0; } /^(\x1b\[[0-9]+m)?@@/ { print c; } { print; }' | less
-i
-/^---.*/([^.]*|.*\.texi.*|[^/]*gnu[^/]*|libgo/go/(net/sock_bsd\.go|syscall/exec_bsd\.go|syscall/libcall_posix\.go))$|hurd|linux|nacl|nptl|glibc($|[^x]|x[^x]|x$)|gs:|dg-runtest
+/^---.*/([^.]*|.*\.texi.*|[^/]*gnu[^/]*|libgo/go/(net/sock_bsd\.go|syscall/exec_bsd\.go|syscall/libcall_posix\.go))$|hurd|linux|nacl|nptl|glibc($|[^x]|x[^x]|x$)|gs:|seg_gs|seg_tls
-->
Last reviewed up to the Git mirror's commit
-c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
+bd5bb665eb00598666a8162c2440410a51eb9e7e (2016-02-20).
<http://gcc.gnu.org/install/configure.html> has documentation for the
`configure` switches.
@@ -286,6 +286,20 @@ c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
[[!GCC_PR 57851 desc="[patch] unwinding via signal trampoline for
kfreebsd*-gnu"]].
+ * `unwind-dw2-fde-dip.c`
+
+ #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
+ && defined(TARGET_DL_ITERATE_PHDR) \
+ {+&& defined(__linux__)+}
+ {+# define USE_PT_GNU_EH_FRAME+}
+ {+#endif+}
+
+ {+#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \+}
+ {+ && defined(TARGET_DL_ITERATE_PHDR) \+}
+ && (defined(__DragonFly__) || defined(__FreeBSD__))
+ # define ElfW __ElfN
+ # define USE_PT_GNU_EH_FRAME
+
* `libitm`
TODO:
@@ -294,6 +308,167 @@ c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
* `liboffloadmic`
+ * `libgomp`
+
+ * `testsuite/libgomp.c/affinity-1.c`
+
+ * Check if linker supports -pie option with copy reloc
+
+ diff --git ./gcc/configure.ac ./gcc/configure.ac
+ {+AC_MSG_CHECKING(linker PIE support with copy reloc)+}
+ {+gcc_cv_ld_pie_copyreloc=no+}
+ {+if test $gcc_cv_ld_pie = yes ; then+}
+ {+ if test $in_tree_ld = yes ; then+}
+ {+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then+}
+ {+ gcc_cv_ld_pie_copyreloc=yes+}
+ {+ fi+}
+ {+ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then+}
+ {+ # Check if linker supports -pie option with copy reloc+}
+ {+ case "$target" in+}
+ {+ i?86-*-linux* | x86_64-*-linux*)+}
+ {+[...]+}
+
+ diff --git ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-1.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-2.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c ./gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c
+ @@ -0,0 +1,14 @@
+ {+/* [...] */+}
+ {+/* { dg-do compile { target *-*-linux* } } */+}
+ {+/* { dg-require-effective-target pie_copyreloc } */+}
+ {+/* { dg-options "-O2 -fpie" } */+}
+
+ -checking linker PIE support with copy reloc... yes
+ +checking linker PIE support with copy reloc... no
+
+ * Testsuite
+
+ diff --git ./gcc/testsuite/gcc.target/i386/pr65248-1.c ./gcc/testsuite/gcc.target/i386/pr65248-1.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr65248-2.c ./gcc/testsuite/gcc.target/i386/pr65248-2.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr65248-3.c ./gcc/testsuite/gcc.target/i386/pr65248-3.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr65248-4.c ./gcc/testsuite/gcc.target/i386/pr65248-4.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr67215-1.c ./gcc/testsuite/gcc.target/i386/pr67215-1.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr67215-2.c ./gcc/testsuite/gcc.target/i386/pr67215-2.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr67215-3.c ./gcc/testsuite/gcc.target/i386/pr67215-3.c
+ @@ -0,0 +1,17 @@
+ {+/* { dg-do compile { target *-*-linux* } } */+}
+ {+/* { dg-options "-O2 -fpic" } */+}
+
+ diff --git ./gcc/testsuite/gcc.target/i386/pr32219-9.c ./gcc/testsuite/gcc.target/i386/pr32219-9.c
+ @@ -0,0 +1,16 @@
+ {+/* { dg-do compile { target *-*-linux* } } */+}
+ {+/* { dg-options "-O2 -fpie" } */+}
+
+ diff --git ./gcc/testsuite/gcc.target/i386/pr63495.c ./gcc/testsuite/gcc.target/i386/pr63495.c
+ @@ -0,0 +1,6 @@
+ {+/* PR c/63495 */+}
+ {+/* { dg-do compile { target { i?86-*-linux* x86_64-*-linux* } } } */+}
+
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-1.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-2.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-3.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-4.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-6.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-7.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-8.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-9.c
+ @@ -0,0 +1,13 @@
+ {+/* { dg-do compile { target *-*-linux* } } */+}
+
+ gcc/testsuite/c-c++-common/pr37743.c
+ gcc/testsuite/gcc.dg/iec-559-macros-9.c
+ gcc/testsuite/gcc.dg/pg-override.c
+ gcc/testsuite/gcc.dg/pg.c
+ gcc/testsuite/gcc.target/i386/fentry-override.c
+ gcc/testsuite/gcc.target/i386/fentry.c
+ gcc/testsuite/gcc.target/i386/struct-size.c
+ Linux?
+
+ libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/cons/1.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/cons/2.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/cons/3.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/cons/4.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/locking/1.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/locking/2.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/1.cc
+ libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/2.cc
+ libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/1.cc
+ libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/1.cc
+ libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
+ libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
+ libstdc++-v3/testsuite/30_threads/shared_mutex/cons/1.cc
+ libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/1.cc
+ libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/2.cc
+ Linux?
+
+ diff --git ./gcc/testsuite/gcc.dg/tm/memopt-15.c ./gcc/testsuite/gcc.dg/tm/memopt-15.c
+ @@ -1,4 +1,4 @@
+ /* { dg-do compile { target { {+i?86-*-linux*+} x86_64-*-linux* } } } */
+ /* { dg-options "-fgnu-tm -O" } */
+
+ diff --git ./gcc/testsuite/gcc.target/i386/pr61296-1.c ./gcc/testsuite/gcc.target/i386/pr61296-1.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr61296-2.c ./gcc/testsuite/gcc.target/i386/pr61296-2.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr61296-3.c ./gcc/testsuite/gcc.target/i386/pr61296-3.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr61296-4.c ./gcc/testsuite/gcc.target/i386/pr61296-4.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr61296-5.c ./gcc/testsuite/gcc.target/i386/pr61296-5.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr61296-6.c ./gcc/testsuite/gcc.target/i386/pr61296-6.c
+ diff --git ./gcc/testsuite/gcc.target/i386/pr61296-7.c ./gcc/testsuite/gcc.target/i386/pr61296-7.c
+ @@ -0,0 +1,27 @@
+ {+/* PR target/61296 */+}
+ {+/* { dg-do compile { target { *-*-linux* } } } */+}
+
+ gcc/testsuite/gcc.target/i386/mcount_pic.c
+ gcc/testsuite/gcc.target/i386/nop-mcount.c
+ gcc/testsuite/gcc.target/i386/record-mcount.c
+ Linux?
+
+ --- /dev/null
+ +++ ./gcc/testsuite/gcc.dg/fdata-sections-2.c
+ diff --git ./gcc/testsuite/gcc.dg/fdata-sections-2.c ./gcc/testsuite/gcc.dg/fdata-sections-2.c
+ @@ -0,0 +1,18 @@
+ {+/* { dg-do compile { target *-*-linux* } } */+}
+
+ --- /dev/null
+ +++ ./gcc/testsuite/gcc.target/i386/noplt-1.c
+ +++ ./gcc/testsuite/gcc.target/i386/noplt-2.c
+ +++ ./gcc/testsuite/gcc.target/i386/noplt-3.c
+ +++ ./gcc/testsuite/gcc.target/i386/noplt-4.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66275.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr68018.c
+ {+/* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */+}
+
+ --- /dev/null
+ +++ ./gcc/testsuite/gcc.target/i386/pr68937-1.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr68937-2.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr68937-3.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr68937-4.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr68937-5.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr68937-6.c
+ {+/* { dg-do compile { target { *-*-linux* && ia32 } } } */+}
+ {+/* { dg-options "-O2 -fpic -fno-plt -mregparm=3" } */+}
+
+ --- /dev/null
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-10.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-11.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-12.c
+ +++ ./gcc/testsuite/gcc.target/i386/pr66232-13.c
+ {+/* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */+}
+ {+/* { dg-require-effective-target maybe_x32 } */+}
+ {+/* { dg-options "-O2 -mx32 -fpic -fno-plt -maddress-mode=long" } */+}
+
+ diff --git ./gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp ./gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
+ @@ -0,0 +1,42 @@
+ {+[...]+}
+ {+if { (![istarget x86_64-*-linux*] && ![istarget i?86-*-linux*])+}
+ {+ || ![is-effective-target ia32] } then {+}
+ {+ return+}
+ {+}+}
+
* `hurd/usr`
`NATIVE_SYSTEM_HEADER_DIR`, `638454a19c1c08f01c10517bc72a114250fc4f33`,
@@ -390,6 +565,61 @@ c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
* Might `-fsplit-stack` be useful for us with respect to our
[[multithreaded|multithreading]] libraries?
+ * -fsplit-stack issue in context of [[gccgo]]
+
+ mmap errno 1073741846
+ fatal error: mmap
+
+ Temporary breakpoint 3 at 0x80490fd
+ Starting program: /media/erich/home/thomas/tmp/gcc/t/hurd/go.build/gcc/testsuite/go/array-2.x
+ [New Thread 732.20]
+
+ Breakpoint 2, backtrace_alloc (state=<optimized out>, state@entry=0x21ffa08, size=size@entry=40, error_callback=<optimized out>, error_callback@entry=0x12c4970 <error_callback>, data=<optimized out>, data@entry=0x0)
+ at ../../../go/libbacktrace/mmap.c:140
+ 140 page = mmap (NULL, asksize, PROT_READ | PROT_WRITE,
+ (gdb) info threads
+ Id Target Id Frame
+ 5 Thread 732.20 0x01dedafc in mach_msg_trap () at /usr/src/eglibc-2.17/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ * 4 Thread 732.19 backtrace_alloc (state=<optimized out>, state@entry=0x21ffa08, size=size@entry=40, error_callback=<optimized out>, error_callback@entry=0x12c4970 <error_callback>, data=<optimized out>, data@entry=0x0)
+ at ../../../go/libbacktrace/mmap.c:140
+ (gdb) set *(int *)0x21ff930 = 123
+ (gdb) call __vm_allocate(1,0x21ff930,4096,1)
+ $20 = 0
+ (gdb) print/x *(int *)0x21ff930
+ $21 = 0x0
+ (gdb) call __vm_allocate(1,0x21ff930,4096,1)
+ $22 = 0
+ (gdb) print/x *(int *)0x21ff930
+ $23 = 0x7d000
+ (gdb) call __vm_allocate(1,0x21ff930,4096,1)
+ $24 = 0
+ (gdb) print/x *(int *)0x21ff930
+ $25 = 0x7e000
+
+ $ cat < v.c
+ #include <mach.h>
+ #include <stdio.h>
+
+ int main(void)
+ {
+ int err;
+ vm_address_t addr = 0;
+
+ int i;
+ for (i = 0; i < 3; ++i)
+ {
+ err = vm_allocate(mach_task_self(), &addr, 4096, 1);
+ printf("%u %p\n", err, (void *) addr);
+ }
+
+ return 0;
+ }
+ $ gcc -Wall v.c -fsplit-stack
+ $ ./a.out
+ 0 (nil)
+ 0 0x102c000
+ 0 0x102e000
+
* `gcc/ada` (not all reviewed)
* [[Ada (GNAT)|gnat]] support is work in progress.
@@ -399,6 +629,7 @@ c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
* The [[Google Go's libgo|gccgo]] (introduced in
e440a3286bc89368b8d3a8fd6accd47191790bf2 (2010-12-03)) needs
OS configuration / support.
+ See [[gccgo]].
* `--enable-frame-pointer`
@@ -620,6 +851,25 @@ c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
"20110609002620.GA16719@const.famille.thibault.fr"]]. commit
026e608ecebcb2a6193971006a85276307d79b00.
+ * Does this make sense for us?
+
+ diff --git ./libstdc++-v3/include/std/thread ./libstdc++-v3/include/std/thread
+ @@ -269,7 +279,18 @@ _GLIBCXX_END_NAMESPACE_VERSION
+ /// get_id
+ inline thread::id
+ get_id() noexcept
+ {
+ {+#ifdef __GLIBC__+}
+ {+ // For the GNU C library pthread_self() is usable without linking to+}
+ {+ // libpthread.so but returns 0, so we cannot use it in single-threaded+}
+ {+ // programs, because this_thread::get_id() != thread::id{} must be true.+}
+ {+ // We know that pthread_t is an integral type in the GNU C library.+}
+ {+ if (!__gthread_active_p())+}
+ {+ return thread::id(1);+}
+ {+#endif+}
+ return thread::id(__gthread_self());
+ }
+
* [[`libsanitizer`|_san]] (not reviewed)
A lot of Linux-specific things.
@@ -636,8 +886,6 @@ c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
* `libvtv/vtv_rts.cc`: `/proc/self/exe` usage, `PATH_MAX`.
- * ./libgomp/testsuite/libgomp.c/affinity-1.c Linux usage
-
* `libcilkrts`
Disabled for Hurd.
@@ -765,13 +1013,55 @@ c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19).
* Debian GCC 48594516135e34a726cafe3863a4dc661bbd61a4 `boehm-gc: use
anonymous mmap instead of brk also on hurd-*.`. [[!debbug 753791]].
+ * [low] `libmpx`
+
+ Only enabled for GNU/Linux, but actually seems to be portable.
+
+ gcc/config/i386/linux-common.h:MPX_SPEC
+
+ * `PIE_SPEC`
+
+ diff --git ./gcc/config/gnu-user.h ./gcc/config/gnu-user.h
+ @@ -42,8 +42,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+
+ #if defined HAVE_LD_PIE
+ #define GNU_USER_TARGET_STARTFILE_SPEC \
+ "%{!shared: [-%{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}-]{+%{pg|p|profile:gcrt1.o%s;: \+}
+ {+ %{" PIE_SPEC ":Scrt1.o%s} %{" NO_PIE_SPEC ":crt1.o%s}}}+} \
+ crti.o%s [-%{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}-]{+%{static:crtbeginT.o%s;: %{shared:crtbeginS.o%s} \+}
+ {+ %{" PIE_SPEC ":crtbeginS.o%s} \+}
+ {+ %{" NO_PIE_SPEC ":crtbegin.o%s}}+} \
+
+ * `%gs:`
+
+ diff --git ./gcc/config/i386/i386.c ./gcc/config/i386/i386.c
+ @@ -22879,10 +22887,50 @@ ix86_split_long_move (rtx operands[])
+ if (GET_MODE (base) != Pmode)
+ base = gen_rtx_REG (Pmode, REGNO (base));
+
+ {+addr = XEXP (part[1][0], 0);+}
+ {+ if (TARGET_TLS_DIRECT_SEG_REFS)+}
+ {+ {+}
+ {+ struct ix86_address parts;+}
+ {+ int ok = ix86_decompose_address (addr, &parts);+}
+ {+ gcc_assert (ok);+}
+ {+ if (parts.seg == DEFAULT_TLS_SEG_REG)+}
+ {+ {+}
+ {+ /* It is not valid to use %gs: or %fs: in+}
+ {+ lea though, so we need to remove it from the+}
+ {+ address used for lea and add it to each individual+}
+ {+ memory loads instead. */+}
+ [...]
+
+ * x86 Named Address Spaces, `i386: Add address spaces for fs/gs segments and
+ tls`, commit 716c563bcef8bb91dee230dbc75abff70ed2f6ae.
+
# Build
Here's a log of a GCC build run; this is from Git commit
-c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19), with
-b68b3d9d07b2e31cc592ef231a6b963192ae81b6 cherry-picked on laplace.SCHWINGE, run
-on kepler.SCHWINGE and laplace.SCHWINGE.
+bd5bb665eb00598666a8162c2440410a51eb9e7e (2016-02-20), run on kepler.SCHWINGE
+and laplace.SCHWINGE.
$ export LC_ALL=C
$ (cd ../master/ && contrib/gcc_update --touch)
@@ -787,8 +1077,8 @@ harmonized.
`/include` for GNU Hurd. Explicit `--enable-multiarch` because *auto check [is
disabled if] configured with --native-system-header-dir*.
-This takes up around 4.3 GiB, and runs for [[4 h 37 min|performance#measure]]
-on kepler.SCHWINGE and [[3 h 42 min|performance#measure]] on laplace.SCHWINGE.
+This takes up around 4.8 GiB, and runs for [[5 h 0 min|performance#measure]]
+on kepler.SCHWINGE and [[5 h 18 min|performance#measure]] on laplace.SCHWINGE.
<!--
@@ -937,14 +1227,24 @@ on kepler.SCHWINGE and [[3 h 42 min|performance#measure]] on laplace.SCHWINGE.
* `libatomic` on GNU/Linux compiles several more files than on GNU/Hurd. Is
that correct? Probably futex support.
+ * `linker -z bndplt option`
+
+ -checking linker -z bndplt option... yes
+ +checking linker -z bndplt option... no
+
+ * `utimensat`
+
+ -checking for utimensat... yes
+ +checking for utimensat... no
+
# Install
$ make install 2>&1 | tee log_install
[...]
-This takes up around 1.4 GiB, and runs for [[2 min|performance#measure]] on
-kepler.SCHWINGE and [[5 min|performance#measure]] on laplace.SCHWINGE.
+This takes up around 1.4 GiB, and runs for [[1 min|performance#measure]] on
+kepler.SCHWINGE and [[6 min|performance#measure]] on laplace.SCHWINGE.
## Analysis
@@ -969,8 +1269,8 @@ kepler.SCHWINGE and [[5 min|performance#measure]] on laplace.SCHWINGE.
$ make -k check 2>&1 | tee log_test
[...]
-This runs for [[7 h 3 min|performance#measure]] on kepler.SCHWINGE and [[10 h
-19 min|performance#measure]] on laplace.SCHWINGE.
+This runs for [[7 h 55 min|performance#measure]] on kepler.SCHWINGE and [[14 h
+02 min|performance#measure]] on laplace.SCHWINGE.
## Analysis
@@ -1057,17 +1357,23 @@ This runs for [[7 h 3 min|performance#measure]] on kepler.SCHWINGE and [[10 h
FAIL: g++.dg/ext/cleanup-9.C -std=gnu++98 execution test
FAIL: g++.dg/ext/cleanup-9.C -std=gnu++11 execution test
+ gcc/testsuite/g++.dg/ext/cleanup-10.C: s.sa_flags = SA_RESETHAND | SA_ONSTACK;
+ gcc/testsuite/g++.dg/ext/cleanup-11.C: s.sa_flags = SA_RESETHAND | SA_ONSTACK | SA_SIGINFO;
+ gcc/testsuite/gcc.dg/cleanup-10.c: s.sa_flags = SA_RESETHAND | SA_ONSTACK;
+ gcc/testsuite/gcc.dg/cleanup-11.c: s.sa_flags = SA_RESETHAND | SA_ONSTACK | SA_SIGINFO;
+
TODO.
- spawn [open ...]
- gdb: took too long to attach
- testcase [...]/gcc/testsuite/gcc.dg/guality/guality.exp completed in 16 seconds
+ * `gfortran`
- spawn [open ...]
- gdb: took too long to attach
- testcase [...]/gcc/testsuite/g++.dg/guality/guality.exp completed in 20 seconds
+ +FAIL: gfortran.dg/read_dir.f90 -O0 execution test
+ +FAIL: gfortran.dg/read_dir.f90 -O1 execution test
+ +FAIL: gfortran.dg/read_dir.f90 -O2 execution test
+ +FAIL: gfortran.dg/read_dir.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions execution test
+ +FAIL: gfortran.dg/read_dir.f90 -O3 -g execution test
+ +FAIL: gfortran.dg/read_dir.f90 -Os execution test
- TODO. The gfortran ones worked fine.
+ TODO.
* `[ARCH]/libgomp`
@@ -1155,6 +1461,63 @@ This runs for [[7 h 3 min|performance#measure]] on kepler.SCHWINGE and [[10 h
`_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t`
(`std::__basic_file<char>::__basic_file(pthread_mutex_t*)`) is expected.
+ ./libstdc++-v3/config/abi/pre/gnu.ver: # std::__basic_file
+ ./libstdc++-v3/config/abi/pre/gnu.ver: _ZNSt12__basic_fileIcEC*;
+
+ ./libstdc++-v3/config/io/basic_file_stdio.cc:
+
+ ./libstdc++-v3/config/io/basic_file_stdio.h:
+ __basic_file(__c_lock* __lock = 0) throw ();
+
+ ./libstdc++-v3/config/io/c_io_stdio.h:
+ typedef __gthread_mutex_t __c_lock;
+
+ ./libgcc/gthr-posix.h:
+ typedef pthread_mutex_t __gthread_mutex_t;
+
+ glibc commit 1bcfb5a5eb1c25b64a329c1edf6bcfb440cdbc93 then commit d804f5df602e6a348edcf7d2a2fe73b185bfbd34
+
+ coulomb:tmp/glibc/tschwinge/Roger_Whittaker.build $ cat < c++-types-check.out
+ --- sysdeps/mach/hurd/i386/c++-types.data 2013-06-06 13:43:19.000000000 +0200
+ +++ - 2013-06-06 13:56:58.263987000 +0200
+ @@ -8 +8 @@
+ -dev_t:y
+ +dev_t:j
+ @@ -14 +14 @@
+ -fsid_t:8__fsid_t
+ +fsid_t:y
+ @@ -31,11 +31,11 @@
+ -pthread_attr_t:14pthread_attr_t
+ -pthread_barrier_t:17pthread_barrier_t
+ -pthread_barrierattr_t:21pthread_barrierattr_t
+ -pthread_cond_t:14pthread_cond_t
+ -pthread_condattr_t:18pthread_condattr_t
+ -pthread_key_t:j
+ -pthread_mutex_t:15pthread_mutex_t
+ -pthread_mutexattr_t:19pthread_mutexattr_t
+ -pthread_once_t:i
+ -pthread_rwlock_t:16pthread_rwlock_t
+ -pthread_rwlockattr_t:20pthread_rwlockattr_t
+ +pthread_attr_t:14__pthread_attr
+ +pthread_barrier_t:17__pthread_barrier
+ +pthread_barrierattr_t:21__pthread_barrierattr
+ +pthread_cond_t:14__pthread_cond
+ +pthread_condattr_t:18__pthread_condattr
+ +pthread_key_t:i
+ +pthread_mutex_t:15__pthread_mutex
+ +pthread_mutexattr_t:19__pthread_mutexattr
+ +pthread_once_t:14__pthread_once
+ +pthread_rwlock_t:16__pthread_rwlock
+ +pthread_rwlockattr_t:20__pthread_rwlockattr
+ @@ -43 +43 @@
+ -pthread_t:m
+ +pthread_t:i
+ @@ -48 +48 @@
+ -sigset_t:10__sigset_t
+ +sigset_t:m
+
+ [[!wikipedia "Name mangling"]].
+
FAIL: 22_locale/time_get/get_date/wchar_t/4.cc execution test
FAIL: 27_io/basic_filebuf/close/char/4879.cc execution test
FAIL: 27_io/basic_filebuf/close/char/9964.cc execution test
diff --git a/open_issues/gccgo.mdwn b/open_issues/gccgo.mdwn
index 0b90ac75..f4c0c96b 100644
--- a/open_issues/gccgo.mdwn
+++ b/open_issues/gccgo.mdwn
@@ -1,4 +1,5 @@
-[[!meta copyright="Copyright © 2011, 2013 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2011, 2013, 2016 Free Software Foundation,
+Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -92,13 +93,14 @@ Also, in `libgo/runtime/proc.c`:`runtime_newm`, `pthread_attr_setstacksize` is
used, which we also can't support yet, for the same reason.
-========================
+## 2013-07-15, Fotis
**gccgo manages to get compiled and pass a fair amount of its tests, however its library is failing all but one of its tests.**
Following are the results of the passing suite between the libgo tests run on linux (x86) and the Hurd:
-# the Hurd:
+
+### the Hurd:
Test Run By root on Fri Jul 12 17:56:44 UTC 2013
Native configuration is i686-unknown-gnu0.3
@@ -116,7 +118,8 @@ Following are the results of the passing suite between the libgo tests run on li
# of unexpected failures 130
/root/gcc_new/gccbuild/./gcc/gccgo version 4.9.0 20130606 (experimental) (GCC)
-# Linux results:
+
+### Linux results:
Test Run By fotis on Τρι 02 Ιούλ 2013 09:20:20 μμ EEST
Native configuration is i686-pc-linux-gnu
@@ -134,6 +137,104 @@ Following are the results of the passing suite between the libgo tests run on li
/home/fotis/Software/gcc_build/./gcc/gccgo version 4.9.0 20130702 (experimental) (GCC)
+## SIGCHLD busy-loops
+
+[[I|tschwinge]] have no recollection anymore what this is about...
+
+ (gdb) thread apply all bt
+
+ Thread 3 (Thread 19802.3):
+ #0 0x01daab5c in swtch_pri () at /usr/src/eglibc-2.17/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
+ #1 0x01dac544 in __spin_lock_solid (lock=0x1fb700c) at spin-solid.c:26
+ #2 0x01dc1e07 in __spin_lock (__lock=<optimized out>) at ../mach/lock-intern.h:54
+ #3 _hurd_sigstate_lock (ss=ss@entry=0x2b008) at hurdsig.c:172
+ #4 0x01deaefb in __sigprocmask (how=how@entry=2, set=set@entry=0x209ffc9c, oset=oset@entry=0x0) at ../sysdeps/mach/hurd/sigprocmask.c:43
+ #5 0x01deeaff in abort () at abort.c:67
+ #6 0x01dec7c3 in __sigreturn (scp=0x209ffd00) at ../sysdeps/mach/hurd/i386/sigreturn.c:74
+ #7 0x01dc6ac6 in trampoline () from /lib/i386-gnu/libc.so.0.3
+ #8 0x209ffd00 in ?? ()
+ Backtrace stopped: previous frame inner to this frame (corrupt stack?)
+
+ Thread 2 (Thread 19802.2):
+ #0 0x01daaafc in mach_msg_trap () at /usr/src/eglibc-2.17/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
+ #1 0x01dab3be in __mach_msg (msg=msg@entry=0x23fdef0, option=option@entry=3, send_size=32, rcv_size=rcv_size@entry=4096, rcv_name=rcv_name@entry=100, timeout=timeout@entry=0, notify=notify@entry=0) at msg.c:110
+ #2 0x01dabaeb in __mach_msg_server_timeout (demux=demux@entry=0x1dbc9f0 <msgport_server>, max_size=max_size@entry=4096, rcv_name=rcv_name@entry=100, option=option@entry=0, timeout=timeout@entry=0) at msgserver.c:150
+ #3 0x01dabbbb in __mach_msg_server (demux=demux@entry=0x1dbc9f0 <msgport_server>, max_size=4096, rcv_name=100) at msgserver.c:195
+ #4 0x01dbcaed in _hurd_msgport_receive () at msgportdemux.c:67
+ #5 0x01f54ab4 in entry_point (start_routine=0x1dbca80 <_hurd_msgport_receive>, arg=0x0) at ./pthread/pt-create.c:57
+ #6 0x00000000 in ?? ()
+
+ Thread 1 (Thread 19802.1):
+ #0 0x01daab5c in swtch_pri () at /usr/src/eglibc-2.17/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
+ #1 0x01dac544 in __spin_lock_solid (lock=0x1fb700c) at spin-solid.c:26
+ #2 0x01dc1e07 in __spin_lock (__lock=<optimized out>) at ../mach/lock-intern.h:54
+ #3 _hurd_sigstate_lock (ss=ss@entry=0x1fb7808) at hurdsig.c:172
+ #4 0x01deaefb in __sigprocmask (how=1, set=0x0, oset=0x2004dc78) at ../sysdeps/mach/hurd/sigprocmask.c:43
+ #5 0x01dfe027 in getcontext () at ../sysdeps/mach/hurd/i386/getcontext.S:66
+ #6 0x012d4208 in runtime_mcall (pfn=0x12d4eb0 <schedule>) at ../../../go/libgo/runtime/proc.c:420
+ #7 0x012d48aa in runtime_gosched () at ../../../go/libgo/runtime/proc.c:1371
+ #8 0x012d4acf in syscall.Exitsyscall () at ../../../go/libgo/runtime/proc.c:1494
+ #9 0x012d1cc1 in runtime_MHeap_Scavenger (dummy=0x0) at ../../../go/libgo/runtime/mheap.c:453
+ #10 0x012d4946 in kickoff () at ../../../go/libgo/runtime/proc.c:370
+ #11 0x01dfe0ed in makecontext () at ../sysdeps/mach/hurd/i386/makecontext.S:95
+ #12 0x00000000 in ?? ()
+
+ (Perhaps in the mean time had received a SIGALARM or whatever DejaGnu sends
+ after timeout, if at all?)
+
+
+ -# of expected passes 1714
+ -# of unexpected failures 575
+ +# of expected passes 5067
+ +# of unexpected failures 12
+ # of expected failures 1
+ -# of untested testcases 13
+ +# of untested testcases 7
+
+
+## TODO
+
+ +go_net_cgo_file = go/net/cgo_linux.go
+ +go_net_sock_file = go/net/sock_gnu.go
+ copied from libgo/go/net/sock_bsd.go
+ +go_net_sockopt_file = go/net/sockopt_bsd.go
+ +go_net_sockoptip_file = go/net/sockoptip_bsd.go go/net/sockoptip_posix.go
+
+ +go_os_sys_file = go/os/sys_uname.go
+
+ +go_os_stat_file = go/os/stat_atim.go
+
+ +archive_tar_atim_file = go/archive/tar/stat_atim.go
+
+ +syscall_exec_file = go/syscall/exec_unix.go
+ +syscall_exec_os_file = go/syscall/exec_gnu.go
+ copied from libgo/go/syscall/exec_bsd.go
+
+ +syscall_libcall_file = go/syscall/libcall_gnu.go
+ copied from libgo/go/syscall/libcall_posix.go
+
+ updated
+
+ ? go_net_poll_file
+ ? go_net_fd_os_file
+
+ libgo/runtime/proc.c | 10 +-
+ libgo/runtime/thread.c | 7 +
+ (some?) code moved elsewhere (runtime_m()->gsignal = runtime_malg(...))
+
+ New libgo/go/reflect/makefunc_386.S and libgo/go/reflect/makefunc_amd64.S
+ contain Linux thingy. Review x86 one anyway. Also:
+ libgo/go/reflect/makefuncgo_386.go.
+
+ --- ./libgo/go/syscall/libcall_posix.go
+ +++ ./libgo/go/syscall/libcall_posix.go
+ -const nfdbits = int(unsafe.Sizeof(fds_bits_type) * 8)
+ +const nfdbits = int(unsafe.Sizeof(fds_bits_type(0)) * 8)
+
+Have then not anymore reviewed *Go* changes in GCC -- have to restart this from
+scratch.
+
+
---
diff --git a/open_issues/gnat.mdwn b/open_issues/gnat.mdwn
index 48a1e25e..8b98e598 100644
--- a/open_issues/gnat.mdwn
+++ b/open_issues/gnat.mdwn
@@ -90,6 +90,17 @@ svn://svn.debian.org/gcccvs/branches/sid@5638
Debian already. Hopefully this is the last patch needed for the port of
GNAT to Hurd.
+### 2015-11-27
+
+Is this related to:
+
+`gcc/ada/tracebak.c`:
+
+ #if (defined (__x86_64__) || defined (__linux__)) && !defined (__USING_SJLJ_EXCEPTIONS__)
+ #define USE_GCC_UNWINDER
+ #else
+ #define USE_GENERIC_UNWINDER
+
## Svante's patch
@@ -154,9 +165,168 @@ f6568ea476aa52a6e23c6db43b3e240cde55783a (2013-04-26).
gcc/ada/s-taprop-linux.adb: Stack.ss_sp := Self_ID.Common.Task_Alternate_Stack;
gcc/ada/s-taprop-posix.adb: Stack.ss_sp := Self_ID.Common.Task_Alternate_Stack;
+ gcc/ada/init.c: act.sa_flags |= SA_ONSTACK;
+ gcc/ada/init.c: act.sa_flags |= SA_ONSTACK;
+ gcc/ada/init.c: act.sa_flags = SA_SIGINFO | SA_ONSTACK;
+ gcc/ada/init.c: act.sa_flags |= SA_ONSTACK;
+ gcc/ada/s-intman-posix.adb: act.sa_flags := act.sa_flags + SA_ONSTACK;
+ gcc/ada/s-linux-alpha.ads: SA_ONSTACK : constant := 16#01#;
+ gcc/ada/s-linux-hppa.ads: SA_ONSTACK : constant := 16#01#;
+ gcc/ada/s-linux-mipsel.ads: SA_ONSTACK : constant := 16#08000000#;
+ gcc/ada/s-linux-sparc.ads: SA_ONSTACK : constant := 16#001#;
+ gcc/ada/s-linux.ads: SA_ONSTACK : constant := 16#08000000#;
+ gcc/ada/s-osinte-aix.ads: SA_ONSTACK : constant := 16#0001#;
+ gcc/ada/s-osinte-android.ads: SA_ONSTACK : constant := System.Linux.SA_ONSTACK;
+ gcc/ada/s-osinte-darwin.ads: SA_ONSTACK : constant := 16#0001#;
+ gcc/ada/s-osinte-freebsd.ads: SA_ONSTACK : constant := 16#0001#;
+ gcc/ada/s-osinte-hpux-dce.ads: SA_ONSTACK : constant := 16#01#;
+ gcc/ada/s-osinte-hpux.ads: SA_ONSTACK : constant := 16#01#;
+ gcc/ada/s-osinte-kfreebsd-gnu.ads: SA_ONSTACK : constant := 16#0001#;
+ gcc/ada/s-osinte-linux.ads: SA_ONSTACK : constant := System.Linux.SA_ONSTACK;
+ gcc/ada/s-osinte-lynxos.ads: SA_ONSTACK : constant := 16#00#;
+ gcc/ada/s-osinte-lynxos.ads: -- SA_ONSTACK is not defined on LynxOS, but it is referred to in the POSIX
+ gcc/ada/s-osinte-rtems.ads: SA_ONSTACK : constant := 16#00#;
+ gcc/ada/s-osinte-rtems.ads: -- SA_ONSTACK is not defined on RTEMS, but it is referred to in the POSIX
+ gcc/ada/s-osinte-solaris-posix.ads: SA_ONSTACK : constant := 16#0001#;
+ gcc/ada/s-osinte-vxworks.ads: SA_ONSTACK : constant := 16#0004#;
## TODO
+ diff --git ./gcc/ada/init.c ./gcc/ada/init.c
+ @@ -2002,6 +2021,15 @@ __gnat_install_handler (void)
+ trap_0_entry->inst_fourth = 0xa1480000;
+ #endif
+
+ {+#if (defined (i386) || defined (__i386__)) && !defined (VTHREADS)+}
+ {+ /* By experiment, found that sysModel () returns the following string+}
+ {+ prefix for vxsim when running on Linux and Windows. */+}
+ {+ model = sysModel ();+}
+ {+ if ((strncmp (model, "Linux", 5) == 0)+}
+ {+ || (strncmp (model, "Windows", 7) == 0))+}
+ {+ is_vxsim = 1;+}
+ {+#endif+}
+
+ __gnat_handler_installed = 1;
+ }
+
+ diff --git ./gcc/ada/sigtramp.h ./gcc/ada/sigtramp.h
+ @@ -62,8 +62,14 @@ typedef struct ucontext
+ system headers so call it something unique. */
+ typedef void __sigtramphandler_t (int signo, void *siginfo, void *sigcontext);
+
+ {+#if CPU == SIMNT || CPU == SIMPENTIUM || CPU == SIMLINUX+}
+ {+ /* Vxsim requires a specially compiled handler. */+}
+ {+ void __gnat_sigtramp_vxsim (int signo, void *siginfo, void *sigcontext,+}
+ {+ __sigtramphandler_t * handler);+}
+ {+#else+}
+ void __gnat_sigtramp (int signo, void *siginfo, void *sigcontext,
+ __sigtramphandler_t * handler);
+ {+#endif+}
+
+ diff --git ./gcc/ada/gcc-interface/Makefile.in ./gcc/ada/gcc-interface/Makefile.in
+ @@ -923,13 +928,49 @@ ifeq ($(strip $(filter-out %86 wrs vxworks vxworks7,$(target_cpu) $(target_vendo
+ {+ VXSIM_CPU =+}
+
+ {+ ifeq ($(strip $(filter-out vxworks rtp rtp-smp,$(target_os) $(THREAD_KIND))),)+}
+ {+ VXSIM_CPU = SIMPENTIUM+}
+ {+ else+}
+ {+ ifeq ($(strip $(filter-out kernel kernel-smp rtp rtp-smp,$(THREAD_KIND))),)+}
+ {+ ifeq ($(strip $(filter-out linux%,$(host_os))),)+}
+ {+ # Linux+}
+ {+ VXSIM_CPU = SIMLINUX+}
+ {+ else+}
+ {+ # Windows+}
+ {+ VXSIM_CPU = SIMNT+}
+ {+ endif+}
+ {+ endif+}
+
+ diff --git ./gcc/ada/gcc-interface/Makefile.in ./gcc/ada/gcc-interface/Makefile.in
+ @@ -2413,6 +2468,14 @@ ifeq ($(filter a-except%,$(LIBGNAT_TARGET_PAIRS)),)
+ {+# Configuration of host tools+}
+
+ {+# Under linux, host tools need to be linked with -ldl+}
+
+ {+ifeq ($(strip $(filter-out linux%,$(host_os))),)+}
+ {+ TOOLS1_LIBS=-ldl+}
+ {+endif+}
+
+ diff --git ./gcc/ada/s-osinte-linux.ads ./gcc/ada/s-osinte-linux.ads
+ @@ -224,6 +224,10 @@ package System.OS_Interface is
+ {+function clock_gettime+}
+ {+ (clock_id : clockid_t; tp : access timespec) return int;+}
+ {+ pragma Import (C, clock_gettime, "clock_gettime");+}
+
+ diff --git ./gcc/ada/s-taprop-linux.adb ./gcc/ada/s-taprop-linux.adb
+ @@ -39,7 +39,6 @@ pragma Polling (Off);
+ with Interfaces.C;
+ [-with Interfaces.C.Extensions;-]
+ @@ -64,7 +63,6 @@ package body System.Task_Primitives.Operations is
+ use Interfaces.C;
+ [- use Interfaces.C.Extensions;-]
+ @@ -629,30 +627,14 @@ package body System.Task_Primitives.Operations is
+ function Monotonic_Clock return Duration is
+ [-use Interfaces;-]
+
+ [- procedure timeval_to_duration-]
+ [- (T : not null access timeval;-]
+ [- sec : not null access C.Extensions.long_long;-]
+ [- usec : not null access C.long);-]
+ [- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration");-]
+
+ [- Micro : constant := 10**6;-]
+ [- sec : aliased C.Extensions.long_long;-]
+ [- usec : aliased C.long;-]
+ [- TV-]{+TS+} : aliased [-timeval;-]{+timespec;+}
+ Result : int;
+
+ [- function gettimeofday-]
+ [- (Tv : access timeval;-]
+ [- Tz : System.Address := System.Null_Address) return int;-]
+ [- pragma Import (C, gettimeofday, "gettimeofday");-]
+
+ begin
+ Result := [-gettimeofday (TV'Access, System.Null_Address);-]{+clock_gettime+}
+ {+ (clock_id => OSC.CLOCK_RT_Ada, tp => TS'Unchecked_Access);+}
+ pragma Assert (Result = 0);
+ [-timeval_to_duration (TV'Access, sec'Access, usec'Access);-]
+ return [-Duration (sec) + Duration (usec) / Micro;-]{+To_Duration (TS);+}
+ end Monotonic_Clock;
+
+
+ diff --git ./gcc/ada/adaint.c ./gcc/ada/adaint.c
+ @@ -3220,6 +3220,107 @@ __gnat_kill (int pid, int sig, int close ATTRIBUTE_UNUSED)
+ #endif
+ }
+
+ {+void __gnat_killprocesstree (int pid, int sig_num)+}
+ {+{+}
+ {+[...]+}
+ {+#elif defined (__linux__)+}
+ {+ DIR *dir;+}
+ {+ struct dirent *d;+}
+
+ {+ /* read all processes' pid and ppid */+}
+
+ {+ dir = opendir ("/proc");+}
+ {+[...]+}
+ {+ /* kill process */+}
+
+ {+ __gnat_kill (pid, sig_num, 1);+}
+ {+#else+}
+ {+ __gnat_kill (pid, sig_num, 1);+}
+ {+#endif+}
+ {+[...]+}
+ {+}+}
+
+ diff --git ./gcc/ada/s-os_lib.ads ./gcc/ada/s-os_lib.ads
+ @@ -740,6 +744,19 @@ package System.OS_Lib is
+ {+ procedure Kill_Process_Tree (Pid : Process_Id; Hard_Kill : Boolean := True);+}
+ {+ -- Kill the process designated by Pid and all it's children processes.+}
+ {+ -- [...]
+ {+ -- Note that this routine is not atomic and is supported only on Linux+}
+ {+ -- and Windows. On other OS it will only kill the process identified by+}
+ {+ -- Pid.+}
+
GCC includes (TODO: some version of) the Ada Conformity Assessment Test Suite
(ACATS), <http://ada-auth.org/acats.html>. Additional tests to be found at
<http://ada-auth.org/submit.html>. TODO: results?