summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
Diffstat (limited to 'hurd')
-rw-r--r--hurd/building/cross-compiling.mdwn118
-rw-r--r--hurd/debugging.mdwn4
-rw-r--r--hurd/debugging/glibc.mdwn63
-rw-r--r--hurd/debugging/translator.mdwn (renamed from hurd/getting_help.mdwn)18
-rw-r--r--hurd/debugging/translator/capturing_stdout_and_stderr.mdwn26
-rw-r--r--hurd/debugging/translator/gdb.mdwn (renamed from hurd/debugging/hurd.mdwn)14
-rw-r--r--hurd/faq.mdwn1
-rw-r--r--hurd/libstore.mdwn2
-rw-r--r--hurd/open_issues.mdwn1
-rw-r--r--hurd/running.mdwn2
-rw-r--r--hurd/running/debian/faq.mdwn1
-rw-r--r--hurd/running/debian/faq/dev_random.mdwn4
-rw-r--r--hurd/running/debian/porting.mdwn1
-rw-r--r--hurd/running/debian/porting/gcc.mdwn7
-rw-r--r--hurd/running/debian/porting/gcc/c++.mdwn39
-rw-r--r--hurd/running/debian/porting/gcc/libmudflap.mdwn72
-rw-r--r--hurd/translator.mdwn3
-rw-r--r--hurd/translator/tmpfs.mdwn4
18 files changed, 278 insertions, 102 deletions
diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn
index 81303b0a..80239860 100644
--- a/hurd/building/cross-compiling.mdwn
+++ b/hurd/building/cross-compiling.mdwn
@@ -33,24 +33,37 @@ installed in the upstream repositories.
The following ones are known to work. Others may work as well, but no
guarantee is given. Always the preferred version is listed first.
-* `src/binutils`: [[GNU_Binutils|binutils]]
+ * `src/binutils`: [[GNU_Binutils|binutils]]
- * CVS `binutils-2_18-branch`
+ * CVS `binutils-2_19-branch`
+
+ $ mkdir binutils-2_19-branch
+ $ cd binutils-2_19-branch
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
+ co -r binutils-2_19-branch binutils
+
+ The sources are rooted in `binutils-2_19-branch/src/`. Also use these
+ commands for updating, instead of the usual `cvs update`.
+
+ * The 2.19 release tarball from <ftp://ftp.gnu.org/gnu/binutils/> should
+ also be fine.
+
+ * CVS `binutils-2_18-branch`
$ mkdir binutils-2_18-branch
$ cd binutils-2_18-branch
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src \
- co -r binutils-2_18-branch binutils
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
+ co -r binutils-2_18-branch binutils
The sources are rooted in `binutils-2_18-branch/src/`. Also use these
commands for updating, instead of the usual `cvs update`.
- * The 2.18 release tarball from <ftp://ftp.gnu.org/gnu/binutils/> should
+ * The 2.18 release tarball from <ftp://ftp.gnu.org/gnu/binutils/> should
also be fine, as should be all other recent releases.
-* `src/gcc`: [[GNU_Compiler_Collection|gcc]]
+ * `src/gcc`: [[GNU_Compiler_Collection|gcc]]
- * SVN `gcc-4_1-branch`
+ * SVN `gcc-4_1-branch`
$ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch
@@ -58,29 +71,40 @@ guarantee is given. Always the preferred version is listed first.
$ ( cd gcc-4_1-branch/ && contrib/gcc_update --touch )
- * Recent releases of the 4.1 series from <ftp://ftp.gnu.org/gnu/gcc/>
- should also be fine.
+ * Releases of the 4.1 series from <ftp://ftp.gnu.org/gnu/gcc/> should
+ also be fine.
- * SVN `gcc-4_2-branch`
+ * SVN `gcc-4_2-branch`
$ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch
+ * Patches:
+ <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00034.html>
+
Prepare:
$ ( cd gcc-4_2-branch/ && contrib/gcc_update --touch )
- * Patches:
+ * Releases of the 4.2 series from <ftp://ftp.gnu.org/gnu/gcc/> should
+ also be fine, but need the same set of patches as the `gcc-4_2-branch`
+ needs.
+
+ * SVN `gcc-4_3-branch`
+
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_3-branch
+
+ * Patches:
<http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00034.html>
- * Recent releases of the 4.2 series from <ftp://ftp.gnu.org/gnu/gcc/>
- should also be fine, but need the same set of patches as the
- `gcc-4_2-branch` needs.
+ Prepare:
+
+ $ ( cd gcc-4_3-branch/ && contrib/gcc_update --touch )
- <!--
- GCC 4.3 has not yet been released.
- * SVN `gcc-4_3-branch`
- -->
- * SVN `trunk` -- upcoming 4.3 series
+ * Releases of the 4.3 series from <ftp://ftp.gnu.org/gnu/gcc/> should
+ also be fine, but need the same set of patches as the `gcc-4_3-branch`
+ needs.
+
+ * SVN `trunk` -- upcoming 4.4 series
$ svn co svn://gcc.gnu.org/svn/gcc/trunk
@@ -88,31 +112,21 @@ guarantee is given. Always the preferred version is listed first.
$ ( cd trunk/ && contrib/gcc_update --touch )
- * Patches:
- <http://lists.gnu.org/archive/html/bug-hurd/2007-12/msg00029.html>
-
- <!--
- GCC 4.3 has not yet been released.
- * Recent releases of the 4.3 series from <ftp://ftp.gnu.org/gnu/gcc/>
- should also be fine, but need the same set of patches as the
- `gcc-4_3-branch` needs.
- -->
-
-* `src/gnumach`: [[microkernel/mach/GNU_Mach]]
+ * `src/gnumach`: [[GNU_Mach|microkernel/mach/gnumach]]
- * CVS `gnumach-1-branch`
+ * CVS `gnumach-1-branch`
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd \
- co -r gnumach-1-branch gnumach
+ $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd ↩
+ co -r gnumach-1-branch gnumach
$ mv gnumach gnumach-1-branch
Prepare:
$ ( cd gnumach-1-branch/ && autoreconf -vfi )
-* `src/mig`: [[microkernel/mach/mig/GNU_MIG]]
+ * `src/mig`: [[microkernel/mach/mig/GNU_MIG]]
- * CVS `HEAD`
+ * CVS `HEAD`
$ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co mig
@@ -120,55 +134,55 @@ guarantee is given. Always the preferred version is listed first.
$ ( cd mig/ && autoreconf -vfi )
-* `src/hurd`: [[GNU_Hurd|hurd]]
+ * `src/hurd`: [[GNU_Hurd|hurd]]
- * CVS `HEAD`
+ * CVS `HEAD`
$ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co hurd
-* `src/glibc`: [[GNU_C_Library|glibc]]
+ * `src/glibc`: [[GNU_C_Library|glibc]]
- * CVS `glibc-2_7-branch`
+ * CVS `glibc-2_7-branch`
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc \
- co -r glibc-2_7-branch glibc
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc ↩
+ co -r glibc-2_7-branch glibc
$ mv libc glibc-2_7-branch
- * Patches:
+ * Patches:
<http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00030.html>
- * Recent releases of the 2.7 series from <ftp://ftp.gnu.org/gnu/glibc/>
+ * Recent releases of the 2.7 series from <ftp://ftp.gnu.org/gnu/glibc/>
should also be fine, but need the same set of patches as the
`glibc-2_7-branch` needs.
<!--
- * CVS `HEAD`
+ * CVS `HEAD`
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc \
- co glibc
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc ↩
+ co glibc
$ mv libc glibc-HEAD
- * TODO.
+ * TODO.
<http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00026.html>
-->
<!--
-* `src/gdb`: [[GNU_Debugger|gdb]]
+ * `src/gdb`: [[GNU_Debugger|gdb]]
This is optional and will only be compiled if present.
- * CVS `gdb_6_6-branch`
+ * CVS `gdb_6_6-branch`
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src \
- co -r gdb_6_6-branch gdb
+ $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
+ co -r gdb_6_6-branch gdb
$ mv src gdb_6_6-branch
Also needs some patch because of MIG changes, if I remember correctly.
- * Recent tarballs from <ftp://ftp.gnu.org/gnu/gdb/> should also work.
+ * Recent tarballs from <ftp://ftp.gnu.org/gnu/gdb/> should also work.
-->
diff --git a/hurd/debugging.mdwn b/hurd/debugging.mdwn
index b84c5675..e4a98672 100644
--- a/hurd/debugging.mdwn
+++ b/hurd/debugging.mdwn
@@ -18,5 +18,5 @@ is included in the section entitled
# About Specific Packages
-* [[glibc]]
-* [[Hurd]]
+ * [[glibc]]
+ * [[translator]]s
diff --git a/hurd/debugging/glibc.mdwn b/hurd/debugging/glibc.mdwn
index a0890fe8..912f656c 100644
--- a/hurd/debugging/glibc.mdwn
+++ b/hurd/debugging/glibc.mdwn
@@ -1,13 +1,23 @@
+[[meta copyright="Copyright © 2007, 2008 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]]."]]"""]]
+
Here are some hints about how to approach testing after nontrivial changes to
glibc have been done.
---
-First step is having the build a glibc complete. This is actually more
-difficult than one might expect, as it involves (towards the end of the build
-process; unless you are cross-building, of course), that the newly created
-libraries and loader actually work: they're used to run the `rpcgen`
-program. If that step doesn't succeed, it'll look similar to this:
+First step is having the build of glibc succeed. This is actually more
+difficult than one might expect as it involves (towards the end of the build
+process -- unless you are [[building/cross-compiling]], of course -- that the
+newly created libraries and loader actually work: they'll be used to run the
+`rpcgen` program. If that step doesn't succeed, it'll look similar to this:
[...]
CPP='gcc -E -x c-header' [...]/build/elf/ld.so.1 --library-path [...] [...]/build/sunrpc/rpcgen [...]
@@ -15,8 +25,8 @@ program. If that step doesn't succeed, it'll look similar to this:
---
-If building glibc succeeds, the next thing to try is running the test suite, or
-parts of it.
+Unless [[building/cross-compiling]], the next thing you'll probably want to do
+is running the test suite, or parts of it.
Here is a list of known failures:
@@ -24,10 +34,28 @@ Here is a list of known failures:
---
-Make sure static linking is working OK at all. The `elf/sln` program (a
-stripped-down `ln` that is statically linked) in the glibc build ought to test
-that. Also, static linking under various conditions will already have been
-tested when running the test suite, especially in `elf/` and `dlfcn/`.
+If you've been doing simple changes to glibc functions that end up in
+`libc.so`, you may test them like this (like for a `strerror_l` implementation
+in this case):
+
+ $ LD_PRELOAD=./libc.so ./ld.so ./a.out 10 1073741928 de_DE.utf8
+ 1073741928 (0x40000068): Computer bought the farm
+ 1073741928 (0x40000068): Der Computer hat den Bauernhof erworben
+
+You usually will only have luck using the new `libc.so` (from
+`[glibc-build]/libc.so`) in combination together with the new `ld.so` (from
+`[glibc-build]/elf/ld.so`):
+
+ $ LD_PRELOAD=./libc.so ./a.out 10 1073741928 de_DE.utf8
+ Killed
+ $ LD_PRELOAD=./libc.so /lib/ld.so ./a.out 10 1073741928 de_DE.utf8
+ Killed
+
+Make sure static linking is working OK at all. Running the
+`[glibc-build]/elf/sln` program (a stripped-down `ln` that is statically
+linked) ought to test that. Also, static linking under various conditions will
+already have been tested when running the test suite, especially in `elf/` and
+`dlfcn/`.
Make sure static linking with cthreads is working. If you can get an
`ext2fs.static` compiled and linked against the new glibc, that is good.
@@ -41,8 +69,8 @@ Then debug its startup as a normal program on your working hurd.
Then try its full server startup.
- $ settrans -ca node [...]/ext2fs.static <BACKEND>
- $ cd node/
+ $ settrans -ca node [...]/ext2fs.static BACKING_STORE
+ $ ls -l node/
[...]
Make sure dynamic linking for servers is working. If you haven't broken the
@@ -51,7 +79,7 @@ glibc's `testrun.sh` does it.
[TODO]: Is this the correct way to do that?
- $ settrans -ca node [glibc]/build/testrun.sh /hurd/ext2fs <BACKEND>
+ $ settrans -ca node [glibc]/build/testrun.sh /hurd/ext2fs BACKING_STORE
$ cd node/
[...]
@@ -62,10 +90,3 @@ Test it in a [[subhurd]].
---
Test it on a real system.
-
----
-
-Sources:
-
-* <http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00038.html>
-* [[Thomas_Schwinge|tschwinge]]'s mind
diff --git a/hurd/getting_help.mdwn b/hurd/debugging/translator.mdwn
index c4f80ff9..8e8dd6fb 100644
--- a/hurd/getting_help.mdwn
+++ b/hurd/debugging/translator.mdwn
@@ -1,4 +1,4 @@
-[[meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[meta copyright="Copyright © 2008 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
@@ -8,14 +8,8 @@ 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]]."]]"""]]
-# Essential Documentation
-
-* [[FAQ]]
-* [[microkernel/mach/gnu_mach/Hardware_Compatibility_List]]
-
-# Forums
-
-[[inline pages=asking_questions raw=yes feeds=no]]
-
-* [[Mailing_lists]]
-* [[IRC]]
+[[inline
+pages="hurd/debugging/translator/* and !*/discussion"
+show=0
+feeds=no
+actions=yes]]
diff --git a/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
new file mode 100644
index 00000000..8430287a
--- /dev/null
+++ b/hurd/debugging/translator/capturing_stdout_and_stderr.mdwn
@@ -0,0 +1,26 @@
+[[meta copyright="Copyright © 2008 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]]."]]"""]]
+
+Sometimes it may already be helpful to capture a translator's `stdout` and
+`stderr`, for example like this:
+
+ $ sudo settrans -fgap ↩
+ /servers/socket/2 ↩
+ /bin/sh -c '/hurd/pfinet -i eth0 -a [...] > /tmp/stdout 2> /tmp/stderr'
+ $ [...]
+ $ cat /tmp/stdout
+ NET4: Linux TCP/IP 1.0 for NET4.0
+ IP Protocols: ICMP, UDP, TCP
+ TCP: Hash tables configured (ehash 65536 bhash 65536)
+ $ cat /tmp/stderr
+ pfinet: ../../hurd.work/pfinet/ethernet.c:196: ethernet_xmit: Unexpected error: (os/device) invalid IO size.
+
+(Trying to run [[GDB]] in this case was of no help -- due to a bug in GDB
+(supposedly) it wouldn't catch the fault.)
diff --git a/hurd/debugging/hurd.mdwn b/hurd/debugging/translator/gdb.mdwn
index 043da3e0..bee41010 100644
--- a/hurd/debugging/hurd.mdwn
+++ b/hurd/debugging/translator/gdb.mdwn
@@ -8,25 +8,25 @@ 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]]."]]"""]]
-Say you want to try running file system server (*[[translator/ext2fs]]*<!--`[[translator/ext2fs]]`-->,
-*[[translator/jfs]]*<!--`[[translator/jfs]]`-->, ...) against a modified version of *[[libpager]]*<!--`[[libpager]]`--> and
-debug the latter one using [[GDB]].
+Say you want to try running file system server ([[`ext2fs`|translator/ext2fs]],
+[[`jfs`|translator/jfs]], ...) against a modified version of
+[[`libpager`|libpager]] and debug the latter one using [[debugging/GDB]].
-Set the [[translator]] like this:
+Set the [[hurd/translator]] like this:
$ settrans -fgap ↩
jfs.img.i ↩
/usr/bin/env ↩
LD_LIBRARY_PATH=~tschwinge/tmp/hurd/hurd.ogi/build/libpager ↩
- "`pwd`"/jfs.obj/jfs ↩
- "`pwd`"/jfs.img
+ "$PWD"/jfs.obj/jfs ↩
+ "$PWD"/jfs.img
Then, when starting GDB, start it like this (or use an equivalent method, of
course):
$ LD_LIBRARY_PATH=~tschwinge/tmp/hurd/hurd.ogi/build/libpager ↩
gdb ↩
- ~tschwinge/tmp/jfs/jfs.obj/jfs 15436
+ ~tschwinge/tmp/jfs/jfs.obj/jfs 15436
GNU gdb 6.5-debian
[...]
Reading symbols from /lib/libdiskfs.so.0.3...Reading symbols from /lib/debug/lib/libdiskfs.so.0.3...done.
diff --git a/hurd/faq.mdwn b/hurd/faq.mdwn
index aab538d9..0227f1c1 100644
--- a/hurd/faq.mdwn
+++ b/hurd/faq.mdwn
@@ -13,5 +13,6 @@ is included in the section entitled
[[inline
pages="hurd/faq/* and !*/discussion"
show=0
+feeds=no
actions=yes
rootpage="hurd/faq" postformtext="Add a new item titled:"]]
diff --git a/hurd/libstore.mdwn b/hurd/libstore.mdwn
index 3de42be3..ab649ebc 100644
--- a/hurd/libstore.mdwn
+++ b/hurd/libstore.mdwn
@@ -9,7 +9,7 @@ is included in the section entitled
[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
`libstore` is more than just a thin layer between
-[[microkernel/mach/GNU_Mach]] devices (`hd0` for example) and the
+[[GNU_Mach|microkernel/mach/gnumach]] devices (`hd0` for example) and the
device node below `/dev`...
# Available Stores
diff --git a/hurd/open_issues.mdwn b/hurd/open_issues.mdwn
index d7dc4d99..c4bcce09 100644
--- a/hurd/open_issues.mdwn
+++ b/hurd/open_issues.mdwn
@@ -15,5 +15,6 @@ This is a dumping ground for open issues for the GNU Hurd.
[[inline
pages="hurd/open_issues/* and !*/discussion"
show=0
+feeds=no
actions=yes
rootpage="hurd/open_issues" postformtext="Add a new item titled:"]]
diff --git a/hurd/running.mdwn b/hurd/running.mdwn
index 78815099..162bc9ea 100644
--- a/hurd/running.mdwn
+++ b/hurd/running.mdwn
@@ -9,7 +9,7 @@ is included in the section entitled
[[GNU_Free_Documentation_License|/fdl]]."]]"""]]
* [[Distrib]] - Distributions based on the Hurd
-* [[microkernel/mach/gnu_mach/ports/Xen]] - In Xen
+* [[microkernel/mach/gnumach/ports/Xen]] - In Xen
* [[Live_CD]]
* [[QEMU]] - In QEMU
* [[vmware]] (**non-free!**)
diff --git a/hurd/running/debian/faq.mdwn b/hurd/running/debian/faq.mdwn
index f4b607bf..227ade02 100644
--- a/hurd/running/debian/faq.mdwn
+++ b/hurd/running/debian/faq.mdwn
@@ -15,5 +15,6 @@ See also the [[Hurd_FAQ|hurd/FAQ]] and [[after_install]].
[[inline
pages="hurd/running/debian/faq/* and !*/discussion"
show=0
+feeds=no
actions=yes
rootpage="hurd/running/debian/faq" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/debian/faq/dev_random.mdwn b/hurd/running/debian/faq/dev_random.mdwn
index 0043699e..eee7d0be 100644
--- a/hurd/running/debian/faq/dev_random.mdwn
+++ b/hurd/running/debian/faq/dev_random.mdwn
@@ -12,4 +12,6 @@ is included in the section entitled
There is no random device by default as no secure implementation has been
finished yet. An easy (but very insecure) work-around is to copy a binary file
-like `/bin/bash` to `/dev/random` and `/dev/urandom`.
+like `/bin/bash` to `/dev/random` and `/dev/urandom`. A slightly more secure
+alternative is installing the `random-egd` from the `debian-ports` repository.
+
diff --git a/hurd/running/debian/porting.mdwn b/hurd/running/debian/porting.mdwn
index 7ca91d37..eb46c4c3 100644
--- a/hurd/running/debian/porting.mdwn
+++ b/hurd/running/debian/porting.mdwn
@@ -33,5 +33,6 @@ guidelines.
[[inline
pages="hurd/running/debian/porting/* and !*/discussion"
show=0
+feeds=no
actions=yes
rootpage="hurd/running/debian/porting" postformtext="Add a new item titled:"]]
diff --git a/hurd/running/debian/porting/gcc.mdwn b/hurd/running/debian/porting/gcc.mdwn
index 3744f6ee..c15f40aa 100644
--- a/hurd/running/debian/porting/gcc.mdwn
+++ b/hurd/running/debian/porting/gcc.mdwn
@@ -17,9 +17,6 @@ integrated.
* [\[meta-bug\] bootstrap bugs for
\*-gnu\*](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21824)
- * [\[PATCH\] for PR driver/21706 -- MAXPATHLEN usage in
- \[gcc\]/gcc/tlink.c](http://gcc.gnu.org/ml/gcc-patches/2008-11/msg00611.html)
-
* [build system: gcc\_cv\_libc\_provides\_ssp and
NATIVE\_SYSTEM\_HEADER\_DIR](http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html)
@@ -43,3 +40,7 @@ Additionally:
* Also in other places: configure fragments that have `*linux*` cases
might/should often contain those for us (and GNU/k*BSD) as well.
+
+ * [[`libmudflap`|libmudflap]].
+
+ * [[C++]].
diff --git a/hurd/running/debian/porting/gcc/c++.mdwn b/hurd/running/debian/porting/gcc/c++.mdwn
new file mode 100644
index 00000000..1d64b9b5
--- /dev/null
+++ b/hurd/running/debian/porting/gcc/c++.mdwn
@@ -0,0 +1,39 @@
+[[meta copyright="Copyright © 2008 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]]."]]"""]]
+
+Modify the [[building/cross-compiling]] shell script to configure GCC for
+building GCC with C++ support when building its second (i.e., final) version.
+
+Compiling a most-trivial C++ program used to work with GCC 4.2 and 4.3 (and the
+resulting binaries would also work), but linking fails with GCC SVN trunk:
+
+ $ $TARGET-g++ -Wall a.cc -lpthread
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__multf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__fixunstfsi'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__subtf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__divtf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__copysigntf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__addtf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__lttf2'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__floatsitf'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__netf2'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__floatunsitf'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__eqtf2'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__fabstf2'
+ collect2: ld returned 1 exit status
+
+Whether this defect report also applies to a natively-build GCC from SVN trunk
+has not yet been checked.
+
+[[Thomas_Schwinge|tschwinge]] suspects the problem to be a configuration issue
+of a GCC helper library, whose configuration setup has changed after GCC 4.3.
+
+The need for `-lpthread` is another story. See the Debian glibc patches
+repository for details.
diff --git a/hurd/running/debian/porting/gcc/libmudflap.mdwn b/hurd/running/debian/porting/gcc/libmudflap.mdwn
new file mode 100644
index 00000000..2345828b
--- /dev/null
+++ b/hurd/running/debian/porting/gcc/libmudflap.mdwn
@@ -0,0 +1,72 @@
+[[meta copyright="Copyright © 2008 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]]."]]"""]]
+
+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/hurd/translator.mdwn b/hurd/translator.mdwn
index 1a987b09..d333da5a 100644
--- a/hurd/translator.mdwn
+++ b/hurd/translator.mdwn
@@ -42,6 +42,9 @@ See some [[examples]] about how to use translators.
Marcus Brinkmann has written a document about [[documentation/translators]].
+Here are some [[hints_about_debugging_translators|debugging/translator]]
+available.
+
# Existing Translators
diff --git a/hurd/translator/tmpfs.mdwn b/hurd/translator/tmpfs.mdwn
index 6d10c163..bb9ef269 100644
--- a/hurd/translator/tmpfs.mdwn
+++ b/hurd/translator/tmpfs.mdwn
@@ -18,5 +18,5 @@ It's not working correctly at the moment.
[[inline
pages="hurd/translator/tmpfs/*"
show=0
-actions=yes
-rootpage="hurd/translator/tmpfs" postformtext="Add a new item titled:"]]
+feeds=no
+actions=yes]]