diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2016-02-22 12:48:19 +0100 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2016-02-22 12:48:19 +0100 |
commit | d826147859b1ed79a2dca4861aafe65532ab52ce (patch) | |
tree | 7fc20fa01ed7c2b5c342cc483822c3fd870e7fd5 /open_issues | |
parent | bfe350dabc00d8f3b281837cefdea7d909e00f7a (diff) |
open_issues/gcc: bd5bb665eb00598666a8162c2440410a51eb9e7e (2016-02-20)
Diffstat (limited to 'open_issues')
-rw-r--r-- | open_issues/gcc.mdwn | 403 | ||||
-rw-r--r-- | open_issues/gccgo.mdwn | 109 | ||||
-rw-r--r-- | open_issues/gnat.mdwn | 170 |
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? |