aboutsummaryrefslogtreecommitdiff
path: root/open_issues/glibc.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'open_issues/glibc.mdwn')
-rw-r--r--open_issues/glibc.mdwn167
1 files changed, 133 insertions, 34 deletions
diff --git a/open_issues/glibc.mdwn b/open_issues/glibc.mdwn
index b06b4f9f..31437744 100644
--- a/open_issues/glibc.mdwn
+++ b/open_issues/glibc.mdwn
@@ -30,14 +30,14 @@ Here's what's to be done for maintaining glibc.
<!--
git checkout reviewed
-git log --reverse --pretty=fuller --stat=$COLUMNS,$COLUMNS -w -p -C --cc ..sourceware/master
+git log --reverse --topo-order --pretty=fuller --stat=$COLUMNS,$COLUMNS -w -p -C --cc ..sourceware/master
-i
-/^commit |^Merge:|^---$|hurd|linux|gs:|__ASSUME
+/^commit |^merge:|^---$|mach[^i]|hurd|linux|gs:|__assume
-->
-Last reviewed up to the [[Git mirror's d3bd58cf0a027016544949ffd27300ac5fb01bb8
-(2012-11-03) sources|source_repositories/glibc]].
+Last reviewed up to the [[Git mirror's 0323d08657f111267efa47bd448fbf6cd76befe8
+(2013-05-24) sources|source_repositories/glibc]].
* `t/hurdsig-fixes`
@@ -221,9 +221,9 @@ Last reviewed up to the [[Git mirror's d3bd58cf0a027016544949ffd27300ac5fb01bb8
b1b2aaf8eb9eed301ea8f65b96844568ca017f8b),
`RLIMIT_RTTIME`, `SEEK_DATA` (`unistd.h`), `SEEK_HOLE` (`unistd.h`)
`clock_adjtime`, `fallocate`, `fallocate64`, `name_to_handle_at`,
- `open_by_handle_at`, `process_vm_readv`, `process_vm_writev`, `sendmmsg`,
+ `open_by_handle_at`, `process_vm_readv`, `process_vm_writev`,
`setns`, `sync_file_range`, [[`mremap`|mremap]] and [[several
- `MAP_*`|glibc/mmap]]
+ `MAP_*`|glibc/mmap]], `PTR_MANGLE`/`PTR_DEMANGLE` (`t/ptrmangle`)
Check also the content of `gnu/stubs.h`, which lists all the functions
marked as stub which only return `ENOSYS`.
@@ -259,7 +259,7 @@ Last reviewed up to the [[Git mirror's d3bd58cf0a027016544949ffd27300ac5fb01bb8
<youpi> so I'd say ignore the error for now, we'll add the
declaration
- * [[`getcontext`/`setcontext`|t/tls-threadvar]]
+ * [[t/tls-threadvar]]
* `futimesat`
@@ -297,7 +297,8 @@ Last reviewed up to the [[Git mirror's d3bd58cf0a027016544949ffd27300ac5fb01bb8
* `sys/timerfd.h`
- * `timespec_get` (74033a2507841cf077e31221de2481ff30b43d51)
+ * `timespec_get` (74033a2507841cf077e31221de2481ff30b43d51,
+ 87f51853ce3671f4ba9a9953de1fff952c5f7e52)
* `waitflags.h` (`WEXITED`, `WNOWAIT`, `WSTOPPED`, `WCONTINUED`)
@@ -373,6 +374,33 @@ Last reviewed up to the [[Git mirror's d3bd58cf0a027016544949ffd27300ac5fb01bb8
<braunr> no, linux is more permissive
<braunr> (at least, on this matter)
+ * `getcontext`/`makecontext`/`setcontext`/`swapcontext`
+
+ Support for these functions within the Hurd threadvar environment has
+ been added, but for multi-threaded applications ([[libpthread]]), it is
+ a bit clunky: as a practical requirement, a thread's stack size always
+ has to be equal to `PTHREAD_STACK_DEFAULT`, 2 MiB, and also has to be
+ naturally aligned. The idea is still to [[get rid of Hurd threadvars
+ and replace them with TLS|t/tls-threadvar]].
+
+ Aside from [[gccgo]], the following packages might make use of these
+ functions, searching on <http://codesearch.debian.net/> for
+ `\b(get|set|make|swap)context\s*\(` on 2013-05-18: boost1.49,
+ chromium-browser, gtk-vnc, guile-1.8, iceape, icedove, iceweasel,
+ libgc, libsigsegv, luatex, mono, nspr, pth, ruby1.8, texlive-bin, uim,
+ and more.
+
+ * `recvmmsg`/`sendmmsg` (`t/sendmmsg`)
+
+ From [[!message-id "20120625233206.C000A2C06F@topped-with-meat.com"]],
+ Roland McGrath: *They are generally useful interfaces and there is
+ nothing intrinsically Linuxoid about them. At least when not given a
+ timeout, they could be implemented in terms of sendmsg/recvmsg. So
+ perhaps we ought to have a sysdeps/posix implementation that the Hurd
+ would use instead of stubs (and folks can consider adding new RPCs).
+ Then perhaps the Linux fallback case should be that instead of stubs,
+ too.*
+
For specific packages:
* [[octave]]
@@ -1090,6 +1118,63 @@ Last reviewed up to the [[Git mirror's d3bd58cf0a027016544949ffd27300ac5fb01bb8
ea4d37b3169908615b7c17c9c506c6a6c16b3a26, especially since mach's
sleep.c is buggy (not considers interruption, extra time() (= RPC)
call)«.
+ * ba384f6ed9275f3966505f2375b56d169e3dc588,
+ 0409959c86f6840510851a851a1588677a2e537b,
+ e57b0c6100e63bfd816ae59339452eafc81f1d3a `C++11 thread_local
+ destructors support`. Anything needed to be done in our [[libpthread]]
+ and configured for us in [[GCC]]? Probably need to replicate the
+ `nptl/pthread_create.c` change, and fix
+ `stdlib/Makefile`:`LDFLAGS-tst-tls-atexit`.
+
+ +++ include/link.h
+ @@ -302,6 +302,9 @@ struct link_map
+ + /* Number of thread_local objects constructed by this DSO. */
+ + size_t l_tls_dtor_count;
+
+ +++ include/stdlib.h
+ @@ -100,6 +100,11 @@ extern int __cxa_atexit (void (*func) (void *), void *arg, void *d);
+ +extern int __cxa_thread_atexit_impl (void (*func) (void *), void *arg,
+ + void *d);
+ +extern void __call_tls_dtors (void);
+ +libc_hidden_proto (__call_tls_dtors);
+
+ +++ nptl/pthread_create.c
+ @@ -311,6 +311,9 @@ start_thread (void *arg)
+ [after the thread function returns]
+ + /* Call destructors for the thread_local TLS variables. */
+ + __call_tls_dtors ();
+
+ +++ stdlib/Makefile
+ +LDFLAGS-tst-tls-atexit = $(common-objpfx)nptl/libpthread.so \
+ + $(common-objpfx)dlfcn/libdl.so
+
+ +++ stdlib/cxa_thread_atexit_impl.c
+
+ +++ stdlib/exit.c
+ __run_exit_handlers (int status, struct exit_function_list **listp,
+ bool run_list_atexit)
+ {
+ + /* First, call the TLS destructors. */
+ + __call_tls_dtors ();
+
+ +gcc-4.7 tst-tls-atexit.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -frounding-math -g -Wno-parenth
+ +gcc-4.7 -nostdlib -nostartfiles -o [...]/tschwinge/Roger_Whittaker.build/stdlib/tst-tls-atexit [...]/tschwinge/Roger_Whittaker.build/nptl/lib
+ +gcc-4.7: error: [...]/tschwinge/Roger_Whittaker.build/nptl/libpthread.so: No such file or directory
+ +make[2]: *** [[...]/tschwinge/Roger_Whittaker.build/stdlib/tst-tls-atexit] Error 1
+ +gcc-4.7 tst-tls-atexit-lib.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -frounding-math -g -Wno-par
+ +tst-tls-atexit-lib.c: In function 'do_foo':
+ +tst-tls-atexit-lib.c:35:3: warning: implicit declaration of function '__cxa_thread_atexit_impl' [-Wimplicit-function-declaration]
+
+ * a600e5cef53e10147932d910cdb2fdfc62afae4e `Consolidate Linux and POSIX
+ libc_fatal code.` -- is `backtrace_and_maps` specific to Linux?
+ * 288f7d79fe2dcc8e62c539f57b25d7662a2cd5ff `Use __ehdr_start, if
+ available, as fallback for AT_PHDR.` -- once we require Binutils 2.23,
+ can we simplify [[glibc's process startup|glibc/process]]
+ (initialization of `_dl_phdr` and `_dl_phnum`)? As these are only used
+ for `[!SHARED]`, can we completely remove them (that is, the `phdr` and
+ `phdrsz` members) from `hurd_startup_data`, and simplify
+ [[hurd/interface/exec_startup_get_info]], or do we still require these
+ for the `[SHARED]` case?
## Update
@@ -1102,8 +1187,14 @@ Last reviewed up to the [[Git mirror's d3bd58cf0a027016544949ffd27300ac5fb01bb8
# Build
Here's a log of a glibc build run; this is from our [[Git repository's
-60f4d2f33666d77ac018cb9956675dcad04bb996 (2013-02-12;
-fbeafedeea37e0af1984a6511018d159f5ceed6a (2012-11-03))
+83fed41a9ed81db6ca517185aefb296f74868c2f (2013-05-26;
+0323d08657f111267efa47bd448fbf6cd76befe8 (2013-05-24))
+plus 2b66ef5d55325b2957d6c62908ca065228e56814,
+ec9dd97cecafba5ddf5c3ec683db7ad5b4421923,
+07b4c13d0be4814ef10bbfbfd68db604978aa0e5,
+528c24058fb100fb27fe5c211b92be84c67a6659, `t/elfosabi_gnu` reverted,
+ec9dd97cecafba5ddf5c3ec683db7ad5b4421923 (again...),
+`id:"87bo7xo1ay.fsf@kepler.schwinge.homeip.net"`
sources|source_repositories/glibc]], run on coulomb.SCHWINGE.
$ export LC_ALL=C
@@ -1224,7 +1315,7 @@ TODO.
$ make install_root="$PWD".install install 2>&1 | tee log_install
[...]
-This takes up around 100 MiB, and needs roughly X min on kepler.SCHWINGE and 16
+This takes up around 100 MiB, and needs roughly X min on kepler.SCHWINGE and 14
min on coulomb.SCHWINGE.
@@ -1240,11 +1331,12 @@ TODO.
$ make -k install_root=/INVALID check fast-check=yes 2>&1 | tee log_test
[...]
-This needs roughly X min on kepler.SCHWINGE and 60 min on coulomb.SCHWINGE.
+This needs roughly X min on kepler.SCHWINGE and 145 min on coulomb.SCHWINGE.
Specifying `fast-check=yes` disables the `conformtest` which takes 1.75 h (out
of 2.75 h total) on coulomb.SCHWINGE, doesn't pass anyway, and clearly isn't
our most critical issue to solve.
+`elf/tst-xmmymm.out` is another candidate to disable: needs 90 min to run.
## Analysis
@@ -1270,16 +1362,6 @@ Failures, mostly in order of appearance:
SIGSEGV. Or SIGILL.
- * `stdlib/bug-getcontext.out`
-
- getcontext failed, errno: 1073741902.
-
- [[Not implemented|t/tls-threadvar]].
- In 8958805c11c741d9211e20612c86271d906c9a0b
- testing, `stdlib/bug-getcontext.out` now says: *Skipping test; no support
- for FP exceptions.*, in cba1c83ad62a11347684a9daf349e659237a1741 testing,
- it's back to the previous failure.
-
* `stdlib/tst-secure-getenv.out`
open (/proc/self/exe): No such file or directory
@@ -1299,6 +1381,8 @@ Failures, mostly in order of appearance:
* `libio/tst-atime.out`, `dirent/tst-fdopendir.out`
+ [[!message-id "201305102256.56636.toscano.pino@tiscali.it"]].
+
`libio/tst-atime.out`:
atime has not changed
@@ -1389,6 +1473,8 @@ Failures, mostly in order of appearance:
* `posix/bug-glob2.out`
+ Intermittent.
+
Timed out: killed the child process
* `posix/annexc.out`
@@ -1460,6 +1546,10 @@ Failures, mostly in order of appearance:
Perhps because we implement `vfork` in terms of `fork` (`posix/vfork.c`)?
+ * `posix/tst-pathconf.out`
+
+ pathconf on directory failed: (os/kern) successful
+
* `io/test-lfs.out`
/home/thomas/tmp/glibc/tschwinge/Roger_Whittaker.build/io/test-lfs: cannot write test string to large file: Invalid argument
@@ -1471,17 +1561,6 @@ Failures, mostly in order of appearance:
`futimesat` is a stub.
- * `resource/bug-ulimit1.out`
-
- Result of ulimit (UL_SETFSIZE, 10000): 0
- Result of ulimit(UL_GETFSIZE): 10000
-
- Buggy sysdeps/unix/bsd/ulimit.c return values.
-
- [[!message-id "201211182342.51619.toscano.pino@tiscali.it"]]
-
- Fixed in glibc >= 2.18.
-
* `misc/tst-pselect.o`
tst-pselect.c: In function 'do_test':
@@ -1610,7 +1689,7 @@ Failures, mostly in order of appearance:
SIGSEGV.
- * `elf/tst-audit1.out`, `elf/tst-audit2.out`
+ * `elf/tst-audit1.out`, `elf/tst-audit2.out`, `elf/tst-audit8.out`
SIGKILL.
@@ -1631,6 +1710,11 @@ Failures, mostly in order of appearance:
A lot. Including `/usr/include/device/*.h`, `/usr/include/mach/*.h`,
`/usr/include/hurd/*.h`.
+ * `debug/tst-longjmp_chk2.out`, `debug/tst-longjmp_chk3.out`,
+ `debug/tst-longjmp_chk4.out`, `debug/tst-longjmp_chk5.out`
+
+ All say: `Obtained backtrace with 0 functions`.
+
Earlier failures; no longer seen:
* `test-assert-perr.out`
@@ -1681,6 +1765,21 @@ Earlier failures; no longer seen:
As of 8958805c11c741d9211e20612c86271d906c9a0b, this test now passes --
correct?
+ * `stdlib/bug-getcontext.out`
+
+ getcontext failed, errno: 1073741902.
+
+ Fixed, implemented in `t/context_functions`.
+
+ * `resource/bug-ulimit1.out`
+
+ Result of ulimit (UL_SETFSIZE, 10000): 0
+ Result of ulimit(UL_GETFSIZE): 10000
+
+ Buggy `sysdeps/unix/bsd/ulimit.c` return values.
+
+ Fixed, [[!message-id "201211182342.51619.toscano.pino@tiscali.it"]].
+
Compared to Debian:
$ bash ~/tmp/glibc/debian/eglibc-2.13/debian/testsuite-checking/convertlog.sh log_test > log_test.filtered