summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--faq/off.mdwn5
-rw-r--r--open_issues/gccgo.mdwn6
-rw-r--r--open_issues/glibc.mdwn95
-rw-r--r--open_issues/glibc/t/tls-threadvar.mdwn56
-rw-r--r--open_issues/libpthread.mdwn3
m---------toolchain/logs10
6 files changed, 76 insertions, 99 deletions
diff --git a/faq/off.mdwn b/faq/off.mdwn
index 15f3c8d1..4d012449 100644
--- a/faq/off.mdwn
+++ b/faq/off.mdwn
@@ -24,6 +24,7 @@ will not work. Simply use the equivalent shortcuts
to respectively shutdown and reboot Hurd, provided natively,
instead of from SYSV runlevels.
-GNU/Mach does not have APM or ACPI support, so it will just stop with
-`In tight loop: hit ctrl-alt-del to reboot`, and you can switch off the
+[[!tag open_issue_gnumach]]
+GNU Mach does not have APM or ACPI support, so it will just stop with
+`In tight loop: hit ctl-alt-del to reboot`, and you can switch off the
system.
diff --git a/open_issues/gccgo.mdwn b/open_issues/gccgo.mdwn
index fb94cb83..9e724b95 100644
--- a/open_issues/gccgo.mdwn
+++ b/open_issues/gccgo.mdwn
@@ -34,8 +34,8 @@ First, make the language functional, have its test suite pass without errors.
## Svante's work
Per [[!message-id "1335509732.3707.179.camel@hp.my.own.domain"]], Svante has
-been working on this, has some (unpublished) patches, and this is currently
-blocked on [[`getcontext`/`setcontext`|open_issues/glibc/t/tls-threadvar]].
+been working on this, has some (unpublished) patches, and this was blocked on
+[[`getcontext`/`makecontext`/`setcontext`/`swapcontext`|glibc]].
## `getcontext`/`makecontext`/`setcontext`/`swapcontext` usage analysis
@@ -53,7 +53,7 @@ The `*context` functions are used in `libgo/runtime/go-signal.c` and
`__splitstack_makecontext`, `__splitstack_resetcontext`,
`__splitstack_block_signals_context` are to be provided by libgcc. However, in
said libgo runtime files, they're used only `#ifdef USING_SPLIT_STACK`.
-[[I|ŧschwinge]] would assume that before we can enable split stacks, first
+[[I|tschwinge]] would assume that before we can enable split stacks, first
[[open_issues/glibc/t/tls-threadvar]] needs to be fixed.
In `libgo/runtime/proc.c`:`runtime_gogo`, `setcontext` is used to *switch
diff --git a/open_issues/glibc.mdwn b/open_issues/glibc.mdwn
index 33a1a071..ed5ca3e8 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 542f94662e8235d9917b0783df70bcdf9d729503
+(2013-02-02) 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`
@@ -373,6 +373,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]]
@@ -1102,8 +1129,8 @@ 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))
+93236ed3b6207dc9544dda6615c94c938d29ae6b (2013-05-21;
+542f94662e8235d9917b0783df70bcdf9d729503 (2013-02-02))
sources|source_repositories/glibc]], run on coulomb.SCHWINGE.
$ export LC_ALL=C
@@ -1224,7 +1251,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 +1267,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 +1298,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
@@ -1372,6 +1390,8 @@ Failures, mostly in order of appearance:
* `posix/bug-glob2.out`
+ Intermittent.
+
Timed out: killed the child process
* `posix/annexc.out`
@@ -1454,17 +1474,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':
@@ -1593,7 +1602,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.
@@ -1614,6 +1623,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`
@@ -1664,6 +1678,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
diff --git a/open_issues/glibc/t/tls-threadvar.mdwn b/open_issues/glibc/t/tls-threadvar.mdwn
index 5f1345c6..105a07c7 100644
--- a/open_issues/glibc/t/tls-threadvar.mdwn
+++ b/open_issues/glibc/t/tls-threadvar.mdwn
@@ -64,59 +64,3 @@ dropped altogether, and `__thread` directly be used in glibc.
<youpi> I saw the mails, but didn't investigate at all
[[!message-id "878vdyqht3.fsf@kepler.schwinge.homeip.net"]].
-
-
-# `getcontext`/`setcontext`
-
-Needed for [[gccgo]].
-
-Instead of adding support for `getcontext`/`setcontext` within the Hurd
-threadvar context, which might become a bit ugly, the idea is to get rid of
-Hurd threadvars and replace them with TLS (as we want to, anyway).
-
-
-## IRC, freenode, #hurd, 2012-04-19
-
- <gnu_srs> How much work/knowledge is needed to implement
- getcontext/setcontext?
- <gnu_srs> Any already implemented alternatives available?
- <youpi> x86 registers knowledge, as well as unix signal masks
- <youpi> there's the linux implementation that can be taken as an
- exxample, but the signal part has to be rewritten
- <gnu_srs> Well, it's a pity they are not implemented. That's the
- remaining hurdle to get gccgo working :-(
- <youpi> uh :/
- <gnu_srs> Everything builds, but the testsuite fails due to these
- missing functions.
- <gnu_srs> Regarding getcontext/setcontext they seem to be written
- in assembly for linux but the code is not very long.
- <gnu_srs> How much effort would it be to write something similar
- for Hurd? Anybody fluent in asm?
- <gnu_srs> And registers and signals.
- <tschwinge> gnu_srs: Signals is the key thing -- everything else we
- can probably just copy. I have never/not yet looked at it,
- though.
- <gnu_srs> For kfreebsd it is written in C: kern_context.c, 3/4 in
- one file: getcontext, setcontext, swapcontext, not makecontext.
- <gnu_srs> Dunno how much assembly calls used though.
- <gnu_srs> Hi, any preferences about implementing get/setcontext in
- C or Asm?
- <tschwinge> gnu_srs: I think these will have to be implemented in
- assembly. Based on the Linux x86 variants.
-
-
-### IRC, freenode, #hurd, 2012-04-20
-
- <tschwinge> youpi: Your understanding of that is better than mine
- -- the *context stuff can't be very useful at the moment, because
- when the user changes uc_stack.ss_sp (which the glibc tests are
- doing), we're losing access to the _hurd_threadvars. Correct?
- <tschwinge> At least the getcontext test works, the other get a
- SIGILL.
- <tschwinge> others
- <tschwinge> _hurd_threadvars issue is just guessing.
- <youpi> tschwinge: yes, threadvars are on the stack
- <youpi> threadvars is not much code, it should just work, but care
- has to be taken on the libpthread/libthread side, which does some
- initialization
- <tschwinge> OK, that at least matches my understanding.
diff --git a/open_issues/libpthread.mdwn b/open_issues/libpthread.mdwn
index 28532320..e2fda122 100644
--- a/open_issues/libpthread.mdwn
+++ b/open_issues/libpthread.mdwn
@@ -601,6 +601,9 @@ Most of the issues raised on this page has been resolved, a few remain.
<tschwinge> Mhm, I see.
<braunr> so for now, i'm using this approach as a hack only
<tschwinge> I'm working on phasing out threadvars, but we're not there yet.
+
+[[glibc/t/tls-threadvar]].
+
<tschwinge> Yes, that's fine for the moment.
<braunr> tschwinge: a simple definition wouldn't work
<braunr> tschwinge: i resorted to a weak symbol, and see how it goes
diff --git a/toolchain/logs b/toolchain/logs
-Subproject a264dc206a1ebd541f01d3f3c496a80b3b8d978
+Subproject 366196b0ec8c8d5dd91ee7b71dcd05c76239bf3