diff options
-rw-r--r-- | open_issues/binutils.mdwn | 150 | ||||
-rw-r--r-- | open_issues/boehm_gc.mdwn | 151 | ||||
-rw-r--r-- | open_issues/code_analysis.mdwn | 11 | ||||
-rw-r--r-- | open_issues/gcc.mdwn | 329 | ||||
-rw-r--r-- | open_issues/gcc/libmudflap.mdwn | 74 | ||||
-rw-r--r-- | open_issues/glibc.mdwn | 90 | ||||
-rw-r--r-- | open_issues/gnumach_memory_management_2.mdwn | 31 | ||||
-rw-r--r-- | open_issues/libpager_deadlock.mdwn | 6 | ||||
-rw-r--r-- | open_issues/nptl.mdwn | 16 | ||||
-rw-r--r-- | open_issues/translate_fd_or_port_to_file_name.mdwn | 7 | ||||
-rw-r--r-- | source_repositories/glibc.mdwn | 25 | ||||
m--------- | toolchain/logs | 10 | ||||
-rw-r--r-- | user/Sergio_Lopez.mdwn | 4 |
13 files changed, 584 insertions, 320 deletions
diff --git a/open_issues/binutils.mdwn b/open_issues/binutils.mdwn index 15ddcc7b..7a887d52 100644 --- a/open_issues/binutils.mdwn +++ b/open_issues/binutils.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2012, 2013, 2014 Free -Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2015 +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 @@ -47,8 +47,8 @@ git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefi --> -Last reviewed up to Git commit 05db5edd7923711a20c6225ea8e15f36e819d140 -(2014-09-16). +Last reviewed up to Git commit 110f91128cf3e047eb1e04d346c27d71cc33fb9c +(2015-04-19). * Globally @@ -96,6 +96,16 @@ Last reviewed up to Git commit 05db5edd7923711a20c6225ea8e15f36e819d140 * `gas/` + * `config/tc-i386.c` + + #ifdef TE_LINUX + /* Default to compress debug sections for Linux. */ + int flag_compress_debug = 1; + #endif + + This has received quite some criticism, but it has not yet been + corrected. + * `config/te-gnu.h` C.f. `te-linux.h`; search tree for `TE_LINUX` vs. `TE_GNU` usage. @@ -192,6 +202,26 @@ Last reviewed up to Git commit 05db5edd7923711a20c6225ea8e15f36e819d140 * `dr_status_mirror` is not really used anywhere. Get rid of it; or, update it everytime the real value is read from the kernel? + * TODO + + {+set_gdbarch_vsyscall_range (gdbarch, linux_vsyscall_range);+} + {+ set_gdbarch_infcall_mmap (gdbarch, linux_infcall_mmap);+} + + * TODO + + diff --git ./gdb/doc/gdb.texinfo ./gdb/doc/gdb.texinfo + @@ -17340,6 +17433,24 @@ Access to those variables will generate a compiler error which @value{GDBN} + will print to the console. + @end table + + {+@subsection Compiler search for the @code{compile} command+} + {+[...]+} + {+Specifically @code{PATH} is searched for binaries matching regular expression+} + {+@code{@var{arch}(-[^-]*)?-@var{os}-gcc} [...]. @var{os} is currently supported only for+} + {+pattern @code{linux(-gnu)?}.+} + + * Check testsuite with check-read1 / READ1=t [./gdb/testsuite/README] + * `libdecnumber/` Should/can probably align to GNU/Linux. @@ -212,6 +242,27 @@ Last reviewed up to Git commit 05db5edd7923711a20c6225ea8e15f36e819d140 Compare to `i[3-7]86-*-linux-*`, but don't need a.out (`i386linux`) and 64 bit support. + * Linuxism + + diff --git ./ld/testsuite/ld-i386/i386.exp ./ld/testsuite/ld-i386/i386.exp + @@ -263,3 +263,93 @@ run_dump_test "pr12627" + {+# Must be Linux native with the C compiler+} + {+if { [isnative]+} + {+ && [istarget "i?86-*-linux*"]+} + +[...] + + {+ PASS: ld-i386/pr17935-1+} + {+ PASS: ld-i386/pr17935-2+} + {+-PASS: Build plt-lib.so+} + {+-PASS: Build libplt-main1.a+} + {+-PASS: Build libplt-main2.a+} + {+-PASS: Build libplt-main3.a+} + {+-PASS: Build libplt-main4.a+} + {+-PASS: Build plt-main+} + {+-PASS: Build plt-main with PIE+} + {+-PASS: Run plt-main+} + {+-PASS: Run plt-main with PIE+} + * `__ehdr_start symbol`, c84ed8d89d0b8bf5a2968d465f77ac24bcfc40c2 -- can this be helpful in the exec server, glibc, or elsewhere? Used in GDB (BFD) commit bdbd9758806ed855af89244870fdc52cf3ff09bc. @@ -259,12 +310,13 @@ dereferencing type-punned pointer will break strict-aliasing rules* in the MIG-generated stub files; thus no `-Werror` until that is resolved ([[strict_aliasing]]). -This takes up around 1.3 GiB, and runs for [[22 min|performance#measure]] on -kepler.SCHWINGE and [[21 min|performance#measure]] on laplace.SCHWINGE. +This takes up around 1.4 GiB, and runs for [[22 min|performance#measure]] on +kepler.SCHWINGE and [[16 min|performance#measure]] on laplace.SCHWINGE. <!-- $ (make && touch .go-install) 2>&1 | tee log_build_ && test -f .go-install && (make install && touch .go-test) 2>&1 | tee log_install && test -f .go-test && make -k check 2>&1 | tee log_test + $ (make && touch .go-install) 2>&1 | tee log_build_ && test -f .go-install && (make install && touch .go-test) 2>&1 | tee log_install && test -f .go-test && LD_PRELOAD=$HOME/fopen,unlink-NULL-wrapper.so make -k check 2>&1 | tee log_test --> @@ -323,6 +375,16 @@ formats, and more emulation vectors. check takes a rather long time to determine the result, `int,int,long,long`. + * Something's wrong with Hurd's [[!tag open_issue_glibc]]`rename`? + + -checking whether rename honors trailing slash on destination... yes + -checking whether rename honors trailing slash on source... yes + +checking whether rename honors trailing slash on destination... no + +checking whether rename honors trailing slash on source... no + + - -e 's|@''REPLACE_RENAME''@|0|g' \ + + -e 's|@''REPLACE_RENAME''@|1|g' \ + # Install @@ -345,7 +407,7 @@ kepler.SCHWINGE and [[1 min|performance#measure]] on laplace.SCHWINGE. $ make -k check 2>&1 | tee log_test [...] -This runs for [[26 min|performance#measure]] on kepler.SCHWINGE and [[63 +This runs for [[34 min|performance#measure]] on kepler.SCHWINGE and [[45 min|performance#measure]] on laplace.SCHWINGE. When running `make -k check 2>&1 | tee log_test`, at the end of the testsuite @@ -353,8 +415,65 @@ the `tee` process does not terminate if there are still stray leftover processes that [have their stdout/stderr open](http://sourceware.org/ml/gdb-patches/2012-10/msg00489.html). `kill`ing these (`SIGKILL` may be needed), makes the `tee` process terminate, too. On -GNU/Hurd, these generally are `gdb.base/sigaltstack`, `gdb.base/siginfo`, -`gdb.multi/watchpoint-multi`, `gdb.threads/watchthreads`. +GNU/Hurd, these generally are `gdb.base/sigaltstack`, `gdb.base/siginfo`, and +`gdb.threads/watchthreads`. + +On laplace.SCHWINGE, running with +`LD_PRELOAD=$HOME/fopen,unlink-NULL-wrapper.so` to get past [[!message-id +"87a907b5f3.fsf@kepler.schwinge.homeip.net"]]. + + COLLECT_GCC=gcc-4.9 COLLECT_LTO_WRAPPER=/usr/lib/gcc/i586-linux-gnu/4.9/lto-wrapper COMPILER_PATH=gcctestdir/:/usr/lib/gcc/i586-linux-gnu/4.9/:/usr/lib/gcc/i586-linux-gnu/4.9/:/usr/lib/gcc/i586-linux-gnu/:/usr/lib/gcc/i586-linux-gnu/4.9/:/usr/lib/gcc/i586-linux-gnu/ LIBRARY_PATH=gcctestdir/:/usr/lib/gcc/i586-linux-gnu/4.9/:/usr/lib/gcc/i586-linux-gnu/4.9/../../../i386-linux-gnu/:/usr/lib/gcc/i586-linux-gnu/4.9/../../../../lib/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib/i386-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/i586-linux-gnu/4.9/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-Wextra -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -D _LARGEFILE_SOURCE -D _FILE_OFFSET_BITS=64 -fmerge-constants -g -O2 -fno-use-linker-plugin -o incremental_test -B gcctestdir/ -v -mtune=generic -march=i586' gdb -q --args /usr/lib/gcc/i586-linux-gnu/4.9/collect2 --sysroot=/ --build-id --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 -o incremental_test /usr/lib/gcc/i586-linux-gnu/4.9/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i586-linux-gnu/4.9/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i586-linux-gnu/4.9/crtbegin.o -Lgcctestdir -L/usr/lib/gcc/i586-linux-gnu/4.9 -L/usr/lib/gcc/i586-linux-gnu/4.9/../../../i386-linux-gnu -L/usr/lib/gcc/i586-linux-gnu/4.9/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i586-linux-gnu/4.9/../../.. --incremental-full incremental_test_1.o incremental_test_2.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i586-linux-gnu/4.9/crtend.o /usr/lib/gcc/i586-linux-gnu/4.9/../../../i386-linux-gnu/crtn.o -debug + break __fopen_internal + r + (possibly) c + Breakpoint 1, __fopen_internal (filename=filename@entry=0x0, mode=mode@entry=0x809b4a7 "r", is32=is32@entry=0) at iofopen.c:65 + 65 in iofopen.c + (gdb) bt + #0 __fopen_internal (filename=filename@entry=0x0, mode=mode@entry=0x809b4a7 "r", is32=is32@entry=0) at iofopen.c:65 + #1 0xb7e38c1b in _IO_fopen64 (filename=0x0, mode=0x809b4a7 "r") at iofopen64.c:39 + #2 0x0804c289 in ?? () + #3 0x0804e670 in ?? () + #4 0x0804aa8d in ?? () + #5 0xb7deba73 in __libc_start_main (main=0x804a080, argc=38, argv=0xbfffe6a4, init=0x8098f90, fini=0x8099000, rtld_fini=0xb7fedc90 <_dl_fini>, + stack_end=0xbfffe69c) at libc-start.c:287 + #6 0x0804b3a2 in ?? () + (and another one after that) + +Goes away if `-debug` is removed. + + commit 9a65bef918dd14d722ef2a1fec90f527158eabe0 + Author: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> + Date: Tue Jun 11 08:21:22 2013 +0000 + + 2013-06-11 Richard Biener <rguenther@suse.de> + + * collect2.c (main): Do not redirect ld stdout/stderr when + debugging. + + + git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199936 138bc75d-0d04-0410-961f-82ee72b054a4 + + diff --git gcc/collect2.c gcc/collect2.c + index 99dd41d..d3119b0 100644 + --- gcc/collect2.c + +++ gcc/collect2.c + @@ -1189,8 +1189,11 @@ main (int argc, char **argv) + #ifdef COLLECT_EXPORT_LIST + export_file = make_temp_file (".x"); + #endif + - ldout = make_temp_file (".ld"); + - lderrout = make_temp_file (".le"); + + if (!debug) + + { + + ldout = make_temp_file (".ld"); + + lderrout = make_temp_file (".le"); + + } + + id:"alpine.LNX.2.00.1306101358420.26078@zhemvz.fhfr.qr" + +Does this also cause: + + [-FAIL:-]{+PASS:+} justsyms ## Analysis @@ -584,6 +703,15 @@ like `gdb/testsuite/boards/cc-with-tweaks.exp` would help, or setting (gdb) kill Kill the program being debugged? (y or n) y + * `gdb.base/fileio.exp` + + FAIL: gdb.base/fileio.exp: Stat a NULL pathname returns ENOENT or EFAULT + FAIL: gdb.base/fileio.exp: Stat an empty pathname returns ENOENT + FAIL: gdb.base/fileio.exp: Stat a nonexistant file returns ENOENT (the program is no longer running) + FAIL: gdb.base/fileio.exp: [...] (the program is no longer running) + + Is this actually a correct assumption? + * `gdb.base/random-signal.exp` Several things (suddenly?) seem to go wrong here. It seems we do hit @@ -1026,10 +1154,6 @@ like `gdb/testsuite/boards/cc-with-tweaks.exp` would help, or setting TODO. - * GDB: *Memory at address 0 is possibly executable*, and similar others - - [[!message-id "878ulqqlrr.fsf@schwinge.name"]]. - TODO. diff --git a/open_issues/boehm_gc.mdwn b/open_issues/boehm_gc.mdwn index 2913eea8..535bed61 100644 --- a/open_issues/boehm_gc.mdwn +++ b/open_issues/boehm_gc.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2010, 2012, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2010, 2012, 2013, 2014, 2015 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 @@ -27,15 +27,15 @@ committed upstream should very like also be made there. <!-- git checkout reviewed -git log --reverse --pretty=fuller --stat=$COLUMNS,$COLUMNS -w -p -C --cc ..upstream/master +git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefix=./ --word-diff --color --find-renames --ignore-space-change ..upstream/master | awk '/^(\x1b\[[0-9]+m)?diff/ { c = " " $0; } /^(\x1b\[[0-9]+m)?@@/ { print c; } { print; }' | less -i -/^commit |^---$|hurd|linux|glibc +/hurd|linux|glibc --> -Last reviewed up to the 5f492b98dd131bdd6c67eb56c31024420c1e7dab (2012-06-08) -sources, and for `libatomic_ops` to the -6a0afde033f105c6320f1409162e3765a1395bfd (2012-05-15) sources. +Last reviewed up to Git commit bf62552626acc7ad8babdc350a6365cb97ec8776 +(2015-01-07), and for `libatomic_ops` to Git commit +09887cae2790e29ff535cc56f7bd0c4459ef4e2b (2015-01-09). * `configure.ac` @@ -280,18 +280,116 @@ sources, and for `libatomic_ops` to the * Check `include/private/thread_local_alloc.h` re `USE_COMPILER_TLS`/`USE_PTHREAD_SPECIFIC`. + * TODO: + + * `diff --git ./include/private/gcconfig.h ./include/private/gcconfig.h` + + {+#if defined(LINUX) || defined(FREEBSD) || defined(SOLARIS) || defined(IRIX5) \+} + {+ || ((defined(USE_MMAP) || defined(USE_MUNMAP)) && !defined(USE_WINALLOC))+} + {+# define MMAP_SUPPORTED+} + {+#endif+} + + * `diff --git ./include/private/gcconfig.h ./include/private/gcconfig.h` + + #if !defined(CAN_HANDLE_FORK) && !defined(NO_HANDLE_FORK) \ + && [-((defined(GC_PTHREADS)-]{+!defined(HAVE_NO_FORK) \+} + && [-!defined(HURD)-]{+((defined(GC_PTHREADS)+} && !defined(NACL) \ + &&[-!defined(PLATFORM_ANDROID) &&-] !defined(GC_WIN32_PTHREADS)[-\-] && !defined(USE_WINALLOC)) \ + || (defined(DARWIN) && defined(MPROTECT_VDB)) || defined(HANDLE_FORK)) + /* Attempts (where supported and requested) to make GC_malloc work in */ + /* a child process fork'ed from a multi-threaded parent. */ + # define CAN_HANDLE_FORK + #endif + + {+#if defined(CAN_HANDLE_FORK) && !defined(CAN_CALL_ATFORK) \+} + {+ && !defined(HURD) && !defined(PLATFORM_ANDROID)+} + {+ /* Have working pthread_atfork(). */+} + {+# define CAN_CALL_ATFORK+} + {+#endif+} + + * `diff --git ./include/private/gcconfig.h ./include/private/gcconfig.h` + + {+#if (defined(FREEBSD) || (defined(DARWIN) && !defined(_POSIX_C_SOURCE)) \+} + {+ || (defined(SOLARIS) && (!defined(_XOPEN_SOURCE) \+} + {+ || defined(__EXTENSIONS__))) \+} + {+ || defined(LINUX)) && !defined(HAVE_DLADDR)+} + {+# define HAVE_DLADDR+} + {+#endif+} + + * `diff --git ./os_dep.c ./os_dep.c` + + @@ -3038,9 +3005,11 @@ GC_API GC_push_other_roots_proc GC_CALL GC_get_push_other_roots(void) + /* Also old MSWIN32 ACCESS_VIOLATION filter */ + # if !defined(MSWIN32) && !defined(MSWINCE) + STATIC SIG_HNDLR_PTR GC_old_bus_handler = 0; + {+# if defined(FREEBSD) || defined(HURD) || defined(HPUX)+} + STATIC GC_bool GC_old_bus_handler_used_si = FALSE; + {+# endif+} + STATIC GC_bool GC_old_segv_handler_used_si = FALSE; + + * `diff --git ./os_dep.c ./os_dep.c` + + @@ -3192,20 +3169,22 @@ GC_API GC_push_other_roots_proc GC_CALL GC_get_push_other_roots(void) + # else + GC_bool used_si; + + {+# if defined(FREEBSD) || defined(HURD) || defined(HPUX)+} + if (sig == [-SIGSEGV) {-] + [- old_handler = GC_old_segv_handler;-] + [- used_si = GC_old_segv_handler_used_si;-] + [- } else-]{+SIGBUS)+} { + old_handler = GC_old_bus_handler; + used_si = GC_old_bus_handler_used_si; + {+} else+} + {+# endif+} + {+ /* else */ {+} + {+ old_handler = GC_old_segv_handler;+} + {+ used_si = GC_old_segv_handler_used_si;+} + } + # endif + + * `diff --git ./os_dep.c ./os_dep.c` + + # if defined(HPUX) || defined(LINUX) || defined(HURD) \ + || (defined(FREEBSD) && defined(SUNOS5SIGS)) + sigaction(SIGBUS, &act, &oldact); + if [-(oldact.sa_flags-]{+((oldact.sa_flags+} & SA_SIGINFO) {+!= 0)+} { + GC_old_bus_handler = oldact.sa_sigaction; + {+# if !defined(LINUX)+} + GC_old_bus_handler_used_si = TRUE; + {+# endif+} + } else { + GC_old_bus_handler = (SIG_HNDLR_PTR)oldact.sa_handler; + {+# if !defined(LINUX)+} + GC_old_bus_handler_used_si = FALSE; + {+# endif+} + } + if (GC_old_bus_handler == (SIG_HNDLR_PTR)SIG_IGN) { + [-if (GC_print_stats)-] + [- GC_err_printf("Previously-]{+WARN("Previously+} ignored bus [-error!?\n");-]{+error!?\n", 0);+} + {+# if !defined(LINUX)+} + GC_old_bus_handler = (SIG_HNDLR_PTR)SIG_DFL; + {+# else+} + {+ /* GC_old_bus_handler is not used by GC_write_fault_handler. */+} + {+# endif+} + } {+else+} if (GC_old_bus_handler != (SIG_HNDLR_PTR)SIG_DFL) { + [-if (GC_print_stats == VERBOSE)-] + [- GC_log_printf("Replaced-]{+GC_VERBOSE_LOG_PRINTF("Replaced+} other SIGBUS handler\n"); + } + # endif /* HPUX || LINUX || HURD || (FREEBSD && SUNOS5SIGS) */ + # Build -Here's a log of a binutils build run; this is from the -5f492b98dd131bdd6c67eb56c31024420c1e7dab (2012-06-08) sources, and for -`libatomic_ops` for the 6a0afde033f105c6320f1409162e3765a1395bfd (2012-05-15) -sources, run on kepler.SCHWINGE and coulomb.SCHWINGE. +Here's a log of a boehm-gc build run; this is from Git commit +bf62552626acc7ad8babdc350a6365cb97ec8776 (2015-01-07), and for `libatomic_ops` +Git commit 09887cae2790e29ff535cc56f7bd0c4459ef4e2b (2015-01-09), run on +kepler.SCHWINGE and laplace.SCHWINGE. $ export LC_ALL=C $ (cd ../master/ && ln -sfn ../libatomic_ops/master libatomic_ops) $ (cd ../master/ && autoreconf -vfi) - $ ../master/configure --prefix="$PWD".install SHELL=/bin/bash CC=gcc-4.6 CXX=g++-4.6 --enable-cplusplus --enable-gc-debug --enable-gc-assertions --enable-assertions 2>&1 | tee log_build + $ ../master/configure --prefix="$PWD".install SHELL=/bin/bash CC=gcc-4.9 CXX=g++-4.9 --enable-cplusplus --enable-gc-debug --enable-gc-assertions --enable-assertions 2>&1 | tee log_build [...] $ make 2>&1 | tee log_build_ [...] @@ -299,20 +397,16 @@ sources, run on kepler.SCHWINGE and coulomb.SCHWINGE. Different hosts may default to different shells and compiler versions; thus harmonized. Using bash instead of dash as otherwise libtool explodes. -This takes up around X MiB, and needs roughly X min on kepler.SCHWINGE and -X min on coulomb.SCHWINGE. - <!-- - $ (make && touch .go-install) 2>&1 | tee log_build_ && test -f .go-install && (make install && touch .go-check) 2>&1 | tee log_install && test -f .go-check && { make -k check 2>&1 | tee log_check; (cd libatomic_ops/ && make -k check) 2>&1 | tee log_check_; } + $ (make && touch .go-install) 2>&1 | tee log_build_ && test -f .go-install && (make install && touch .go-test) 2>&1 | tee log_install && test -f .go-test && { make -k check 2>&1 | tee log_test; (cd libatomic_ops/ && make -k check) 2>&1 | tee log_test_; } --> + ## Analysis - $ ssh kepler.SCHWINGE 'cd tmp/source/boehm-gc/ && cat master.build/log_build* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' > toolchain/logs/boehm-gc/linux/log_build - $ ssh coulomb.SCHWINGE 'cd tmp/boehm-gc/ && cat master.build/log_build* | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > toolchain/logs/boehm-gc/hurd/log_build - $ diff -wu <(sed -f toolchain/logs/boehm-gc/linux/log_build.sed < toolchain/logs/boehm-gc/linux/log_build) <(sed -f toolchain/logs/boehm-gc/hurd/log_build.sed < toolchain/logs/boehm-gc/hurd/log_build) > toolchain/logs/boehm-gc/log_build.diff + $ toolchain/logs/process boehm-gc build * only GNU/Linux: `configure: WARNING: "Explicit GC_INIT() calls may be required."` @@ -326,32 +420,23 @@ X min on coulomb.SCHWINGE. $ make install 2>&1 | tee log_install [...] -This takes up around X MiB, and needs roughly X min on kepler.SCHWINGE and X -min on coulomb.SCHWINGE. - ## Analysis - $ ssh kepler.SCHWINGE 'cd tmp/source/boehm-gc/ && cat master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' > toolchain/logs/boehm-gc/linux/log_install - $ ssh coulomb.SCHWINGE 'cd tmp/boehm-gc/ && cat master.build/log_install | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > toolchain/logs/boehm-gc/hurd/log_install - $ diff -wu toolchain/logs/boehm-gc/linux/log_install toolchain/logs/boehm-gc/hurd/log_install > toolchain/logs/boehm-gc/log_install.diff + $ toolchain/logs/process boehm-gc install # Testsuite - $ make -k check + $ make -k check 2>&1 | tee log_test [...] - $ (cd libatomic_ops/ && make -k check) + $ (cd libatomic_ops/ && make -k check) 2>&1 | tee log_test_ [...] -This needs roughly X min on kepler.SCHWINGE and X min on coulomb.SCHWINGE. - ## Analysis - $ ssh kepler.SCHWINGE 'cd tmp/source/boehm-gc/ && cat master.build/log_check* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' > toolchain/logs/boehm-gc/linux/log_check - $ ssh coulomb.SCHWINGE 'cd tmp/boehm-gc/ && cat master.build/log_check* | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > toolchain/logs/boehm-gc/hurd/log_check - $ diff -wu <(sed -f toolchain/logs/boehm-gc/linux/log_check.sed < toolchain/logs/boehm-gc/linux/log_check) <(sed -f toolchain/logs/boehm-gc/hurd/log_check.sed < toolchain/logs/boehm-gc/hurd/log_check) > toolchain/logs/boehm-gc/log_check.diff + $ toolchain/logs/process boehm-gc test There are different configurations possible, but in general, the testsuite restults of GNU/Linux and GNU/Hurd look very similar. @@ -374,6 +459,8 @@ restults of GNU/Linux and GNU/Hurd look very similar. * <http://www.hpl.hp.com/personal/Hans_Boehm/gc/#users> + * [[!wikipedia Boehm_garbage_collector]] + ## IRC, OFTC, #debian-hurd, 2012-02-05 diff --git a/open_issues/code_analysis.mdwn b/open_issues/code_analysis.mdwn index 2e10da80..71a6bcff 100644 --- a/open_issues/code_analysis.mdwn +++ b/open_issues/code_analysis.mdwn @@ -264,6 +264,17 @@ There is a [[!FF_project 276]][[!tag bounty]] on some of these tasks. some)](http://www.socallinuxexpo.org/scale11x/presentations/trinity-linux-kernel-fuzz-tester-and-then-some), Dave Jones, The Eleventh Annual Southern California Linux Expo, 2013. + * [American fuzzy lop](https://code.google.com/p/american-fuzzy-lop/), *a + practical, instrumentation-driven fuzzer for binary formats*. + + * [Melkor - An ELF File Format + Fuzzer](https://www.blackhat.com/us-14/arsenal.html#Hernandez), + Alejandro Hernández. + + * Can use this to find bugs in our [[hurd/translator/exec]] server, + for example? See also the discussion in [[!message-id + "5452389B.502@samsung.com"]]. + * Mayhem, *an automatic bug finding system* IRC, freenode, #hurd, 2013-06-29: diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn index b46a48cc..8065a789 100644 --- a/open_issues/gcc.mdwn +++ b/open_issues/gcc.mdwn @@ -31,14 +31,14 @@ example. Especially all the compiler magic is all the same. <!-- git checkout reviewed -git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefix=./ --find-renames --ignore-space-change ..upstream/master | awk '/^diff/ { c = $0; } /^@@/ { print c; } { print; }' | less +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[^/]*)$|hurd|linux|nacl|nptl|glibc|gs: +/^---.*/([^.]*|.*\.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 --> -Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 -(2013-06-06) sources|source_repositories/gcc]]. +Last reviewed up to the [[Git mirror's c16b7ed55398d2ea55d9ab35519f20cc053b9d0a +(2015-01-19) sources|source_repositories/gcc]]. <http://gcc.gnu.org/install/configure.html> has documentation for the `configure` switches. @@ -61,7 +61,8 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 rename to `gnu-user` to reflect this? TODO. * `gcc/acinclude.m4`:`gcc_GAS_FLAGS`: always pass `--32` to assembler for - x86 Linux. (Why?) + x86 Linux. Probably we should just do the same, see `*-*-linux*` + comment in [[!message-id "87zjrjcasc.fsf@schwinge.name"]]. * `lib-prefix.m4` (present twice in GCC sources) contains one remaining `linux`-only case. @@ -277,18 +278,25 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 * `libgcc` - TODO: - * `config/t-linux` * `config/i386/t-linux` + + TODO, rename to `t-gnu-user`. + * `config/i386/linux-unwind.h` + TODO, probably needs porting, if we need this. + [[!GCC_PR 57851 desc="[patch] unwinding via signal trampoline for + kfreebsd*-gnu"]]. + * `libitm` TODO: * `libitm/config/linux` + * `liboffloadmic` + * `hurd/usr` `NATIVE_SYSTEM_HEADER_DIR`, `638454a19c1c08f01c10517bc72a114250fc4f33`, @@ -299,10 +307,33 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 * Eventually: get rid of this special-casing. [[!message-id "gckk1s$e0b$1@ger.gmane.org"]]. - * [[`libmudflap`|libmudflap]]. - * [`-fsplit-stack`](http://nickclifton.livejournal.com/6889.html) + #define TARGET_CAN_SPLIT_STACK + #define TARGET_THREAD_SPLIT_STACK_OFFSET 0x30 + + libgcc/config/i386/morestack.S + libgcc/config/i386/t-stack-i386 + libgcc/config/t-stack + libgcc/generic-morestack-thread.c + libgcc/generic-morestack.c + libgcc/generic-morestack.h + libgcc/config/i386/morestack.S: cmpl %gs:0x30,%eax # See if we have enough space. + libgcc/config/i386/morestack.S: # gcc/config/i386/linux.h. + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 # Save the new stack boundary. + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 # Save the new stack boundary. + libgcc/config/i386/morestack.S: movl %ecx,%gs:0x30 # Save new stack boundary. + libgcc/config/i386/morestack.S: # gcc/config/i386/linux64.h. + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 + libgcc/config/i386/morestack.S: movl %gs:0x30,%eax + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 + libgcc/generic-morestack-thread.c: can build glibc. */ + libgcc/generic-morestack-thread.c: not be necessary if glibc supports -fsplit-stack directly. */ + libgcc/generic-morestack.c: can build glibc. */ + libgcc/generic-morestack.c: since stack splitting only works on GNU/Linux anyhow. */ + libgcc/generic-morestack.c:#if defined(__GLIBC__) && defined(__linux__) + libgcc/generic-morestack.c: /* In glibc, the first two real time signals are used by the NPTL + IRC, freenode, #hurd, 2014-01-10: <gnu_srs1> Hi, I assume gcc -fsplit-stack is not yet supported? @@ -362,8 +393,7 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 * Might `-fsplit-stack` be useful for us with respect to our [[multithreaded|multithreading]] libraries? - * `gcc/ada`, `gcc/testsuite/ada`, `gcc/testsuite/gnat.dg`, `gnattools`, - `libada` (not reviewed) + * `gcc/ada` (not all reviewed) * [[Ada (GNAT)|GNAT]] support is work in progress. @@ -416,8 +446,6 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 commit a204f0622242865ffea889bd698bc7c7bd236bd1), commit 05c1aa95e6c37b3b281d749c76c673392941a031. - * Check before/after Joseph changes. (Should be fine.) - * 34618b3190c110b8926cc2b1db4b4eac95451995 »config-list.mk« What's this used for? (Check ML.) Ask to include i686-pc-gnu (once it is @@ -599,8 +627,131 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 A lot of Linux-specific things. + * 30f690e026ecdf99c68e777a48562b58afe37f43 `TARGET_LIBC_HAS_FUNCTION`. Where + is `targetm` set? All TARGET_C99_FUNCTIONS and TARGET_HAS_SINCOS gone? + + * `libvtv` + + * Disabled in `configure.tgt`. + + * `libvtv/vtv_rts.cc`: `if (strcmp (info->dlpi_name, "linux-vdso.so.1") + == 0)` -- not a problem for us, but... + + * `libvtv/vtv_rts.cc`: `/proc/self/exe` usage, `PATH_MAX`. + + * ./libgomp/testsuite/libgomp.c/affinity-1.c Linux usage + * `libcilkrts` + Disabled for Hurd. + + libcilkrts/Makefile.am: + + +# If we're building on Linux, use the Linux version script + +if LINUX_LINKER_SCRIPT + + libcilkrts_la_LDFLAGS += -Wl,--version-script,$(srcdir)/runtime/linux-symbols.ver + +endif + + libcilkrts/configure.ac: + + +# We have linker scripts for appropriate operating systems + +linux_linker_script=no + +case "${host}" in + + *-*-linux*) + + linux_linker_script=yes + + ;; + +esac + +AM_CONDITIONAL(LINUX_LINKER_SCRIPT, test "$linux_linker_script" = "yes") + + libcilkrts/runtime/cilk_malloc.c: + + +#if defined _WIN32 || defined _WIN64 || defined __linux__ + +#include <malloc.h> + +#define HAS_MEMALIGN 1 + +#endif + + libcilkrts/runtime/config/x86/cilk-abi-vla.c: + + +#if defined(__x86_64) + + // For Intel64 linux & MACH ABI, all the parameters were passed in + + // register, so top of the stack frame above the return address + + // is just the size of the return address plus + + // distance_from_sp_to_alloca_area on the chance that the alloca + + // area isn't at the very bottom of the calling functions stack. + +#elif defined(__MACH__) + + // For ia32 MACH, parameter size is always a mutliple of 16 + + // bytes to keep the stack 16 byte aligned. So we need to round + + // number of parameters up to multiple of 4. + + param_size = 8 * sizeof(char *); + +#else + + // For both windows Intel64 ABI, and the IA32 windows and + + // linux ABIs, space is reserved on the stack for all these + + // parameters. param_size is 5 * size of a stack slot. + + param_size = 5 * sizeof(char *); + +#endif + + +#if defined(__x86_64) + + // For Intel64 linux & MACH ABI, all the parameters were passed in + + // register, so top of the stack frame above the return address + + // is just the size of the return address plus + + // distance_from_sp_to_alloca_area on the chance that the alloca + + // area isn't at the very bottom of the calling functions stack. + +#elif defined(__MACH__) + + // For ia32 MACH, parameter size is always a mutliple of 16 + + // bytes to keep the stack 16 byte aligned. So we need to round + + // number of parameters up to multiple of 4. + + param_size = 8 * sizeof(char *); + +#else + + // For both windows Intel64 ABI, and the IA32 windows and + + // linux ABIs, space is reserved on the stack for all these + + // parameters. param_size is 5 * size of a stack slot. + + param_size = 6 * sizeof(char *); + +#endif + + libcilkrts/runtime/os-unix.c: + + +#ifdef __linux__ + + // define _GNU_SOURCE before *any* #include. + + // Even <stdint.h> will break later #includes if this macro is not + + // already defined when it is #included. + +# define _GNU_SOURCE + +#endif + + +#if defined __linux__ + +# include <sys/sysinfo.h> + +# include <sys/syscall.h> + + Syscall usage outside __linux__? + + Will run into: + + +#else + +#error "Unknown architecture" + + libcilkrts/runtime/sysdep-unix.c: + + +#ifdef __linux__ + + // define _GNU_SOURCE before *any* #include. + + // Even <stdint.h> will break later #includes if this macro is not + + // already defined when it is #included. + +# define _GNU_SOURCE + +#endif + + +#ifdef __linux__ + +# include <sys/resource.h> + +# include <sys/sysinfo.h> + +#endif + + +#if defined( __linux__) || defined(__VXWORKS__) + + pthread_t tid = *(pthread_t *)thread_id; + + if (i < 0 || i > g->total_workers) + + return 0; + + return g->sysdep->threads[i] == tid; + +#else + + // Needs to be implemented + + return 0; + +#endif + IRC, freenode, #hurd, 2014-01-10: <youpi> bwaarf, libcilkrts in gcc-4.9 @@ -612,42 +763,22 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 <http://news.gmane.org/find-root.php?message_id=%3C87wqjjo5kx.fsf%40kepler.schwinge.homeip.net%3E> resolved, actually. - [[!debbug 734973]]. - - * `WCONTINUED` - - IRC, OFTC, #debian-hurd, 2014-02-25: - - <gnu_srs> youpi: some gcc-4.9 packages (and source) are needed for - gnat-4.9 to build: Is it OK to propose this patch: - http://paste.debian.net/84079/ - --- a/src/gcc/lto_lto.c.orig 2014-02-14 19:22:14.000000000 +0100 - +++ b/src/gcc/lto/lto.c 2014-02-25 20:50:20.000000000 +0100 - @@ -2476,7 +2476,11 @@ - int status; - do - { - +#ifdef __GNU__ - + int w = waitpid(0, &status, WUNTRACED); - +#else - int w = waitpid(0, &status, WUNTRACED | WCONTINUED); - +#endif - if (w == -1) - fatal_error ("waitpid failed"); - <youpi> gnu_srs: rather ifndef WCONTINUED + [[!debbug 734973]]. gcc-4.9/debian/patches/libcilkrts-targets.diff + * Debian GCC 48594516135e34a726cafe3863a4dc661bbd61a4 `boehm-gc: use + anonymous mmap instead of brk also on hurd-*.`. [[!debbug 753791]]. # Build Here's a log of a GCC build run; this is from our [[Git repository's -2a3496bebfe9d89f11d0b7a591afac55e11d5263 (2013-06-06; -3a930d3fc68785662f5f3f4af02474cb21a62056 (2013-06-06)) +91049a6f433bd5b425144d2c71245df9ec99aa8f (2015-01-20; +c16b7ed55398d2ea55d9ab35519f20cc053b9d0a (2015-01-19)) sources|source_repositories/gcc]], run on kepler.SCHWINGE and laplace.SCHWINGE. $ export LC_ALL=C $ (cd ../master/ && contrib/gcc_update --touch) - $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.6 CXX=g++-4.6 --enable-languages=all,ada 2>&1 | tee log_build + $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.9 CXX=g++-4.9 --enable-languages=all,ada 2>&1 | tee log_build [...] $ make 2>&1 | tee log_build_ [...] @@ -655,11 +786,8 @@ sources|source_repositories/gcc]], run on kepler.SCHWINGE and laplace.SCHWINGE. Different hosts may default to different shells and compiler versions; thus harmonized. -We're stuck with GCC 4.6 until there are Debian -*gnat-4.7*/*gnat-4.8*/*gnat-4.9* packages avaible. (Which there now are.) - -This takes up around 3.5 GiB, and runs for [[3 h 22 min|performance#measure]] -on kepler.SCHWINGE and [[3 h 44 min|performance#measure]] on laplace.SCHWINGE. +This takes up around 4.8 GiB, and runs for [[5 h 57 min|performance#measure]] +on kepler.SCHWINGE and [[4 h 17 min|performance#measure]] on laplace.SCHWINGE. <!-- @@ -691,6 +819,8 @@ on kepler.SCHWINGE and [[3 h 44 min|performance#measure]] on laplace.SCHWINGE. Comes from `gcc/config.gcc`: `i386/t-pmm_malloc` vs. `i386/t-gmm_malloc` for `i[34567]86-*-linux*` vs. `i[34567]86-*-*`. + 2004-08-03, PR target/16570, id:20040802163509.GA18487@lucon.org + * `libgomp` * `libgomp/config/linux`, `libgomp/config/linux/x86` @@ -812,8 +942,8 @@ on kepler.SCHWINGE and [[3 h 44 min|performance#measure]] on laplace.SCHWINGE. $ make install 2>&1 | tee log_install [...] -This takes up around 1.1 GiB, and runs for [[3 min|performance#measure]] on -kepler.SCHWINGE and [[12 min|performance#measure]] on laplace.SCHWINGE. +This takes up around 1.4 GiB, and runs for [[4 min|performance#measure]] on +kepler.SCHWINGE and [[8 min|performance#measure]] on laplace.SCHWINGE. ## Analysis @@ -838,8 +968,8 @@ kepler.SCHWINGE and [[12 min|performance#measure]] on laplace.SCHWINGE. $ make -k check 2>&1 | tee log_test [...] -This runs for [[7 h 35 min|performance#measure]] on kepler.SCHWINGE and [[15 h -46 min|performance#measure]] on laplace.SCHWINGE. +This runs for [[11 h 37 min|performance#measure]] on kepler.SCHWINGE and [[11 h +18 min|performance#measure]] on laplace.SCHWINGE. ## Analysis @@ -990,90 +1120,6 @@ This runs for [[7 h 35 min|performance#measure]] on kepler.SCHWINGE and [[15 h TODO. - * `[ARCH]/libmudflap` - - spawn [open ...] - FAIL: libmudflap.cth/pass37-frag.c (-O0) execution test - FAIL: libmudflap.cth/pass37-frag.c (-O0) output pattern test - - FAIL: libmudflap.cth/pass37-frag.c (-O0) (rerun 1) execution test - FAIL: libmudflap.cth/pass37-frag.c (-O0) (rerun 1) output pattern test - [...] - - TODO. Seems like not just timeouts (though, reported before: [[!GCC_PR - 20003]]). If GDB is to believed, it seems like confusion between - libmudflap and glibc startup (while setting up the signal thread?): - - #0 getenv (name=0x12dabee "LANGUAGE") at getenv.c:81 - #1 0x011b2c78 in guess_category_value (categoryname=<optimized out>, category=<optimized out>) at dcigettext.c:1359 - #2 __dcigettext (domainname=0x12dab1b <_libc_intl_domainname> "libc", msgid1=0x12e1cd8 "Error in unknown error system: ", msgid2=0x0, plural=0, n=0, category=5) at dcigettext.c:575 - #3 0x011b1c53 in __dcgettext (domainname=0x12dab1b <_libc_intl_domainname> "libc", msgid=0x12e1cd8 "Error in unknown error system: ", category=5) at dcgettext.c:53 - #4 0x01203728 in __strerror_r (errnum=-1, buf=0x15ff648 "", buflen=1024) at ../sysdeps/mach/_strerror.c:57 - #5 0x011b0f30 in __assert_perror_fail (errnum=-1, file=0x1133969 "./pthread/cthreads-compat.c", line=45, function=0x1133985 <__PRETTY_FUNCTION__.5356> "cthread_fork") at assert-perr.c:62 - #6 0x011324d4 in cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:45 - #7 0x01192a96 in _hurdsig_init (intarray=0x102a000, intarraysize=5) at hurdsig.c:1499 - #8 0x0117b9f8 in _hurd_new_proc_init (argv=0x15ffb88, intarray=0x102a000, intarraysize=5) at hurdinit.c:138 - #9 0x0117bfef in _hurd_init (flags=8, argv=0x15ffb88, portarray=0x1029000, portarraysize=6, intarray=0x102a000, intarraysize=5) at hurdinit.c:94 - #10 0x011a47c4 in init1 (argc=1, arg0=0x1025000 "/media/erich/home/thomas/tmp/gcc/hurd/master.build/i686-unknown-gnu0.3/libmudflap/testsuite/pass37-frag.exe") at ../sysdeps/mach/hurd/i386/init-first.c:136 - #11 0x00001ec6 in _dl_start_user () from /lib/ld.so - - pthread/cthreads-compat.c: - - 38 cthread_t - 39 cthread_fork (cthread_fn_t func, void *arg) - 40 { - 41 pthread_t thread; - 42 int err; - 43 - 44 err = pthread_create (&thread, NULL, func, arg); - 45 assert_perror (err); - - Breakpoint 2, cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:44 - 44 err = pthread_create (&thread, NULL, func, arg); - (gdb) info threads - Id Target Id Frame - * 4 Thread 17597.16 cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:44 - (gdb) s - 40 { - (gdb) - 44 err = pthread_create (&thread, NULL, func, arg); - (gdb) - - Breakpoint 1, pthread_create (thr=0x15ffa70, attr=0x0, start=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ../../../master/libmudflap/mf-hooks3.c:272 - 272 { - (gdb) s - 275 TRACE ("pthread_create\n"); - (gdb) - 278 si = CALL_REAL (malloc, sizeof (*si)); - (gdb) n - 279 si->user_fn = start; - (gdb) - 283 return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); - (gdb) s - 279 si->user_fn = start; - (gdb) - 280 si->user_arg = arg; - (gdb) - 283 return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); - (gdb) - 280 si->user_arg = arg; - (gdb) - 283 return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); - (gdb) - __mf_0fn_pthread_create (thr=thr@entry=0x15ffa70, attr=attr@entry=0x0, start=start@entry=0x1041070 <__mf_pthread_spawner>, arg=arg@entry=0x108e520 <__mf_0fn_bufs+12288>) at ../../../master/libmudflap/mf-hooks3.c:265 - 265 } - (gdb) s - pthread_create (thr=0x15ffa70, attr=0x0, start=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ../../../master/libmudflap/mf-hooks3.c:284 - 284 } - (gdb) s - cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:45 - 45 assert_perror (err); - (gdb) s - __assert_perror_fail (errnum=-1, file=0x1133969 "./pthread/cthreads-compat.c", line=45, function=0x1133985 <__PRETTY_FUNCTION__.5356> "cthread_fork") at assert-perr.c:55 - - Is this `libmudflap/mf-hooks3.c:__mf_0fn_pthread_create`, *a special - bootstrap variant*, that indeed just returns `-1`? - * `[ARCH]/libstdc++-v3` FAIL: libstdc++-abi/abi_check @@ -1188,15 +1234,24 @@ This runs for [[7 h 35 min|performance#measure]] on kepler.SCHWINGE and [[15 h GCC DejaGnu's `remote.exp:remote_wait` to get rid of (that is, ignore) its `timeout` parameter which, in DejaGnu code, is often invoked with a hard-coded value (that we may want to override) (or is that what - `gcc/testsuite/lib/timeout.exp:standard_wait` is for?). While at it, - `libmudflap/testsuite/libmudflap.c++/ctors.exp` and - `libmudflap/testsuite/libmudflap.c/externs.exp` use hard-coded timeout - values in `remote_wait` calls (also, why don't these use the usual way of - running tests?). + `gcc/testsuite/lib/timeout.exp:standard_wait` is for?). * What is `gcc/testsuite/gcc.test-framework/test-framework.exp` and should we define `CHECK_TEST_FRAMEWORK` to run these tests? + * `gcc.c-torture/compile/pr44686.c`, `gcc.dg/20050309-1.c`, + `gcc.dg/20050330-2.c`, `gcc.dg/20051201-1.c`, `gcc.dg/aru-2.c`, + `gcc.dg/pr44674.c`, `gcc.dg/pr46255.c`, `gcc.dg/pr47793.c`, + `gcc.dg/pr58432.c`, `gcc.dg/profile-*.c`, `gcc.dg/gomp/pr27573.c`, + `gcc.dg/tree-prof/*.c`, `gcc.misc-tests/bprob-*.c`, `g++.dg/bprob/*.C`, + `g++.dg/debug/pr46338.C`, `g++.dg/other/pr55650.C`, + `g++.dg/other/profile1.C`, `g++.dg/torture/pr39732.C`, + `g++.dg/torture/pr40642.C`, `g++.dg/torture/pr53321.C`, + `g++.dg/tree-prof/*.C`, `g++.old-deja/g++.law/profile1.C`, + `gfortran.dg/gomp/pr27573.f90` + + Profiling tests no longer being run. The very most of them used to PASS. + ## Enhancements diff --git a/open_issues/gcc/libmudflap.mdwn b/open_issues/gcc/libmudflap.mdwn deleted file mode 100644 index f14ca1bc..00000000 --- a/open_issues/gcc/libmudflap.mdwn +++ /dev/null @@ -1,74 +0,0 @@ -[[!meta copyright="Copyright © 2008, 2009 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 -document under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with no Invariant -Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] - -[[!tag open_issue_porting open_issue_gcc]] - -Single-threaded use appears to work: - - $ echo 'int main(void) { int *a; a[10]=0; return a[5]; }' | ↩ - gcc -o a -fmudflap -x c - -lmudflap - $ ./a - ******* - mudflap violation 1 (check/write): time=1227208721.922064 ptr=0x1023de0 size=4 - pc=0x1037a33 location=`<stdin>:1:26 (main)' - /usr/lib/libmudflap.so.0(__mf_check+0x33) [0x1037a33] - ./a(main+0x7c) [0x80486c4] - /usr/lib/libmudflap.so.0(__wrap_main+0x49) [0x1037239] - Nearby object 1: checked region begins 68B before and ends 65B before - mudflap object 0x80ca268: name=`argv[]' - bounds=[0x1023e24,0x1023e2b] size=8 area=static check=0r/0w liveness=0 - alloc time=1227208721.922064 pc=0x10371d3 - Nearby object 2: checked region begins 76B before and ends 73B before - mudflap object 0x80cb448: name=`environ[]' - bounds=[0x1023e2c,0x1023ed7] size=172 area=static check=0r/0w liveness=0 - alloc time=1227208721.922064 pc=0x10371d3 - number of nearby objects: 2 - ******* - mudflap violation 2 (check/read): time=1227208721.942109 ptr=0x1023dcc size=4 - pc=0x1037a33 location=`<stdin>:1:35 (main)' - /usr/lib/libmudflap.so.0(__mf_check+0x33) [0x1037a33] - ./a(main+0xf3) [0x804873b] - /usr/lib/libmudflap.so.0(__wrap_main+0x49) [0x1037239] - Nearby object 1: checked region begins 88B before and ends 85B before - mudflap object 0x80ca268: name=`argv[]' - Nearby object 2: checked region begins 96B before and ends 93B before - mudflap object 0x80cb448: name=`environ[]' - number of nearby objects: 2 - -Multi-threaded use doesn't: - - $ echo 'int main(void) { int *a; a[10]=0; return a[5]; }' | ↩ - gcc -include pthread.h -o a -fmudflapth -x c - -lmudflapth -lpthread - $ ./a - Killed - $ gdb a - [...] - Starting program: /media/data/home/tschwinge/a - - Program received signal EXC_BAD_ACCESS, Could not access memory. - 0x01180653 in getenv () from /lib/libc.so.0.3 - (gdb) bt - #0 0x01180653 in getenv () from /lib/libc.so.0.3 - #1 0x01177a02 in __dcigettext () from /lib/libc.so.0.3 - #2 0x01176a57 in dcgettext () from /lib/libc.so.0.3 - #3 0x011c03b5 in strerror_r () from /lib/libc.so.0.3 - #4 0x01175b57 in __assert_perror_fail () from /lib/libc.so.0.3 - #5 0x0111f1ad in cthread_fork (func=0x114f630 <_hurd_msgport_receive>, arg=0x0) - at /build/buildd/hurd-20080607/build-tree/hurd/libpthread/pthread/cthreads-compat.c:41 - #6 0x0115713e in _hurdsig_init () from /lib/libc.so.0.3 - #7 0x01140852 in _hurd_proc_init@@GLIBC_2.2.6 () from /lib/libc.so.0.3 - #8 0x01140e86 in _hurd_init () from /lib/libc.so.0.3 - #9 0x011690ce in init1 () from /lib/libc.so.0.3 - #10 0x00001e96 in _dl_start_user () from /lib/ld.so - #11 0x00000001 in ?? () - #12 0x01024000 in ?? () - #13 0x00000000 in ?? () - -Also `libmudflap` is pthread-only. diff --git a/open_issues/glibc.mdwn b/open_issues/glibc.mdwn index 33041e71..9962203e 100644 --- a/open_issues/glibc.mdwn +++ b/open_issues/glibc.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2012, 2013, 2014 Free -Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2015 +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 @@ -38,8 +38,8 @@ git log --reverse --topo-order --pretty=fuller --stat=$COLUMNS,$COLUMNS -b -p -C --> -Last reviewed up to the [[Git mirror's 64a17f1adde4715bb6607f64decd73b2df9e6852 -(2013-12-19) sources|source_repositories/glibc]]. +Last reviewed up to the [[Git mirror's 9a869d822025be8e43b78234997b10bf0cf9d859 +(2014-02-07) sources|source_repositories/glibc]]. * <a id=t_hurdsig-fixes>`t/hurdsig-fixes`</a> @@ -1889,6 +1889,10 @@ Last reviewed up to the [[Git mirror's 64a17f1adde4715bb6607f64decd73b2df9e6852 `timer_create`, `timer_delete`, [[`clock_gettime`|clock_gettime]], and so on. + * `fd_to_filename` + + See [[translate_FD_or_port_to_file_name]]. + For specific packages: * <a id=octave>[[octave]]</a> @@ -2814,9 +2818,26 @@ Last reviewed up to the [[Git mirror's 64a17f1adde4715bb6607f64decd73b2df9e6852 * [high] 43d5c02c72bdaf59a8e0d4b06f2ae87e42269cbd `Fix build on hurd` -- is that from a topic branch that can then be annihilated? Verify emails. Verify no further changes in topic branch. - * 69a17d9d245dc3551792e95e1823cc2d877592f3 `Patch [1/4] async-signal safe - TLS.` -- do we also need an implementation of this? (Not yet called - from anywhere?) + * 69a17d9d245dc3551792e95e1823cc2d877592f3 `Patch [1/4] + async-signal safe TLS.` -- do we also need an implementation of this? + (Not yet called from anywhere?) Now used in + 7f507ee17aee720fa423fa38502bc3caa0dd03d7 `Async-signal safe TLS`. + 7f507ee17aee720fa423fa38502bc3caa0dd03d7 has been reverted in + 73d61e4f6c65da714c0f8a3a233725322553ceba. + 1f33d36a8a9e78c81bed59b47f260723f56bb7e6, + 063b2acbce83549df82ab30f5af573f1b9c4bd19, + b627fdd58554bc36bd344dc40a8787c4b7a9cc46, + e81c64bba13d2d8b2a4e53254a82cc80f27c8497 have been reverted in + dd654bf9ba1848bf9ed250f8ebaa5097c383dcf8. + 35e8f7ab94c910659de9d507aa0f3e1f8973d914 has been reverted in + 8b6785f0836011cace9a77f3c24e51a7379238a0. + 69a17d9d245dc3551792e95e1823cc2d877592f3 has been reverted in + bf06bcee84d4c19a99925c0f58026a8cbd87a688. + a494421f5268df333c589d71104a39bb6a9cff19 has been reverted in + f482dbbec775bf72eb6510b6091fca141893c466. + * [low] In various commits, `menual/*.texi` files have been annotated + regarding MTASC-safety properties. The focus has not necessarily been + on Hurd, though. * *baseline* @@ -2830,15 +2851,12 @@ Last reviewed up to the [[Git mirror's 64a17f1adde4715bb6607f64decd73b2df9e6852 # Build Here's a log of a glibc build run; this is from our [[Git repository's -f57644d0bdfc1ebe2201a677a33af27e09a5bab6 (2013-12-20; -64a17f1adde4715bb6607f64decd73b2df9e6852 (2013-12-19)) +f68531785b6d85fb0b405747688f93471b6a964f (2015-01-23; +9a869d822025be8e43b78234997b10bf0cf9d859 (2014-02-07)) plus 6a97b62a5b4f18aea849d6f4d8de58d1469d2521 reverted, -`id:"87zjnvn688.fsf@kepler.schwinge.homeip.net"`, -`id:"87ioujn0eq.fsf@kepler.schwinge.homeip.net"`, -1226676cd6f6f4451e6e6b75b8fbd9a35c949e8e reverted, -56798c444bc584c118b69a3506c4050b34edc35f reverted, -`id:"878uvfmwvs.fsf@kepler.schwinge.homeip.net"` -sources|source_repositories/glibc]], run on coulomb.SCHWINGE. +`id:"87a9fvguwq.fsf@schwinge.name"`, +`_SERVERS_STARTUP` hard-coded to `/servers/startup` in `sysdeps/mach/hurd/reboot.c` +sources|source_repositories/glibc]], run on laplace.SCHWINGE. $ export LC_ALL=C $ ../Roger_Whittaker/configure --prefix=/usr --disable-profile --disable-multi-arch --build=i486-gnu --host=i486-gnu CC=gcc-4.7 CXX=g++-4.7 2>&1 | tee log_build @@ -2846,8 +2864,8 @@ sources|source_repositories/glibc]], run on coulomb.SCHWINGE. $ make install_root=/INVALID 2>&1 | tee log_build_ [...] -This takes up around 600 MiB, and needs roughly X min on kepler.SCHWINGE and -105 min on coulomb.SCHWINGE. +This takes up around 600 MiB, and runs for [[TODO min|performance#measure]] on +kepler.SCHWINGE and [[19 min|performance#measure]] on laplace.SCHWINGE. <!-- @@ -2858,7 +2876,7 @@ This takes up around 600 MiB, and needs roughly X min on kepler.SCHWINGE and ## Analysis - $ toolchain/logs/process glibc build fetch coulomb.SCHWINGE + $ toolchain/logs/process glibc build fetch laplace.SCHWINGE TODO. @@ -2924,13 +2942,13 @@ 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 -min on coulomb.SCHWINGE. +This takes up around 100 MiB, and runs for [[TODO min|performance#measure]] on +kepler.SCHWINGE and [[3 min|performance#measure]] on laplace.SCHWINGE. ## Analysis - $ toolchain/logs/process glibc install fetch coulomb.SCHWINGE + $ toolchain/logs/process glibc install fetch laplace.SCHWINGE TODO. @@ -2940,9 +2958,10 @@ TODO. $ make -k install_root=/INVALID check fast-check=yes 2>&1 | tee log_test [...] -This needs roughly X min on kepler.SCHWINGE and 130 min on coulomb.SCHWINGE. +This runs for [[TODO min|performance#measure]] on kepler.SCHWINGE and [[10 +min|performance#measure]] on laplace.SCHWINGE. -Specifying `fast-check=yes` disables the `conformtest` which takes 1.75 h (out +Specifying `fast-check=yes` disables the `conformtest` which ran for 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. @@ -2950,7 +2969,7 @@ our most critical issue to solve. ## Analysis - $ toolchain/logs/process glibc test fetch coulomb.SCHWINGE + $ toolchain/logs/process glibc test fetch laplace.SCHWINGE Failures, mostly in order of appearance: @@ -3104,6 +3123,23 @@ Failures, mostly in order of appearance: `_CS_GNU_LIBPTHREAD_VERSION` is provided by libpthread when compiled as add-on. + * `posix/tst-sysconf.out` + + Fails with: + + sysconf(_SC_BARRIERS) must be 200809L + sysconf(_SC_READER_WRITER_LOCKS) must be 200809L + sysconf(_SC_SEMAPHORES) must be 200809L + sysconf(_SC_SPIN_LOCKS) must be 200809L + sysconf(_SC_THREAD_ATTR_STACKADDR) must be 200809L + sysconf(_SC_THREAD_ATTR_STACKSIZE) must be 200809L + sysconf(_SC_THREADS) must be 200809L + sysconf(_SC_TIMEOUTS) must be 200809L + + That, I presume, is in response to our `sysdeps/mach/hurd/bits/posix_opt.h` + file, which uses *200112L* values. + `nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h` uses *200809L* values. + * `posix/tst-vfork3-mem` + 0x0804cee0 Alloc 10 duplicate: 0x1095389 $BUILDDIR/libc.so.0.3:[0x1095389] @@ -3201,7 +3237,7 @@ Failures, mostly in order of appearance: * `rt/tst-aio2`, `rt/tst-aio3`, `rt/tst-aio9`, `rt/tst-aio10`, `rt/tst-mqueue3`, `rt/tst-mqueue5.o`, `rt/tst-mqueue6`, `rt/tst-mqueue8`, - `rt/tst-timer3`, `rt/tst-timer4.o`, `rt/tst-timer5.o`, + `rt/tst-timer3`, `rt/tst-timer4.o`, `rt/tst-timer5.o`, `rt/tst-cpuclock2`, `rt/tst-cputimer1.o`, `rt/tst-cputimer2.o`, `rt/tst-cputimer3.o`, `elf/tst-thrlock` @@ -3314,10 +3350,6 @@ Failures, mostly in order of appearance: SIGSEGV. - * `elf/tst-dlmopen1.out` - - SIGSEGV. - * `elf/tst-audit1.out`, `elf/tst-audit2.out`, `elf/tst-audit8.out` SIGKILL. diff --git a/open_issues/gnumach_memory_management_2.mdwn b/open_issues/gnumach_memory_management_2.mdwn index 64aae2a4..4f6a3db3 100644 --- a/open_issues/gnumach_memory_management_2.mdwn +++ b/open_issues/gnumach_memory_management_2.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2011, 2014 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 @@ -10,7 +10,8 @@ License|/fdl]]."]]"""]] [[!tag open_issue_gnumach]] -IRC, freenode, #hurd, 2011-10-16: + +# IRC, freenode, #hurd, 2011-10-16 <youpi> braunr: I realize that kmem_alloc_wired maps the allocated pages in the kernel map @@ -244,3 +245,29 @@ IRC, freenode, #hurd, 2011-10-16: <braunr> we don't have code to get rid of this macro <braunr> but i don't even know how we, as maintainers, are supposed to guess it + + +# `k0ro/advisory_pageout/master` + +[[!GNU_Savannah_Git_hurd_gnumach 666299d037be6ffa83345d6d281fa955431f55fe]]. + +[[user/Sergio_Lopez]], [[libpager_deadlock]]. + + +# Increase the pageout thread priority + + * [[!message-id "1341845097-24763-1-git-send-email-rbraun@sceen.net"]]. + + * [[!GNU_Savannah_Git_hurd_gnumach + c7cdf5ff96e7c3bb008877893aa194908dca2185]]. + + +# Tune VM Parameters + + * [[!message-id + "h2k97f2a0d81004181028ycc10c46codc45d6ea33b2b0d5@mail.gmail.com"]]. + + * [[!message-id "1341845097-24763-1-git-send-email-rbraun@sceen.net"]]. + + * [[!GNU_Savannah_Git_hurd_gnumach + 91f0887ca2345c2bd02747e4b437076641d77cd9]]. diff --git a/open_issues/libpager_deadlock.mdwn b/open_issues/libpager_deadlock.mdwn index 017ecff6..ddcd404d 100644 --- a/open_issues/libpager_deadlock.mdwn +++ b/open_issues/libpager_deadlock.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2010, 2012 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2010, 2012, 2014 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 @@ -27,6 +28,9 @@ Deadlocks in libpager/periodic sync have been found. http://www.sceen.net/~rbraun/moving_the_default_memory_manager_out_of_the_mach_kernel.pdf <braunr> we should more seriously consider sergio's advisory pageout branch some day + +[[user/Sergio_Lopez]], [[gnumach_memory_management_2]]. + <braunr> i'll try to get in touch with him about that before he completely looses interest <braunr> i'll include it in my "make that page cache as decent as possible" diff --git a/open_issues/nptl.mdwn b/open_issues/nptl.mdwn index be0270df..2aa337d0 100644 --- a/open_issues/nptl.mdwn +++ b/open_issues/nptl.mdwn @@ -34,10 +34,15 @@ License|/fdl]]."]]"""]] <tschwinge> We'd need to evaluate which benefits NPTL would bring. -# IRC, freenode, #hurd, 2013-08-05 +# Debian GNU/kFreeBSD: FBTL + +## IRC, freenode, #hurd, 2013-08-05 <gnu_srs> Hi, looks like kfreebsd are now using an NPTL-based pthread library: FBTL, http://lists.debian.org/debian-bsd/2013/07/msg00060.html + +[[!message-id "alpine.LNX.2.00.1307102021050.4232@contest.felk.cvut.cz"]]. + <gnu_srs> Anything of interest for porting to Hurd? See also http://lists.debian.org/debian-hurd/2013/08/msg00000.html <azeem> Petr could've been more verbose in his announcements @@ -48,6 +53,15 @@ License|/fdl]]."]]"""]] <azeem> and http://lists.debian.org/debian-bsd/2013/07/msg00138.html +## [[!message-id "alpine.LNX.2.00.1308021035160.5570@contest.felk.cvut.cz"]] + + +## [[!message-id "alpine.LNX.2.00.1405082034530.8707@contest.felk.cvut.cz"]] + + +## [[!message-id "87wqdv1314.fsf@kepler.schwinge.homeip.net"]] + + # IRC, freenode, #hurd, 2013-12-26 <nalaginrut> hm? has NPTL already supported for Hurd? diff --git a/open_issues/translate_fd_or_port_to_file_name.mdwn b/open_issues/translate_fd_or_port_to_file_name.mdwn index 252bc049..01ab3a78 100644 --- a/open_issues/translate_fd_or_port_to_file_name.mdwn +++ b/open_issues/translate_fd_or_port_to_file_name.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2010, 2011, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2010, 2011, 2013, 2014, 2015 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 @@ -14,6 +14,9 @@ License|/fdl]]."]]"""]] [[!toc]] +# [[glibc]]'s `fd_to_filename` + + # IRC, freenode, #hurd, June (?) 2010 <pochu> is there a way (POSIX or Hurdish) to get the corresponding file diff --git a/source_repositories/glibc.mdwn b/source_repositories/glibc.mdwn index e31fac61..a1b60eab 100644 --- a/source_repositories/glibc.mdwn +++ b/source_repositories/glibc.mdwn @@ -1,5 +1,5 @@ -[[!meta copyright="Copyright © 2010, 2012, 2013, 2014 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2010, 2012, 2013, 2014, 2015 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 @@ -115,24 +115,3 @@ Occasionally push new tags from the sourceware repository to the Savannah one: $ git fetch sourceware $ git tag | grep ^glibc- | sed 's%^%tag %' | xargs git push savannah - - -# Open Issues - -## IRC, freenode, #hurd, 2013-12-13 - - <braunr> is it ok to store several patches in one topgit branch ? - <braunr> or is it really designed for one patch per branch ? - <braunr> fatal: ambiguous argument 'origin/youpi/tls-threadvar': unknown - revision or path not in the working tree. - <braunr> tschwinge: ^ - <braunr> tschwinge: does that ring a bell ? - <tschwinge> braunr: When/how did that happen? - <tschwinge> Has the branch been removed from the origin remote? - <tschwinge> Yes, has been deleted (on Savannah) on 2013-09-22. - <tschwinge> Are you somehow referencing that branch? - <braunr> tschwinge: tg remote --populate origin - <tschwinge> braunr: Then I'd guess that Samuel has removed that branch but - it is still referenced in some other branch's .topdeps file. I'll have a - look (but don't hold your breath.) - <braunr> tschwinge: sure diff --git a/toolchain/logs b/toolchain/logs -Subproject e19bcbd6f879d048e2754117f7fbbe5e7f1162a +Subproject 0bbc6934d2590743c622ca2e6a20479f18a0a85 diff --git a/user/Sergio_Lopez.mdwn b/user/Sergio_Lopez.mdwn index b514982e..ab5ed1f1 100644 --- a/user/Sergio_Lopez.mdwn +++ b/user/Sergio_Lopez.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2011, 2014 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 @@ -18,6 +18,8 @@ License|/fdl]]."]]"""]] ### Advisory Pageout +[[open_issues/libpager_deadlock]], [[open_issues/gnumach_memory_management_2]]. + #### Rationale This work has two objectives: |